• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
RE: direct action restoring sessions from cookies problem (Ajax)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: direct action restoring sessions from cookies problem (Ajax)


  • Subject: RE: direct action restoring sessions from cookies problem (Ajax)
  • From: "Ruenagel, Frank" <email@hidden>
  • Date: Thu, 21 Jun 2007 09:13:34 +0200
  • Thread-topic: direct action restoring sessions from cookies problem (Ajax)

In tomcat-deployment-scenario we have encountered
similar problems, when the container's JSESSIONID cookie
is not sent by the request. This might happen,
eg. if a custom http-client is used.

In tomcat-deployment the wosid and
the Servlet-Container's JSESSIONID are not equal, although
they are mapped 1:1. Requests have to send both.

regards
Frank

> -----Original Message-----
> From: webobjects-dev-bounces+webobjects=email@hidden
> [mailto:webobjects-dev-bounces+webobjects=symposion.de@lists.a
> pple.com]O
> n Behalf Of Lachlan Deck
> Sent: Wednesday, June 20, 2007 8:10 AM
> To: WebObjects Dev Apple
> Subject: direct action restoring sessions from cookies problem (Ajax)
>
>
> Hi there,
>
> I'm seeing a weird thing where DirectAction's getSessionIDForRequest
> is being called (by the default request-reponse loop stuff) and is
> returning a valid sesionId but it actually doesn't attach a session
> to the current context.
>
> Any ideas why? (This is during an Ajax direct action request if
> that's of any interest).
>
> // here's a work-a-round, but I don't understand why the default
> mechanism wasn't working.
> public DirectAction( WORequest aRequest ) {
> 	super( aRequest );
> 	NSLog.debug.appendln( "<init hasSession>" +
> context().hasSession() );
> 	String sessionId = this.getSessionIDForRequest( request() );
> 	if ( sessionId != null ) {
> 		NSLog.debug.appendln( "<init restoreSession>" );
> 		Application.application().restoreSessionWithID(
> sessionId, context
> () );
> 	}
> }
>
> Thanks.
>
> ---- Session ----
> public Session() {
> 	super();
> 	setStoresIDsInURLs( false );
> 	setStoresIDsInCookies( true );
> }
> // btw Session extends ERXSession
>
> ---- DirecAction ----
> public String getSessionIDForRequest(WORequest aRequest) {
> 	String result = super.getSessionIDForRequest( aRequest );
> 	NSLog.debug.appendln( "getSessionIDForRequest:" + result );
> 	NSLog.debug.appendln( new Exception() );
> 	return super.getSessionIDForRequest( aRequest );
> }
> public WOActionResults ajaxUpdateAction() {
> 	NSLog.debug.appendln( "ajaxUpdateAction hasSession?" + context
> ().hasSession() );
> 	return pageWithName( AjaxShortlist.class.getName() );
> }
>
> ---- MyComponent ----
> public void appendToResponse( WOResponse aResponse, WOContext
> aContext ) {
> 	super.appendToResponse( aResponse, aContext );
> 	NSLog.debug.appendln( "hasSession? " + this.hasSession() );
> 	NSLog.debug.appendln( "Cookies: " +
> aContext.request().cookieValues
> () );
> }
>
> ---- CONSOLE OUTPUT ----
> Jun 20 16:00:31 MyApp[55397] (ERXNSLogLog4jBridge.java:44) DEBUG
> NSLog  - getSessionIDForRequest:bGCOTztdVZ0ZyNfmIUc4F0
> [2007-06-20 16:00:31 EST] <WorkerThread11> java.lang.Exception
> 	at
> my.app.DirectAction.getSessionIDForRequest(DirectAction.java:47)
> 	at
> com.webobjects.appserver.WOAction.initializeRequestSessionIDInContext
> (WOAction.java:74)
> 	at com.webobjects.appserver.WOAction.<init>(WOAction.java:24)
> 	at com.webobjects.appserver.WODirectAction.<init>
> (WODirectAction.java:78)
> 	at my.app.DirectAction.<init>(DirectAction.java:15)
> 	at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance
> (NativeConstructorAccessorImpl.java:39)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
> (DelegatingConstructorAccessorImpl.java:27)
> 	at
> java.lang.reflect.Constructor.newInstance(Constructor.java:494)
> 	at com.webobjects.foundation._NSUtilities.instantiateObject
> (_NSUtilities.java:575)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler.getAc
> tionInstan
> ce(WOActionRequestHandler.java:179)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler._hand
> leRequest(
> WOActionRequestHandler.java:229)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler.handl
> eRequest
> (WOActionRequestHandler.java:142)
> 	at er.extensions.ERXDirectActionRequestHandler.handleRequest
> (ERXDirectActionRequestHandler.java:82)
> 	at com.webobjects.appserver.WOApplication.dispatchRequest
> (WOApplication.java:1306)
> 	at
> er.extensions.ERXApplication.dispatchRequest(ERXApplication.java:
> 1041)
> 	at com.webobjects.appserver._private.WOWorkerThread.runOnce
> (WOWorkerThread.java:173)
> 	at com.webobjects.appserver._private.WOWorkerThread.run
> (WOWorkerThread.java:254)
> 	at java.lang.Thread.run(Thread.java:613)
>
> === begin work-around ===
> Jun 20 16:00:31 MyApp[55397] (ERXNSLogLog4jBridge.java:44) DEBUG
> NSLog  - <init hasSession>false
> Jun 20 16:00:31 MyApp[55397] (ERXNSLogLog4jBridge.java:44) DEBUG
> NSLog  - getSessionIDForRequest:bGCOTztdVZ0ZyNfmIUc4F0
> [2007-06-20 16:00:31 EST] <WorkerThread11> java.lang.Exception
> 	at
> my.app.DirectAction.getSessionIDForRequest(DirectAction.java:47)
> 	at my.app.DirectAction.<init>(DirectAction.java:17)
> 	at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance
> (NativeConstructorAccessorImpl.java:39)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
> (DelegatingConstructorAccessorImpl.java:27)
> 	at
> java.lang.reflect.Constructor.newInstance(Constructor.java:494)
> 	at com.webobjects.foundation._NSUtilities.instantiateObject
> (_NSUtilities.java:575)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler.getAc
> tionInstan
> ce(WOActionRequestHandler.java:179)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler._hand
> leRequest(
> WOActionRequestHandler.java:229)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler.handl
> eRequest
> (WOActionRequestHandler.java:142)
> 	at er.extensions.ERXDirectActionRequestHandler.handleRequest
> (ERXDirectActionRequestHandler.java:82)
> 	at com.webobjects.appserver.WOApplication.dispatchRequest
> (WOApplication.java:1306)
> 	at
> er.extensions.ERXApplication.dispatchRequest(ERXApplication.java:
> 1041)
> 	at com.webobjects.appserver._private.WOWorkerThread.runOnce
> (WOWorkerThread.java:173)
> 	at com.webobjects.appserver._private.WOWorkerThread.run
> (WOWorkerThread.java:254)
> 	at java.lang.Thread.run(Thread.java:613)
>
> Jun 20 16:00:31 MyApp[55397] (ERXNSLogLog4jBridge.java:44) DEBUG
> NSLog  - <init restoreSession>
> Jun 20 16:00:31 MyApp[55397] (ERXNSLogLog4jBridge.java:38) INFO
> NSLog  - restoreSession trace:
> [2007-06-20 16:00:31 EST] <WorkerThread11> java.lang.Exception
> 	at my.app.Application.restoreSessionWithID(Application.java:38)
> 	at my.app.DirectAction.<init>(DirectAction.java:20)
> 	at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance
> (NativeConstructorAccessorImpl.java:39)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
> (DelegatingConstructorAccessorImpl.java:27)
> 	at
> java.lang.reflect.Constructor.newInstance(Constructor.java:494)
> 	at com.webobjects.foundation._NSUtilities.instantiateObject
> (_NSUtilities.java:575)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler.getAc
> tionInstan
> ce(WOActionRequestHandler.java:179)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler._hand
> leRequest(
> WOActionRequestHandler.java:229)
> 	at
> com.webobjects.appserver._private.WOActionRequestHandler.handl
> eRequest
> (WOActionRequestHandler.java:142)
> 	at er.extensions.ERXDirectActionRequestHandler.handleRequest
> (ERXDirectActionRequestHandler.java:82)
> 	at com.webobjects.appserver.WOApplication.dispatchRequest
> (WOApplication.java:1306)
> 	at
> er.extensions.ERXApplication.dispatchRequest(ERXApplication.java:
> 1041)
> 	at com.webobjects.appserver._private.WOWorkerThread.runOnce
> (WOWorkerThread.java:173)
> 	at com.webobjects.appserver._private.WOWorkerThread.run
> (WOWorkerThread.java:254)
> 	at java.lang.Thread.run(Thread.java:613)
> === end work-around ===
> Jun 20 16:00:31 MyApp[55397] (ERXNSLogLog4jBridge.java:44) DEBUG
> NSLog  - ajaxUpdateAction hasSession? false
> Jun 20 16:00:31 MyApp[55397] (AjaxShortlist.java:30) DEBUG
> my.app.MyComponent  - hasSession? false
> Jun 20 16:00:31 MyApp[55397] (AjaxShortlist.java:31) DEBUG
> my.app.MyComponent  - Cookies: {wosid = ("bGCOTztdVZ0ZyNfmIUc4F0");
> woinst = ("-1"); }
>
> These last couple of lines show true with the work-around in place...
>
> with regards,
> --
>
> Lachlan Deck
>
>
>
>  _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (email@hidden)
> Help/Unsubscribe/Update your Subscription:
email@hidden

This email sent to email@hidden
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: direct action restoring sessions from cookies problem (Ajax)
      • From: Lachlan Deck <email@hidden>
References: 
 >direct action restoring sessions from cookies problem (Ajax) (From: Lachlan Deck <email@hidden>)

  • Prev by Date: Re: WO 5.3.3/Tiger/No template found for component
  • Next by Date: Re: direct action restoring sessions from cookies problem (Ajax)
  • Previous by thread: direct action restoring sessions from cookies problem (Ajax)
  • Next by thread: Re: direct action restoring sessions from cookies problem (Ajax)
  • Index(es):
    • Date
    • Thread