我在 WebSphere Application Server 7 上部署了一个 Java EE 应用程序(实际上,它是一个 apache camel 应用程序)。
我的应用程序使用来自 Web 服务(从 WAS 中的 servlet 容器启动的线程)和 JMS 队列(不是 SI-BUS,而是 WebSphere MQ,如果重要的话)的服务请求。对于 JMS 侦听器,Camel(或者可能是底层的 Spring 框架)会启动自己的线程(或多或少似乎是简单的 java 线程)来处理 JMS 请求。
我还有一个附加到应用程序的事务数据库。所以,在春天,我定义了这样的东西来获取事务管理器(可能是在 JTA 中构建的 WebSphere)。
<tx:annotation-driven/>
所以我的问题是,当 Camel/JMS 在应用程序中触发事件时,我会收到这样的错误:
org.apache.openjpa.persistence.PersistenceException: TransactionManager not found in JNDI under name java:comp/websphere/ExtendedJTATransaction
似乎不是由容器本身启动的线程无法正确进行 JNDI 查找。有没有办法解决这个问题?