andy wix wrote:
I am working at a place that doesn't use session state for their web apps.
The reason given is that they have 2 physical servers and 2 Oracle Application Servers running on each of these machines for failover. From the little I know about clustering, I thought that if everything in the session implements Serializable then session state is tranparently valid accross requests - even if you end up on another jvm.

Has anyone else ever heard of this restriction - I can see problems e.g., can't use Struts tokens to defeat the usual refresh problems.

Sharing sessions between containers ('session clustering') is not a standard feature -- i.e. the Servlet spec neither requires this capability nor specifies how it should be impelemnted. However, most modern contains do support session clustering, in their own proprietary way. For example, Tomcat supports session clustering via shared disk, JDBC datastore, etc.

I don't know what session clustering abilities Oracle Application Server has but it can probably be configured to do this. Bear in mind that there are performance tradeoffs to consider as well as opperational impact -- for example, if you cluster sessions via shared disk, you now need to make your shared disk array redundant as well.

If you can implement your application without relying on sessions at all, your life will be simpler ;-) If you do need to implement session clustering, consider using host affinity as an alternative. With host affinity, the load balancer is configured to share sessions between the servers equally, but allways route requests for a particular session to the same server. That saves you the overhead of session clustering, at the cost that if one of the application servers goes down all users whose sessions were housed there will loose their session and have to log in again on the other server.

L.


More immediately, I have a problem with a typical scenario. My normal approach is: I have a 'preload' action that gets an ArrayList of data from the db and sets this in the session.
Then forward to the jsp that displays this stuff.
This page has something like:

<c:forEach var="wrap" items="${Assignments}" varStatus="status">
<TR>
 <TD><c:out value="${status.index+1}"/></TD>
 <TD>
   <c:url var="viewApp" value="/viewNode.do">
     <c:param name="indexPos" value="${status.index}" />
   </c:url>
         <html:link href="${viewApp}">
           <c:out value="${wrap.applicationVO.applicationName}"/>
         </html:link>
 </TD>

This gives me an index of the link that was clicked and in the next action I simply look this value up from the ArrayList in the session.

Does anyone know how this functionality could be achieved without using the session?

Assuming you can rebuild the list at any time, you can use request scope instead of session scope and rebuild the list at the start of each action.

L.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to