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

Reply via email to