You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Tim Koop <ti...@timkoop.com> on 2011/05/11 19:01:01 UTC

SessionState problems with a String type

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
tim@timkoop.com <ma...@timkoop.com>
www.timkoop.com <http://www.timkoop.com>

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


Re: SessionState problems with a String type

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Wed, 29 Jun 2011 15:20:48 -0300, Josh Canfield <jo...@gmail.com>  
wrote:

> Ha! Good catch, and annoying.
> For anyone who hasn't addressed this, when I'm in apache fronted
> tomcat I use a rewrite rule in apache to make sure everything goes to
> the www. url...
> I suppose you could also do the same thing in a Tapestry request filter.

That's exactly how the old Tapestry URL rewriter API was implemented.

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

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


Re: SessionState problems with a String type

Posted by Josh Canfield <jo...@gmail.com>.
Ha! Good catch, and annoying.

For anyone who hasn't addressed this, when I'm in apache fronted
tomcat I use a rewrite rule in apache to make sure everything goes to
the www. url...

I suppose you could also do the same thing in a Tapestry request filter.

Josh

On Wed, Jun 29, 2011 at 9:35 AM, Tim Koop <ti...@timkoop.com> wrote:
> I'm replying to this somewhat old thread just to say that I have found the
> problem.
>
> The problem was that I had stored something as a SessionState Object (SSO),
> then I forwarded the user to another website to do some authentication which
> forwarded the user back to my site.  But when the user came back to me site,
> the SSO was null.  Correction:  it was /sometimes/ null.  Sometimes it
> worked fine.
>
> Why was that?  After much scratching of my head I found the answer, and it
> was a very simple answer.  The URL of the site I was originally on didn't
> have the "www." in front of it.  But when the authenticating site forwarded
> the user back to my site, it used the URL with "www." in front, thus causing
> it to be a different site with different cookies, thus a different session
> id, and thus different SSOs.
>
> Thank you to this great community for good suggestions.
>
>
> Tim Koop
> tim@timkoop.com <ma...@timkoop.com>
> www.timkoop.com <http://www.timkoop.com>
>
>
> On 11/05/2011 2:17 PM, Tim Koop wrote:
>>
>> 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
>> tim@timkoop.com <ma...@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<ti...@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
>>>> tim@timkoop.com<ma...@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<ti...@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
>>>>>> tim@timkoop.com<ma...@timkoop.com>
>>>>>> www.timkoop.com<http://www.timkoop.com>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>>>
>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

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


Re: SessionState problems with a String type

Posted by Tim Koop <ti...@timkoop.com>.
I'm replying to this somewhat old thread just to say that I have found 
the problem.

The problem was that I had stored something as a SessionState Object 
(SSO), then I forwarded the user to another website to do some 
authentication which forwarded the user back to my site.  But when the 
user came back to me site, the SSO was null.  Correction:  it was 
/sometimes/ null.  Sometimes it worked fine.

Why was that?  After much scratching of my head I found the answer, and 
it was a very simple answer.  The URL of the site I was originally on 
didn't have the "www." in front of it.  But when the authenticating site 
forwarded the user back to my site, it used the URL with "www." in 
front, thus causing it to be a different site with different cookies, 
thus a different session id, and thus different SSOs.

Thank you to this great community for good suggestions.


Tim Koop
tim@timkoop.com <ma...@timkoop.com>
www.timkoop.com <http://www.timkoop.com>


On 11/05/2011 2:17 PM, Tim Koop wrote:
> 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
> tim@timkoop.com <ma...@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<ti...@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
>>> tim@timkoop.com<ma...@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<ti...@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
>>>>> tim@timkoop.com<ma...@timkoop.com>
>>>>> www.timkoop.com<http://www.timkoop.com>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>

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


Re: SessionState problems with a String type

Posted by Tim Koop <ti...@timkoop.com>.
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
tim@timkoop.com <ma...@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<ti...@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
>> tim@timkoop.com<ma...@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<ti...@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
>>>> tim@timkoop.com<ma...@timkoop.com>
>>>> www.timkoop.com<http://www.timkoop.com>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

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


Re: SessionState problems with a String type

Posted by Josh Canfield <jo...@gmail.com>.
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 <ti...@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
> tim@timkoop.com <ma...@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<ti...@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
>>> tim@timkoop.com<ma...@timkoop.com>
>>> www.timkoop.com<http://www.timkoop.com>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

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


Re: SessionState problems with a String type

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Wed, 11 May 2011 15:35:15 -0300, Tim Koop <ti...@timkoop.com> wrote:

> I'm trying to authenticate on my website with OpenID, using Java code  
> from the openid4java library.
> After the user specifies his OpenID provider, the server (Tapestry) is  
> supposed to forward him to the appropriate web page (like Google) to get  
> authenticated, then it forwards the user back to my website.

Ah! Now it makes a lot of sense. :)

> This  works, except I am supposed to keep track of certain Discovery  
> Information (the org.openid4java.discovery.DiscoveryInformation object)  
> in the session.  It doesn't stick.  And neither does even a simple  
> String object. Maybe when the authenticating site forwards the user back  
> to my site, Tapestry forgets the session... Hang on.  I just got Josh's  
> email.

Josh's probably right. Do you have cookies enabled?

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

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


Re: SessionState problems with a String type

Posted by Tim Koop <ti...@timkoop.com>.
I'm trying to authenticate on my website with OpenID, using Java code 
from the openid4java library.

After the user specifies his OpenID provider, the server (Tapestry) is 
supposed to forward him to the appropriate web page (like Google) to get 
authenticated, then it forwards the user back to my website.  This 
works, except I am supposed to keep track of certain Discovery 
Information (the org.openid4java.discovery.DiscoveryInformation object) 
in the session.  It doesn't stick.  And neither does even a simple 
String object.

Maybe when the authenticating site forwards the user back to my site, 
Tapestry forgets the session... Hang on.  I just got Josh's email.

Tim Koop
tim@timkoop.com <ma...@timkoop.com>
www.timkoop.com <http://www.timkoop.com>

On 11/05/2011 1:25 PM, Thiago H. de Paula Figueiredo wrote:
> On Wed, 11 May 2011 15:17:42 -0300, Tim Koop <ti...@timkoop.com> wrote:
>
>> Thanks Josh (and Thiago).
>
> You're welcome!
>
>> 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.
>
> That's strange. I've never seen this kind of bug. Are you sure you 
> haven't any other @SessionState field with type String? If yes and 
> it's set to null somewhere, the bug is in your code.
>
>> 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?
>
> I don't think so. Why are you returning an URL object to redirect to a 
> page in your application? Return the page Class instance or one 
> instance of the page obtained through a field with @InjectPage.
>

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


Re: SessionState problems with a String type

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Wed, 11 May 2011 15:17:42 -0300, Tim Koop <ti...@timkoop.com> wrote:

> Thanks Josh (and Thiago).

You're welcome!

> 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.

That's strange. I've never seen this kind of bug. Are you sure you haven't  
any other @SessionState field with type String? If yes and it's set to  
null somewhere, the bug is in your code.

> 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?

I don't think so. Why are you returning an URL object to redirect to a  
page in your application? Return the page Class instance or one instance  
of the page obtained through a field with @InjectPage.

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

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


Re: SessionState problems with a String type

Posted by Tim Koop <ti...@timkoop.com>.
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
tim@timkoop.com <ma...@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<ti...@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
>> tim@timkoop.com<ma...@timkoop.com>
>> www.timkoop.com<http://www.timkoop.com>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

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


Re: SessionState problems with a String type

Posted by Josh Canfield <jo...@gmail.com>.
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 <ti...@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
> tim@timkoop.com <ma...@timkoop.com>
> www.timkoop.com <http://www.timkoop.com>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

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


Re: SessionState problems with a String type

Posted by "Thiago H. de Paula Figueiredo" <th...@gmail.com>.
On Wed, 11 May 2011 14:01:01 -0300, Tim Koop <ti...@timkoop.com> wrote:

> I'm having a little problem with even a simple SessionState String  
> object.

Try @SessionState(create = false). Better yet, create a class to represent  
your user session state and put this userColour field there, as a  
@SessionState object is the same for each field type with this annotation.

-- 
Thiago H. de Paula Figueiredo
Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,  
and instructor
Owner, Ars Machina Tecnologia da Informação Ltda.
http://www.arsmachina.com.br

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