it's somehow strange,because i said in the code that for my method i REQUIRE_NEW transaction...
| package bps.ejb; | | import javax.ejb.*; | import javax.persistence.*; | | import java.util.*; | import java.sql.*; | | | @Stateless | public class BpsProcessQueueBean implements BpsProcessQueue { | public static final String RemoteJNDIName = BpsProcessQueueBean.class.getSimpleName() + "/remote"; | | public static final String LocalJNDIName = BpsProcessQueueBean.class.getSimpleName() + "/local"; | | @PersistenceContext | private EntityManager em; | | @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) | private Process fetchProcess_real(int subsystem) { | | String fetchQuery = | "SELECT " + | " p " + | "FROM " + | " Process AS p " + | "WHERE " + | " p.state = 0 AND " + | " p.processQueue.id IN " + | " (SELECT " + | " pq.id " + | " FROM " + | " ProcessQueue AS pq " + | " WHERE " + | " (pq.subsystem.id = " + | " (SELECT " + | " s.id " + | " FROM " + | " Subsystem AS s " + | " WHERE " + | " (s.id = " + subsystem + ") AND " + | " (s.connected = true) " + | " ) " + | " ) AND " + | " (pq.connected = true) AND " + | " (pq.curActiveProcesses < pq.maxActiveProcesses) " + | " ) " + | "ORDER BY p.priority ASC, p.id ASC"; | | Query query = em.createQuery(fetchQuery); | //Query query = em.createNamedQuery("fetchQuery"); | //query.setParameter("subsystem", subsystem); | query.setMaxResults(1); | Process p = (Process) query.getResultList().get(0); | | ProcessQueue pq = p.getProcessQueue(); | | p.use(); | pq.incrementActive(); | | em.persist(p); | em.persist(pq); | | return p; | } | | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public Process fetchProcess(int subsystem) { | boolean failed = true; | | while (failed == true) { | failed = false; | try { | return fetchProcess_real(subsystem); | } catch (Exception e) { | e.printStackTrace(); | //failed = true; | return null; | } | } | return null; | } | | | @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) | private void releaseProcess_real(int id) { | Process p = em.find(Process.class,id); | | CompletedProcess cp = new CompletedProcess(p); | em.remove(p); | em.persist(cp); | } | | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public void releaseProcess(int id) { | releaseProcess_real(id); | } | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public void releaseProcess(Process p) { | releaseProcess_real(p.getId()); | } | | | @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) | private void decreaseQueue_real(int id) { | ProcessQueue pq = em.find(ProcessQueue.class, id); | pq.decrementActive(); | em.persist(pq); | } | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public void decreaseQueue(int id) { | boolean failed = true; | | while (failed == true) { | failed = false; | try { | decreaseQueue_real(id); | } catch (Exception e) { | //failed = true; | e.printStackTrace(); | } | } | } | | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public void completeProcess(int id) { | releaseProcess(id); | decreaseQueue(id); | } | | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public void completeProcess(Process p) { | completeProcess(p.getId()); | } | | @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) | public void doProcess(int subsystem) { | int i = 0; | Process p = null; | System.out.println("doProcess: before entering the while"); | while ((p = fetchProcess(subsystem)) != null) { | i++; | | // do some work | System.out.println("doProcess() - " + p); | | completeProcess(p.getId()); | } | System.out.println("doProcess: " + i + " process dequeued"); | } | | } | And the exception | 14:30:22,827 ERROR [STDERR] javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction | 14:30:22,828 ERROR [STDERR] at org.jboss.ejb3.entity.ManagedEntityManagerFactory.verifyInTx(ManagedEntityManagerFactory.java:150) | 14:30:22,828 ERROR [STDERR] at org.jboss.ejb3.entity.TransactionScopedEntityManager.persist(TransactionScopedEntityManager.java:181) | 14:30:22,828 ERROR [STDERR] at bps.ejb.BpsProcessQueueBean.fetchProcess_real(BpsProcessQueueBean.java:89) | 14:30:22,829 ERROR [STDERR] at bps.ejb.BpsProcessQueueBean.fetchProcess(BpsProcessQueueBean.java:102) | 14:30:22,829 ERROR [STDERR] at bps.ejb.BpsProcessQueueBean.doProcess(BpsProcessQueueBean.java:169) | 14:30:22,829 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | 14:30:22,830 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | 14:30:22,830 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | 14:30:22,830 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585) | 14:30:22,830 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112) | 14:30:22,830 ERROR [STDERR] at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) | 14:30:22,831 ERROR [STDERR] at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) | 14:30:22,831 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,831 ERROR [STDERR] at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) | 14:30:22,831 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,831 ERROR [STDERR] at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) | 14:30:22,831 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,831 ERROR [STDERR] at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:66) | 14:30:22,831 ERROR [STDERR] at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:102) | 14:30:22,832 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,833 ERROR [STDERR] at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) | 14:30:22,833 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,833 ERROR [STDERR] at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) | 14:30:22,833 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,833 ERROR [STDERR] at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) | 14:30:22,833 ERROR [STDERR] at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:106) | 14:30:22,834 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,834 ERROR [STDERR] at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46) | 14:30:22,834 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,834 ERROR [STDERR] at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) | 14:30:22,834 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,834 ERROR [STDERR] at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:278) | 14:30:22,834 ERROR [STDERR] at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:79) | 14:30:22,834 ERROR [STDERR] at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:70) | 14:30:22,835 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,835 ERROR [STDERR] at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:103) | 14:30:22,835 ERROR [STDERR] at $Proxy187.doProcess(Unknown Source) | 14:30:22,835 ERROR [STDERR] at bps.ejb.BpsAgent.onMessage(BpsAgent.java:34) | 14:30:22,835 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | 14:30:22,835 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | 14:30:22,835 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | 14:30:22,835 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:585) | 14:30:22,835 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112) | 14:30:22,836 ERROR [STDERR] at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) | 14:30:22,836 ERROR [STDERR] at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) | 14:30:22,836 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,836 ERROR [STDERR] at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) | 14:30:22,836 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,836 ERROR [STDERR] at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) | 14:30:22,836 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,836 ERROR [STDERR] at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126) | 14:30:22,837 ERROR [STDERR] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195) | 14:30:22,837 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,837 ERROR [STDERR] at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) | 14:30:22,837 ERROR [STDERR] at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | 14:30:22,837 ERROR [STDERR] at org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:245) | 14:30:22,837 ERROR [STDERR] at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:268) | 14:30:22,837 ERROR [STDERR] at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:138) | 14:30:22,837 ERROR [STDERR] at $Proxy182.onMessage(Unknown Source) | 14:30:22,837 ERROR [STDERR] at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178) | 14:30:22,838 ERROR [STDERR] at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:891) | 14:30:22,838 ERROR [STDERR] at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170) | 14:30:22,838 ERROR [STDERR] at org.jboss.mq.SpySession.run(SpySession.java:323) | 14:30:22,838 ERROR [STDERR] at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:237) | 14:30:22,838 ERROR [STDERR] at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204) | 14:30:22,838 ERROR [STDERR] at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275) | 14:30:22,838 ERROR [STDERR] at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) | 14:30:22,838 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595) | before i tried to state the whole session bean as transactionattribute.NOT_SUPPORTED, and state REQUIRES_NEW only on the methods i wanted. but i got same error so i tried to specify for each method. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4101766#4101766 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4101766 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user