2011-08-05 4 views
0

rarファイルをjbossの配備フォルダに配置して展開します。7.その後、warファイルを配備します。JCA ManagedConnectionFactoryのライフサイクルを管理する方法は?

このコネクタは、standalone.xml内の定義によってJNDIロケーションにバインドされています。

デプロイされると、createConnectionFactory(ConnectionManager cm)がデフォルトで実行されます。 。

は、私はクラスローダ

クラスローダのContextClassloader =にThread.currentThread()getContextClassLoader()の助けを借りて、この方法では、いくつかのハウスキーピングを行います。

私はContextClassloaderとがnullの展開時に

問題が最初にあるEJBを使用して、アダプタにアクセスしようとすると、createConnectionFactory(のConnectionManagerセンチ)メソッドが再び実行されます。その後、ejbから呼び出されたときに値を持ちます。効果的に私のハウスキーピングは失敗します。

質問:

  1. createConnectionFactory(のConnectionManager cm)を> =、展開時に実行され、これは正しい動作ですか?

  2. 配備時にこのメソッドを実行しないようにironJacamar/jbossを設定するにはどうすればよいですか?

その他の情報:JBossのAS7、NetBeansの7、Jdk1.7

編集: 上記の動作が正しいです。私が使用しているアダプタでは、展開時に使用したクラスローダを実行時に使用したものと同じにする必要があります。デフォルトではThread.currentThread()。getContextClassLoader()を使用します。私はClassLoaderを使用するように変更しましたcl = MyManagedConnectionFactory.class.getClassLoader();

答えて

1

createConnectionFactory(ConnectionManager cm)はデプロイ時に実行されます。>これは適切な動作ですか?

あなたはコンテナが作成され、JNDIネームスペースでConnectionFactoryの定義バインドとしてのConnectionFactoryの定義は、その後、私は、このメソッドが呼び出さ見ることを期待している場合 - あなたがすることを示しているのConnectionManagerを取ってコールを取得しているという事実をこれは管理シナリオで実行されています。

JCA仕様の第6章では、リソースアダプタのこの領域について詳細に説明しています。したがって、確定的な回答があると思います。編集:第17章も関連性が高いでしょう。

+0

はい、あなたは正しいです。私が使用しているアダプタでは、展開時に使用したクラスローダを実行時に使用したものと同じにする必要があります。デフォルトではThread.currentThread()。getContextClassLoader()を使用します。私はそれを使用するように変更しました ClassLoader cl = MyManagedConnectionFactory.class.getClassLoader(); –

関連する問題