GlassFish 3.1.1 アプリケーション サーバーの JCA リソース アダプタを介して TCP ソケットで受信したデータから呼び出されるメッセージ駆動型 Bean があります。sun-ejb-jar.xml ファイルの配備記述子は、ソケットの URL とポートを指定します。MDB がデプロイされると、アプリ サーバーが MessageEndpointFactory と ActivationSpec をパラメーターとして使用して、リソース アダプターで endpointActivation() メソッドを実行することがわかります。
これは、デプロイ前に URL とポートが既知であり、XML ファイルで指定できる場合は正常に機能しますが、EJB コードで実行時に TCP ソケットを変更する機能が必要になりました。実行時にこれを行う方法について、JCA仕様に参照が見つかりませんでした。
参考までに、Oracle の Web サイトから仕様をダウンロードしました。 J2EE コネクタ アーキテクチャ仕様バージョン 1.5
基本的に、ActivationSpec を設定する次の XML コードを EJB コードに移動したいと考えています。
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>MyInboundSocketMDB</ejb-name>
<mdb-resource-adapter>
<resource-adapter-mid>jca-sockets-rar</resource-adapter-mid>
<activation-config>
<activation-config-property>
<activation-config-property-name>url</activation-config-property-name>
<activation-config-property-value>localhost</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>port</activation-config-property-name>
<activation-config-property-value>5006</activation-config-property-value>
</activation-config-property>
</activation-config>
</mdb-resource-adapter>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
提案をありがとう。