I am using a stateful EJB to manage user sessions on a web app, and manage the 
state of an Employee entity EJB that contains the user's information. The user 
information is returned as a bean by calling the getUserBean() method of the 
stateful EJB, which first attempts to use the persistence manager refresh() 
method, then creates and returns a bean object with the updated data. 

This code was working in JBoss 4.0.4.GA, but I am now deploying to JBoss 
4.0.5.GA and it is now throwing a "java.lang.IllegalArgumentException: Entity 
not managed" error. The error is being caused by the call to the refresh() 
method of the EntityManager. Does anybody know why this code no longer runs in 
4.0.5.GA, or what needs to be changed to get it running in the latest version?

Here is the relevant code:

UserSessionFacadeBean.java - I have traced the error to the em.refresh() call 
bolded below:
@Stateful(name="UserSessionFacade")
  | public class UserSessionFacadeBean implements UserSessionFacadeRemote, 
  |                                               UserSessionFacadeLocal {
  |     @PersistenceContext(unitName="warehaus")
  |     protected EntityManager em;
  |     
  |     private Employee _user;
  |     private boolean _initialized = false;
  | 
  |     public UserSessionFacadeBean() {
  |     }
  |     
  |     public void initializeUser(String userId) {
  |         Collection<Employee> rsEmployee = 
  |             
em.createNamedQuery("findEmployeeByUserId").setParameter("userId", 
userId).getResultList();
  |         
  |         if (rsEmployee.size() == 1) {
  |             Iterator<Employee> iter = rsEmployee.iterator();
  |             if (iter.hasNext()) {
  |                 this._user = iter.next();
  |                 _initialized = true;
  |             }
  |         }
  |     }
  |     
  |     public UserBean getUserBean() {
  |         UserBean userBean = new UserBean();
  |         
  |         if (_initialized) {
  |             // Refresh the Employee entity
  |             em.refresh(_user);
  |         
  |             userBean.setEmployeeId(_user.getEmployeeId());
  |             userBean.setUserId(_user.getUserId());
  |             userBean.setFullName(_user.getFirstName() + " " + 
_user.getLastName());
  |             userBean.setFirstName(_user.getFirstName());
  |             userBean.setMiddleInitial(_user.getMiddleInitial());
  |             userBean.setLastName(_user.getLastName());
  |             userBean.setEmailAddress(_user.getEmailAddress());
  |             userBean.setAkoEmailAddress(_user.getAkoEmailAddress());
  |             userBean.setRecStatusFlag(_user.getRecStatusFlag());
  |             userBean.setRoles(_user.getRoles());
  |             userBean.setPermissions(_user.getPermissions());
  |             userBean.setApplications(getUserApplications());
  |         }
  |         
  |         return userBean;
  |     }
  | }

Employee.java
@Entity
  | @NamedQueries({
  |     @NamedQuery(name="findAllEmployee", 
  |                 query="select object(o) from Employee o"),
  |     @NamedQuery(name="findEmployeeByUserId", 
  |                 query="select object(o) from Employee o where 
upper(o.userId) = upper(:userId)")
  | })
  | @Table(name="EI")
  | public class Employee implements Serializable {
  |     // class code...
  | }

persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence";
  |    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  |    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";
  |    version="1.0">
  |    <persistence-unit name="warehaus" transaction-type="JTA">
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/warehausDS</jta-data-source>
  |       <class>mypackage.Employee</class>
  |       ... other class entries ...
  |       <properties>
  |          <property name="hibernate.dialect" 
value="org.hibernate.dialect.Oracle9Dialect"/>
  |       </properties>
  |    </persistence-unit>
  | </persistence>

And here is the stack trace on the error that is returned.
javax.ejb.EJBException: java.lang.IllegalArgumentException: Entity not managed
  |     at 
org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69)
  |     at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
  |     at 
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:83)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
  |     at 
org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:203)
  |     at 
org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98)
  |     at $Proxy102.getUserBean(Unknown Source)
  |     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at coldfusion.runtime.StructBean.invoke(StructBean.java:326)
  |     at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:1650)
  |     at 
cfusertest2ecfm474474188.runPage(C:\jboss-4.0.5.GA\server\default\.\deploy\cfusion.ear\cfusion.war\earltest\cftest\usertest.cfm:110)
  |     at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:147)
  |     at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:357)
  |     at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:62)
  |     at 
coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:107)
  |     at coldfusion.filter.PathFilter.invoke(PathFilter.java:80)
  |     at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:47)
  |     at 
coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
  |     at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:35)
  |     at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:43)
  |     at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
  |     at coldfusion.CfmServlet.service(CfmServlet.java:105)
  |     at 
coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |     at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |     at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  |     at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  |     at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |     at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |     at 
org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  |     at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |     at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |     at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  |     at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  |     at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |     at 
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |     at java.lang.Thread.run(Thread.java:595)
  | Caused by: java.lang.IllegalArgumentException: Entity not managed
  |     at 
org.hibernate.ejb.AbstractEntityManagerImpl.refresh(AbstractEntityManagerImpl.java:260)
  |     at 
org.jboss.ejb3.entity.TransactionScopedEntityManager.refresh(TransactionScopedEntityManager.java:193)
  |     at 
mil.army.arl.support.integration.earl.ejb.UserSessionFacadeBean.getUserBean(UserSessionFacadeBean.java:72)
  |     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
  |     at 
org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
  |     at 
org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:57)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at 
org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:46)
  |     at 
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |     at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
  |     ... 54 more

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4016691#4016691

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4016691
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to