The @InjectState is declared inside of a component, and the injected state
object is referenced by the html code for that component during the
rendering of the page, inside a @Any component.

Html for component:

<li jwcid="[EMAIL PROTECTED]" ... >
 <span onclick="prop:onClickJS" jwcid="@Any">
 </span>
</li>

Java for component:

@InjectState("playerInfo")
public abstract HashMap getPlayerInfo();

public String getOnClickJS() {
       return getSkinURL();
}

public String getSkinURL() {
       if (getPlayerInfo().contains("key"))
           return "...";
}

Once again this is happening only on 4.1.2 under Tomcat 5.5.  It works for
4.0 and 4.1.1 under Jetty and Tomcat.
The only other thing that might not be standard is the use of the
tapestry-prop library and the "prop:" syntax instead of "ognl:'.  But why
would it stop working in 4.1.2 but work in all previous versions of
Tapestry?

Here's the full stack trace:

Caused by: java.lang.IllegalStateException: Cannot create a session
after the response has been committed
        at org.apache.catalina.connector.Request.doGetSession(Request.java:2214)
        at org.apache.catalina.connector.Request.getSession(Request.java:2024)
        at 
org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:831)
        at 
org.apache.tapestry.web.ServletWebRequest.getSession(ServletWebRequest.java:82)
        at $WebRequest_112499919b5.getSession($WebRequest_112499919b5.java)
        at $WebRequest_11249991949.getSession($WebRequest_11249991949.java)
        at 
org.apache.tapestry.engine.state.SessionScopeManager.getSession(SessionScopeManager.java:50)
        at 
org.apache.tapestry.engine.state.SessionScopeManager.get(SessionScopeManager.java:65)
        at 
$StateObjectPersistenceManager_11249991ae4.get($StateObjectPersistenceManager_11249991ae4.java)
        at 
org.apache.tapestry.engine.state.StateObjectManagerImpl.get(StateObjectManagerImpl.java:51)
        at 
org.apache.tapestry.engine.state.ApplicationStateManagerImpl.get(ApplicationStateManagerImpl.java:60)
        at 
$ApplicationStateManager_11249991965.get($ApplicationStateManager_11249991965.java)
        at 
$ApplicationStateManager_11249991966.get($ApplicationStateManager_11249991966.java)
        at $SkinTiles_9.getPlayerInfo($SkinTiles_9.java)
        at com.webapp.skins.SkinTiles.getSkinURL(SkinTiles.java:172)
        at com.webapp.skins.SkinTiles.getOnClickJS(SkinTiles.java:378)
        at 
$$SkinTiles_9$access_onClickJS_11249991ab2.readProperty($$SkinTiles_9$access_onClickJS_11249991ab2.java)
        at 
com.javaforge.tapestry.prop.PropertyAccessorBinding.getObject(PropertyAccessorBinding.java:59)
        at 
org.apache.tapestry.AbstractComponent.renderInformalParameters(AbstractComponent.java:279)
        at org.apache.tapestry.components.Any.renderComponent(Any.java:42)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:526)
        at org.apache.tapestry.components.Any.renderComponent(Any.java:47)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:526)
        at 
org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:181)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:526)
        at org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:96)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:526)
        at org.apache.tapestry.components.Any.renderComponent(Any.java:47)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
        at com.webapp.skins.SkinTiles.renderComponent(SkinTiles.java:147)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:526)
        at 
org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:526)
        at org.apache.tapestry.html.Body.renderComponent(Body.java:38)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
        at 
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
        at 
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:713)
        at 
org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:182)
        at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:237)
        at 
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)


Joe




On 5/1/07, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:

I'm not sure, there seems to be some missing information. I find it hard
to
believe that having a single @InjectState method alone would cause that
error.

Where are you messing with the data that was injected?

On 5/1/07, Joe Chen <[EMAIL PROTECTED]> wrote:
>
> Some more information about this issue - I downgraded to 4.1.1 and the
> problem went away, so it seems like this is an issue that was introduced
> in
> 4.1.2.
>
> Should I file a bug on this?
>
> Joe
>
> On 5/1/07, Joe Chen <[EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >  I'm seeing some strange errors with the @InjectState after upgrading
> from
> > T4.0 to T4.1.2. The problem shows up only in Tomcat 5.5.
> >
> > In our code, we have a component that declares:
> >
> > @InjectState("playerInfo")
> > public abstract HashMap getPlayerInfo();
> >
> > The code was working fine for months under T4.0.x.  Recently we
decided
> to
> > migrate to T4.1.2, and it works under Jetty (using Jetty Eclipse
> plugin).
> > However, as soon as I deploy to Tomcat 5.5 and try to run the
> application,
> > I get the following error:
> >
> > Caused by: java.lang.IllegalStateException: Cannot create a session
> after the response has been committed
> >       at
> > org.apache.catalina.connector.Request.doGetSession(Request.java:2214)
> >       at org.apache.catalina.connector.Request.getSession(Request.java
> :2024)
> >       at org.apache.catalina.connector.RequestFacade.getSession(
> RequestFacade.java
> > :831)
> >       at org.apache.tapestry.web.ServletWebRequest.getSession(
> ServletWebRequest.java:82)
> >       at
> $WebRequest_1124940e33a.getSession($WebRequest_1124940e33a.java)
> >       at
> $WebRequest_1124940e2ce.getSession($WebRequest_1124940e2ce.java)
> >
> >       at
org.apache.tapestry.engine.state.SessionScopeManager.getSession
> (SessionScopeManager.java:50)
> >       at org.apache.tapestry.engine.state.SessionScopeManager.get(
> SessionScopeManager.java:65)
> >       at
>
$StateObjectPersistenceManager_1124940e469.get($StateObjectPersistenceManager_1124940e469.java)
> >
> >       at org.apache.tapestry.engine.state.StateObjectManagerImpl.get(
> StateObjectManagerImpl.java:51)
> >       at
> org.apache.tapestry.engine.state.ApplicationStateManagerImpl.get(
> ApplicationStateManagerImpl.java:60)
> >       at
>
$ApplicationStateManager_1124940e2ea.get($ApplicationStateManager_1124940e2ea.java)
> >
> >       at
>
$ApplicationStateManager_1124940e2eb.get($ApplicationStateManager_1124940e2eb.java)
> >       at $SkinTiles_9.getPlayerInfo($SkinTiles_9.java)
> >
> >
> > Did the InjectState code somehow change between 4.0.x and 4.1 ?  Any
> ideas
> > on how to fix the problem?
> >
> > Thanks,
> > Joe
> >
>



--
Jesse Kuhnert
Tapestry/Dojo team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

Reply via email to