WebSphere Application Server 7 に Java EE アプリケーション (実際には apache camel アプリケーション) をデプロイしています。
私のアプリケーションは、Web サービス (WAS のサーブレット コンテナから開始されたスレッド) および JMS キュー (SI-BUS ではなく、重要な場合は WebSphere MQ) からのサービス要求を消費します。JMS リスナーの場合、Camel (またはおそらく下層の Spring フレームワーク) が独自のスレッド (多かれ少なかれ単純な Java スレッドのように見えます) を開始して、JMS リクエストを処理します。
また、アプリケーションに接続されたトランザクション データベースもあります。そのため、春には、トランザクションマネージャーを取得するためにこのようなものを定義しました (WebSphere はおそらく JTA に組み込まれています)。
<tx:annotation-driven/>
したがって、私の問題は、Camel/JMS がアプリケーションでイベントをトリガーしているときに、次のようなエラーが発生することです。
org.apache.openjpa.persistence.PersistenceException: TransactionManager not found in JNDI under name java:comp/websphere/ExtendedJTATransaction
コンテナー自体によって開始されていないスレッドは、JNDI ルックアップを正しく実行できないようです。この問題を回避する方法はありますか?