0

自作のJCA1.6インバウンドリソースアダプタ(RA)を設定したい。私の大きな問題は、RAが、RAを使用するアプリケーションに存在するいくつかの(動的な)構成データにアクセスする必要があることです。これは、JCAのアイデア全体の元のアイデアに反していることがわかりましたが、残念ながら、このデザインを希望するほど迅速に変更することはできません。RAに到達するために必要なデータは

  • リッスンするはずのポート、
  • アプリケーション全体に使用されるライセンス(RAが提供する機能には追加のライセンスが必要です)
  • データベースに保存されている追加の構成データ

私は4つのアイデアを思いついた:

  1. asadmincreate-resource-adapter-configを使用します。RAによっては、glassfishがアプリを再起動しないように見えるため、この後、アプリケーションを再起動する必要があります。この試みはポートには適していますが、他のデータには適合しません。
  2. 管理対象オブジェクトを使用して、アプリケーションにデータをRAに渡す手段を提供します。このアイデアはここで言及されています。私はこれがそれを行うと思いますが、仕様は第13.4.2.3章で次のように述べています

    管理対象オブジェクトは、メッセージエンドポイントへの非同期メッセージ配信の設定には使用されないことに注意してください。ActivationSpec JavaBeanは、非同期メッセージ配信のセットアップに必要なすべてのアクティベーション情報を保持するために使用されます。

    しかし、ActivationSpecオブジェクトに動的データを取得できません(DeploymentDescriptorまたはアノテーションのいずれかを介して)。それとも私はここで何かを逃しましたか?:-)

  3. JDBCを直接使用してデータにアクセスします(ここからアイデアを取得しました)。これはおそらく最良のアイデアですが、データベースに保存されていないため、前述のライセンスデータでは機能しません。

  4. 私が持っていた最後のアイデアは、RA内からデータをフェッチするために使用されるメソッドをMessageDrivenBeanに(私のインターフェースを介して)配置することでした。そのメソッドはRAから呼び出すことができ、データを提供します。しかし:RAをアプリに結合するので、それは非常に虐待的だと思います。

親愛なるコミュニティ、これについてどう思いますか?これらの質問に対する答えを見つけるのはそれほど簡単ではないので、私は意見に非常に満足しています!

おかげで、歓声、ジュリアス

4

2 に答える 2

0

ra.xmlには、config-propertiesを定義する可能性があります。Websphereでは、これらは、選択したリソースアダプターのカスタムプロパティのテーブルに編集可能なフィールドとして表示されます。同様の問題に取り組んでいます。ホスト名/ポート情報もRAに渡す必要があります。残念ながら、RA内からこれらのフィールドの内容を読み取る方法がわかりません。

于 2012-03-06T09:23:26.093 に答える
0

私が最終的に思いついた解決策は、@ConfigProperty注釈を使用することです。これは、上記の質問のオプション1を使用することを意味します。

したがって、私のResourceAdapterクラスは次のようになります。

public class Hl7ResourceAdapter implements ResourceAdapter {
    @ConfigProperty
    private Integer port = null;

    // Rest from ResourceAdapter interface omitted here...

    // Use port here to open socket...
}

フィールドは、次の@ConfigPropertyいずれかを介して設定できるようになりました

  • resource-adapter-config
  • ra.xmlデプロイメント記述子

これらの設定を再構成するために、glassfishのRESTインターフェースを使用して、これらの設定をプログラムで変更します(asadmin create-resource-adapter-configコマンドを使用することもできます)。私は問題を回避します。Glassfishは、RESTを介して自分で再起動するだけでは、リソースアダプタを使用するアプリケーションを再起動しません。(正確には、アプリケーションを無効にしてから再度有効にして、Glassfishの別のバグを回避します)

いくつかの追加の注意:

  • リソースアダプタの.rarファイルを、それを使用するアプリケーションの.earにデプロイします。
  • Glassfishの外部に別のアプリケーション(スタンドアロン)があり、RESTインターフェースを呼び出して、リソースアダプターアプリケーションの再起動などを実行します。アプリケーションが適切に再起動できないことは明らかです。

お役に立てれば。kutuzof、これはあなたをさらに前進させますか?

于 2012-03-14T15:43:26.153 に答える