Well, I just tried checking the session id like this, and it is in fact the same after coming back. And the SessionState objects started working too!

So then I took out this session id code, and the SessionState objects are still working.

So now it's all working fine, and I am left scratching my head wondering why.

Thank you both for your ideas. Maybe something fixed it, but I don't know what.


Tim Koop
t...@timkoop.com <mailto:t...@timkoop.com>
www.timkoop.com <http://www.timkoop.com>

On 11/05/2011 1:33 PM, Josh Canfield wrote:
Are you sure you're getting the same session when you come back to the
page? try dumping the session id.


     @Inject
     private HttpServletRequest request;

     void onActivate() {
         final HttpSession session = request.getSession(false);
         log.debug(session == null ? "Null session" : ("Session Id: " +
session.getId()));
     }

Josh

On Wed, May 11, 2011 at 11:17 AM, Tim Koop<t...@timkoop.com>  wrote:
Thanks Josh (and Thiago).

I added (create = false), and this certainly got rid of the error message.

However, my session object is still either not getting set correctly (even
though I clearly visit the page where it gets set, and I even write a
message to the log saying I was there), or it isn't being retrieved
correctly, because it is null when I want to read it.

My only thought is this:  On the page where I set the session object, that
page returns a java.net.URL object, redirecting the browser to another page.
  Perhaps this is preventing the session object from being stored correctly?

And no, I don't plan to actually use a String as a SessionState Object.  I'm
just testing with it.

Thanks.

Tim Koop
t...@timkoop.com<mailto:t...@timkoop.com>
www.timkoop.com<http://www.timkoop.com>

On 11/05/2011 12:39 PM, Josh Canfield wrote:

http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/annotations/SessionState.html

Specifically:

public abstract boolean create
If true (the default), then referencing an field marked with the
annotation will create the SSO. If false, then accessing the field
will not create the SSO, it will only allow access to it if it already
exists.
Default:
true


This thread might be helpful.

http://tapestry.1045711.n5.nabble.com/SessionState-for-simple-types-td2839381.html
or this one
http://tapestry.1045711.n5.nabble.com/SessionState-error-td2432233.html


Josh

On Wed, May 11, 2011 at 10:01 AM, Tim Koop<t...@timkoop.com>    wrote:
I'm having a little problem with even a simple SessionState String
object.

On one page I have this:

    @SessionState
    private String userColour;
    ...
    userColour = "red";


Then on a subsequent page I have this:

    @SessionState
    private String userColour;
    ...
    System.out.println("colour is " + userColour);


But instead of printing "red", the page throws the following error.  It
looks to me like it is trying to recreate the String object from a fancy
constructor.  But it isn't supposed to recreate the object, is it?  Isn't
is
supposed to store the object in memory just the way it is without
recreating
it with a constructor?


  An unexpected application exception has occurred.

   * org.apache.tapestry5.runtime.ComponentEventException
     Error invoking constructor java.lang.String(byte[], int, int, int)
     (at String.java:337) (for service 'ApplicationStateManager'): No
     service implements the interface [B.

     context

     eventType
         activate

   * org.apache.tapestry5.ioc.internal.OperationException
     No service implements the interface [B.

     trace
             o Triggering event 'activate' on login/OpenId
             o Instantiating instance of SSO class java.lang.String
             o Determining injection value for parameter #1 (byte[])
             o Resolving object of type byte[] using MasterObjectProvider

   * java.lang.RuntimeException
     No service implements the interface [B.

     Hide uninteresting stack frames Stack trace
             o

org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:665)

             o

org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:45)

             o

org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:56)

             o

org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)

             o

org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)

             o

org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057)

             o

org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:41)

             o

org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:806)

             o

org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:50)

             o

org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:233)

             o

org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:60)

             o

org.apache.tapestry5.ioc.internal.util.InternalUtils$2.invoke(InternalUtils.java:273)

             o

org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)

             o

org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)

             o

org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057)

             o

org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:277)

             o

org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParametersForConstructor(InternalUtils.java:248)

             o

org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:56)

             o

org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$4.invoke(ServiceResourcesImpl.java:160)

             o

org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)

             o

org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)

             o

org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057)

             o

org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.autobuild(ServiceResourcesImpl.java:146)

             o

org.apache.tapestry5.internal.services.ApplicationStateManagerImpl$1.create(ApplicationStateManagerImpl.java:104)

             o

org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.getOrCreate(SessionApplicationStatePersistenceStrategy.java:57)

             o

org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.get(SessionApplicationStatePersistenceStrategy.java:44)

             o

org.apache.tapestry5.internal.services.ApplicationStateManagerImpl$ApplicationStateAdapter.getOrCreate(ApplicationStateManagerImpl.java:50)

             o

org.apache.tapestry5.internal.services.ApplicationStateManagerImpl.get(ApplicationStateManagerImpl.java:133)

             o

org.apache.tapestry5.internal.transform.ApplicationStateWorker$1.get(ApplicationStateWorker.java:91)




--
Tim Koop
t...@timkoop.com<mailto:t...@timkoop.com>
www.timkoop.com<http://www.timkoop.com>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to