[jboss-user] [EJB/JBoss] - transaction problem

Sukar1205 do-not-reply at jboss.com
Fri Sep 28 08:58:24 EDT 2007


I am testing a session bean class.
and when I run my client .. I keep getting this exception


  | xception in thread "main" javax.ejb.EJBTransactionRolledbackException: EntityManager must be access within a transaction
  |         at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:87)
  |         at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
  |         at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)
  |         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.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor
  | .java:62)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.jav
  | a:77)
  |         at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationIntercepto
  | r.java:106)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:1
  | 06)
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  |         at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:278)
  |         at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
  |         at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandl
  | er.java:82)
  |         at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:734)
  |         at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:560)
  | 
  |         at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:369)
  |         at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:165)
  | Caused by: javax.persistence.TransactionRequiredException: EntityManager must be access within a tra
  | nsaction
  |         at org.jboss.ejb3.entity.ManagedEntityManagerFactory.verifyInTx(ManagedEntityManagerFactory.
  | java:150)
  | 
  | 

this is my client class... all I want to do is add an object in the table

  | public class KBClient {
  |     
  |     public static void main(String[] args) {
  |         
  |         KBClient c = new KBClient();
  |         ClassificationRemote r = c.lookupNewClassificationBean();
  |         KnowledgeBase first = new KnowledgeBase();
  |         first.setKnowledgeID(200);
  |         first.setKnowledgeName("AmerDemo");
  |         first.setKnowledgeCategory("Classification");
  |         first.setProjectID(new Project(88));
  |         first.setDeleted(0);
  |         r.addKnowledgeBase(first); //Exception occurs
  |     }
  | 
  |     private ClassificationRemote lookupNewClassificationBean() {
  |         try {
  |             Hashtable props = new Hashtable();
  |             props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
  |             props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
  |             props.put("java.naming.provider.url", "localhost");
  |             Context c = new InitialContext(props);
  |             return (ClassificationRemote) c.lookup("ClassificationBeanFinal/remote");
  |         }
  |         catch(NamingException ne) {
  |             Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
  |             throw new RuntimeException(ne);
  |         }
  |     }
  | }
  | 

This is the function in the session bean


  |  @PersistenceContext private EntityManager em;
  | 
  |     public void addKnowledgeBase(KnowledgeBase kb){
  |         System.out.println("YAAAHOOOOOOO");
  |         em.persist(kb);
  |     }
  | 

a little bit of help would be appreicated.
Thanks


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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4089677



More information about the jboss-user mailing list