Jboss WebSphere 7.0远程客户端回滚全局用户事务

Jboss WebSphere 7.0远程客户端回滚全局用户事务,jboss,transactions,ejb,websphere,rollback,Jboss,Transactions,Ejb,Websphere,Rollback,我观察到WebSphere 7.0.0.21的奇怪行为: 架构: 带有注释@Local、@远程接口和标记为@Required的事务方法的简单EJB bean 查找远程“jta/usertransaction”和事务EJB方法的独立命令行客户端。客户端代码启动用户事务,执行方法,然后尝试回滚它 预期行为:(我在Jboss上看到)回滚DB事务 观察到的行为:(在WAS 7.0.0.21上)提交DB事务 我看到客户端事务正在从状态\u NO\u transaction(6)更改为状态\u ACTIVE

我观察到WebSphere 7.0.0.21的奇怪行为:

架构:

  • 带有注释@Local、@远程接口和标记为@Required的事务方法的简单EJB bean

  • 查找远程“jta/usertransaction”和事务EJB方法的独立命令行客户端。客户端代码启动用户事务,执行方法,然后尝试回滚它

  • 预期行为:(我在Jboss上看到)回滚DB事务

    观察到的行为:(在WAS 7.0.0.21上)提交DB事务

    我看到客户端事务正在从状态\u NO\u transaction(6)更改为状态\u ACTIVE(0),然后在回滚后再次更改为状态\u NO\u transaction(6)

    我试着用谷歌搜索,但没有找到任何结果

    对这种情况有什么想法吗?我已经准备好将这个问题提交给IBM

    谢谢,

    更新:

    经过长时间的等待和与IBM支持部门的互动,我终于解决了问题:

  • IBMJRE没有问题
  • 对于Sun/Oracle JRE,需要对ORB进行额外配置,例如:
  • jndiProperties.put(“java.naming.corba.orb”,com.ibm.corba.iiop.orb.init((String[])null,orbProperties))


    WAS或AppClient JRE中的orb.properties必须作为“orbProperties”提供

    您的独立客户端使用哪个JVM?我猜您的客户端ORB没有配置为将事务上下文传播到服务器,因此EJB在服务器上自己的事务中被调用,该事务在EJB方法结束时提交。您可以通过将EJB方法更改为强制性来测试这一理论。客户机在Sun JVM上-它需要什么特定的客户端设置?我有WAS在客户端生成的存根-还需要什么。同样的代码在Jboss上传播事务。我将尝试测试强制选项-这很有趣。我不知道是否记录或支持使用非WAS Java进行事务、安全、WLM等,但WAS_HOME/Java/jre/lib/orb.properties列出了几个拦截器,包括用于传播事务上下文的拦截器。我不知道它在JBoss上如何工作,除非您的客户机JVM正在使用一个ORB,该ORB带有能够识别JBoss事务的拦截器。您是否在客户机端使用IBM上下文工厂?它们应该在客户端运行时jars上可用。更新:经过长时间的等待和与IBM支持人员的交互,我终于解决了问题:1。IBMJRE 2没有问题。对于Sun/Oracle JRE,它需要对ORB进行额外配置,例如
    jndiProperties.put(“java.naming.corba.ORB”,com.ibm.corba.iiop.ORB.init((String[])null,orbProperties))和orb.properties必须作为“orbProperties”提供