У меня есть компонент, управляемый сообщениями, который вызывается из данных, полученных через сокет TCP через адаптер ресурсов JCA на сервере приложений GlassFish 3.1.1. Дескриптор развертывания в файле sun-ejb-jar.xml указывает URL-адрес и порт сокета. Когда MDB развернут, я вижу, что сервер приложений выполняет метод endpointActivation () в адаптере ресурсов с параметрами MessageEndpointFactory и ActivationSpec в качестве параметров.
Это прекрасно работает, когда URL-адрес и порт известны перед развертыванием и могут быть указаны в файле XML, но теперь мне нужна возможность изменить сокет TCP во время выполнения в моем EJB-коде. Я не смог найти никаких ссылок в спецификации JCA о том, как это сделать во время выполнения.
Для справки, я скачал спецификацию с сайта Oracle.
Спецификация архитектуры коннектора J2EE, версия 1.5
По сути, я хотел бы переместить следующий код XML, который заполняет ActivationSpec, в мой код 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>
Спасибо за любые предложения.