tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aadi Deshpande <mailingli...@clubmom-inc.com>
Subject Re: Cluster error when starting up web application
Date Thu, 26 Feb 2004 06:35:50 GMT
Upon further research, it seems that DeltaSession.setId() fires the 
sessionCreated events to registered listeners, but this happens before a 
session is declared valid ( i.e. setValid(true) has not been called ).

so when a  registered listener tries to utilize ( what it seems to 
believe is ) a newly created session, the setAttribute method throws the 
IllegalStateException..

Now I don't know too much about how the actual workings of the 
HttpSession should go, but in my opinion, the sessionCreated events 
should not be fired unless a valid session has been created.  which 
seems to imply that maybe setValid() should doing the firing...

However, that doesn't sit well with me since it doesn't make sense for a 
session to be truly valid unless it has a sessionId, which either
forces there to be an implict order between setId() and setValid() which 
is no good, requiring that either/or check to see if the other has been 
truly satisfied, and setting up some sort of implicit sequence coupling.

the alternative, as I see it, is move the tellNew() invocation to the 
DeltaManager ( it's declared public, so it's already exposed ).

I tried that, by patching up the TC5 sources and it seemed to resolve 
the issue.

Again, as I know little to nothing of how sessions should work and what 
other implications this refactoring may have, what should be my next 
course of action?

Should I contact the webwork people? Is this not correct use of sessions 
and session listeners?

Should I open up a bug and/or propose my patch?

Thanks in advance for reading and/or responding,

-a





Aadi Deshpande wrote:

> Hi,
>
> I just got Tomcat 5.0.19 and after setting up the new delta based 
> cluster manager, i get this during the startup my application :
>
> SEVERE: Session event listener threw exception
> java.lang.IllegalStateException: setAttribute: Session already 
> invalidated
>        at 
> org.apache.catalina.cluster.session.DeltaSession.setAttribute(DeltaSession.java:1306)

>
>        at 
> org.apache.catalina.cluster.session.DeltaSession.setAttribute(DeltaSession.java:1283)

>
>        at 
> org.apache.catalina.cluster.session.DeltaSessionFacade.setAttribute(DeltaSessionFacade.java:17

>
> 7)
>        at 
> com.opensymphony.webwork.lifecycle.SessionLifecycleListener.sessionCreated(SessionLifecycleLis

>
> tener.java:50)
>        at 
> org.apache.catalina.cluster.session.DeltaSession.tellNew(DeltaSession.java:459) 
>
>        at 
> org.apache.catalina.cluster.session.DeltaSession.setId(DeltaSession.java:431) 
>
>        at 
> org.apache.catalina.cluster.session.DeltaManager.createSession(DeltaManager.java:377)

>
>        at 
> org.apache.catalina.cluster.session.DeltaManager.messageReceived(DeltaManager.java:895)

>
>        at 
> org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(DeltaManager.java:794)

>
>        at 
> org.apache.catalina.cluster.tcp.SimpleTcpCluster.messageDataReceived(SimpleTcpCluster.java:561

>
> )
>        at 
> org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java:117) 
>
>        at 
> org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(TcpReplicationThread.java:17

>
> 6)
>        at 
> org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicationThread.java:114)

>
>
>
>
> As far as I can tell, it's happening when I request a page that has 
> the webwork2 RequestLifecycleFilter set for that url pattern.  The 
> doFilter function creates a HttpSession if none exists, which I assume 
> calls the SessionLifecycleListener.sessionCreated(), but for some 
> reason, it seems like the session is being invalidated prematurely..
>
>
> Here's the relevant piece from my web.xml :
>    <filter>
>        <filter-name>container</filter-name>
>        <filter-class>
>            
> com.opensymphony.webwork.lifecycle.RequestLifecycleFilter</filter-class>
>    </filter>
>    <filter-mapping>
>        <filter-name>container</filter-name>
>        <url-pattern>/*</url-pattern>
>        <!-- modify appropriately -->
>    </filter-mapping>
>    <listener>
>        <listener-class>
>            
> com.opensymphony.webwork.lifecycle.SessionLifecycleListener</listener-class> 
>
>    </listener>
>    <listener>
>        <listener-class>
>            
> com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener</listener-class>

>
>    </listener>
>
> and from my server.xml file, taken pretty much verbatim from the 
> default server.xml:
>
>    <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
>                 
> managerClassName="org.apache.catalina.cluster.session.DeltaManager"
>                 expireSessionsOnShutdown="false"
>                 useDirtyFlag="true">
>
>            <Membership
>                className="org.apache.catalina.cluster.mcast.McastService"
>                mcastAddr="224.64.64.128"
>                mcastPort="45600"
>                mcastFrequency="500"
>                mcastDropTime="3000"/>
>
>     <Receiver
>                
> className="org.apache.catalina.cluster.tcp.ReplicationListener"
>                tcpListenAddress="auto"
>                tcpListenPort="4060"
>                tcpSelectorTimeout="100"
>                tcpThreadCount="3"/>
>
>            <Sender
>                
> className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
>                replicationMode="pooled"/>
>
>
>         <Valve 
> className="org.apache.catalina.cluster.tcp.ReplicationValve"
>               filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
>
>        </Cluster>
>
> Anyone know what's going on? Or can provide some insight into what I 
> may be missing?
>
> Thanks for any info.
>
> -a
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org





---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message