-
1. Re: Lazyload configuration?
gavin.king Sep 30, 2005 11:17 AM (in response to lcoetzee)Are you within the scope of the same conversation that originally loaded the object?
Are you using a Seam-managed persistence context (ie. @In EntityManager em)? -
2. Re: Lazyload configuration?
lcoetzee Sep 30, 2005 11:24 AM (in response to lcoetzee)1. Yes (or rather I think so, quite a steep learning curve thus far ;-)
2. No. I am using the following :@PersistenceContext(unitName = "TrySeam1") private EntityManager em;
If I use the @In EntityManager em, how do I specify the correct PersistenceContext ?
L -
3. Re: Lazyload configuration?
lcoetzee Sep 30, 2005 12:33 PM (in response to lcoetzee)Hi all,
I have reconfigured my web.xml to be the following:<context-param> <param-name> org.jboss.seam.init.managedPersistenceContexts </param-name> <param-value>TrySeam1</param-value> </context-param> <context-param> <param-name>TrySeam1.persistenceUnitName</param-name> <param-value> java:/EntityManagerFactories/trySeamEM </param-value> </context-param> <context-param> <!-- is this needed ?? --> <param-name>org.jboss.seam.managedPersistenceContexts</param-name> <param-value>TrySeam1</param-value> </context-param>
And in my Stateful bean I am trying to inject the EntityManager as follows:@In(create=true) EntityManager TrySeam1;
Unfortunately I am still missing something... I get the followingDEBUG [org.jboss.seam.Component] seam component not found: TrySeam1
.
which is later followed by plenty of exceptions e.g.org.jboss.seam.RequiredException: In attribute requires value for component: TrySeam1
Any suggestions ?
Thanks
Louis -
4. Re: Lazyload configuration?
gavin.king Sep 30, 2005 6:40 PM (in response to lcoetzee)It should be org.jboss.seam.core.init.managedPersistenceContexts
-
5. Re: Lazyload configuration?
gavin.king Sep 30, 2005 6:49 PM (in response to lcoetzee)OK, my fault, this is wrong in about 12 places in the docs :-(
I suck. -
6. Re: Lazyload configuration?
lcoetzee Oct 1, 2005 2:56 AM (in response to lcoetzee)Excellent ! Works like a charm.
One interesting thing though:
I had to remove the context-param containg the EntityManagerFactories stuff. Only leaving the context-param containing the org.jboss.seam.core.init.managedPersistenceContexts in the web.xml.
Thanks for all the inputs.
Louis -
7. Re: Lazyload configuration?
rdewell Oct 3, 2005 8:50 PM (in response to lcoetzee)Hi Louis,
If you get a minute, could post the configuration you finally got to work... i.e. your context params? You mentioned something about removing the one about factories?
To anyone else:
I think I followed everything here, and changed it from the docs to "core". I still can't get seam managed persistence to work though. My latest error is:
"No conversation context active"
Actually, I get this error A LOT while working with Seam. It really doesn't like it when I use components marked as CONVERSATION that are not in some expected JSF phase. For example, I do a lot of custom stuff in ViewHandler's... and any CONVERSATION beans are basically useless there, throwing the above error. Anything that could be done to remove this limitation in future releases would be great. Or, if I knew how to programmatically start my own conversation, that might work too.
Ryan -
8. Re: Lazyload configuration?
rdewell Oct 3, 2005 9:17 PM (in response to lcoetzee)I made some headway. It seems to be configuring it now:
18:05:42,522 INFO [Component:?] Component: bright, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.ManagedPersistenceContext
I also tried moving some of my stuff out of createView in my ViewHandler to afterPhase of RESTORE_VIEW. This appears to solve the "no conversation active" problem. But, a new problem presents itself AFTER the page fully renders.. presumably in some kind of clean up phase:
18:12:52,154 ERROR [SeamExceptionFilter:?] could not destroy contexts
java.lang.IllegalStateException: No active session context
at org.jboss.seam.Seam.isSessionInvalid(Unknown Source)
at org.jboss.seam.contexts.Lifecycle.endRequest(Unknown Source)
........
java.lang.IllegalStateException: EntityManager is closed
at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:27)
At this point I'm just going to ditch the seam managed PersistenceContext's. Evidentally I'm using this in a way that was not intended.
Ryan -
9. Re: Lazyload configuration?
gavin.king Oct 4, 2005 2:33 AM (in response to lcoetzee)"rdewell" wrote:
"No conversation context active"
Actually, I get this error A LOT while working with Seam. It really doesn't like it when I use components marked as CONVERSATION that are not in some expected JSF phase. For example, I do a lot of custom stuff in ViewHandler's... and any CONVERSATION beans are basically useless there, throwing the above error. Anything that could be done to remove this limitation in future releases would be great. Or, if I knew how to programmatically start my own conversation, that might work too.Ryan
See this thread:
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=70250&postdays=0&postorder=asc&start=0
Basically, you should not access the model (at least not conversational components) until after the Restore View phase. -
10. Re: Lazyload configuration?
gavin.king Oct 4, 2005 2:39 AM (in response to lcoetzee)"rdewell" wrote:
But, a new problem presents itself AFTER the page fully renders.. presumably in some kind of clean up phase:
18:12:52,154 ERROR [SeamExceptionFilter:?] could not destroy contexts
java.lang.IllegalStateException: No active session context
at org.jboss.seam.Seam.isSessionInvalid(Unknown Source)
at org.jboss.seam.contexts.Lifecycle.endRequest(Unknown Source)
........
java.lang.IllegalStateException: EntityManager is closed
at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:27)
(1) Are you calling EntityManager.close() manually? If so, don't. It's a managed EM.
(2) Have you got a similar problem to this thread:
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=69910&start=0
(3) Show your debug-level Seam log. -
11. Re: Lazyload configuration?
lcoetzee Oct 4, 2005 2:46 AM (in response to lcoetzee)Hi all,
for completeness the appropriate snippets:
In faces-config.xml<lifecycle> <phase-listener> org.jboss.seam.jsf.SeamExtendedManagedPersistencePhaseListener </phase-listener> </lifecycle>
in web.xml<context-param> <param-name> org.jboss.seam.core.init.managedPersistenceContexts </param-name> <param-value> trySeam1Entity </param-value> </context-param>
In my LeagueManagementAction.java (selected snippets)
@Stateful
@Name("leaguemanagement")
@Scope(ScopeType.CONVERSATION)
@Conversational(ifNotBegunOutcome="fail")
@Interceptor(SeamInterceptor.class)
public class LeagueManagementAction implements LeagueManagement,Serializable {
@In(create=true) EntityManager trySeam1Entity;
.
.
. @Begin
public String findAllTeams(){
allTeams = trySeam1Entity.createQuery("from.csir.league.seam.Team").getResultList();
logger.info("Retrieved " + allTeams.size() + " teams");
return "success";
}
.
.
.
@End
public String cancel() {
logger.info("Suppose to end the conversation now");
return "finished";
}
}
Hope it helps.
Louis