使用BMP好象能解决这个问题就是一个EJB不要Container来管理事务

解决方案 »

  1.   

    方法a是SPRING框架中EJB容器管理的方法,b是我编写的一个类似工具类的方法内容基本就是:
            Context initial = new InitialContext(properties);
            Object objref = initial.lookup(jndiref);
            MyBeanHome cshome= (MyBeanHome)obj;
            MyBean cs= cshome.create();
    String retXML=cs.doMethod(para);但是当我运行到cshome.create();时会抛出如下异常:
    org.springframework.remoting.RemoteAccessException: Cannot access remote service [myManager]; nested exception is javax.transaction.TransactionRolledbackException: Exception while commiting Tx : Name=[EJB myManagerrBean.a(para)],Xid=BEA1-002E52F17C577F28EDB9(7208269),Status=Rolled back. [Reason=javax.transaction.SystemException: Commit can be issued only when there are no requests awaiting responses. Currently there is one such request],numRepliesOwedMe=1,numRepliesOwedOthers=0,seconds since begin=4,seconds left=30,XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=rolledback,assigned=myserver),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@110f067,re-Registered = false),SCInfo[mydomain+myserver]=(state=rolledback),properties=({weblogic.transaction.name=[EJB myManagerrBean.a(para)], weblogic.jdbc=t3://192.162.125.5:80}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=myserver+192.162.125.5:80+mydomain+t3+, XAResources={},NonXAResources={})],CoordinatorURL=myserver+192.162.125.5:80+mydomain+t3+): javax.transaction.SystemException: Commit can be issued only when there are no requests awaiting responses. Currently there is one such request
    at weblogic.transaction.internal.TransactionImpl.abort(TransactionImpl.java:1041)
    at weblogic.transaction.internal.TransactionImpl.enforceCheckedTransaction(TransactionImpl.java:1621)
    at weblogic.transaction.internal.TransactionImpl.checkIfCommitPossible(TransactionImpl.java:1599)
    at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:268)请问该如何解决啊???
      

  2.   

    还是不要嵌套调用EJB,将a,b放在一个层次上调用把。
    也就是先调用完a再调用b
      

  3.   

    EJB用的不多,感觉这种嵌套调用有点怪比较混乱的说。lz看看换一种方式处理吧。