[
https://issues.jboss.org/browse/SEAMSERVLET-35?page=com.atlassian.jira.pl...
]
Ales Justin commented on SEAMSERVLET-35:
----------------------------------------
OK, Marko (co-worker) just found the actual problem.
The session is just created, but *not* yet stored in Request/StandardManager.
Some code somewhere needs to temp store "created" session, not to go into loop.
We just need to find the right place for this temp storage, probably in Weld, to avoid all
similar issues.
Calling session-scoped components from session initialized observer
goes into infinite loop
-------------------------------------------------------------------------------------------
Key: SEAMSERVLET-35
URL:
https://issues.jboss.org/browse/SEAMSERVLET-35
Project: Seam Servlet
Issue Type: Bug
Components: Event Bridge
Affects Versions: 3.0.0.CR3
Reporter: Nicklas Karlsson
Given a session scoped component
{code}
@SessionScoped
public class Pinger implements Serializable
{
public void ping()
{
};
}
{code}
and a session initialized observer calling it
{code}
public class Observer
{
@Inject
Pinger pinger;
public void newSession(@Observes @Initialized HttpSession s)
{
pinger.ping();
}
}
{code}
We go off into an infinite loop. Since Pinger doesn't exist, it is created and placed
in the session scoped beanstore, which creates a session and fires off the observer.
I'm not sure why the session isn't considered created at this point. This is
bordering on feature since I think the result would be the same if servlet listeners would
be used. Perhaps this could be worked around int the event bridge somehow so that the
firing would be prevented if we're already handling the session created event...
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira