通过 JBoss CLI 在部署时更改 Activation-Config-属性
Change Activation-Config-Property on deployment via JBoss CLI
我们想使用 JBoss CLI 部署包含消息驱动 bean 的 EAR。每个环境都有不同的激活配置 属性 值。
我们的问题:在使用 JBoss CLI 部署 EAR 后是否可以更改激活配置属性的值?
我们知道我们可以使用 property substitution。但是,这似乎在服务器启动时设置了激活属性。相反,我们希望随时更改值(可能只要应用程序被禁用)。
2011年那里有similar question。今天的答案可能已经过时了。它在构建时建议一个解决方案。这是我们现在所拥有的,也是需要改进的。
背景:MDBS 由 IBM Websphere MQ 资源适配器激活。描述符 ejb-jar.xml
包含如下片段:
<message-driven>
<ejb-name>MyMDB</ejb-name>
<ejb-class>com.acme.MyMDB</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
<activation-config>
<activation-config-property>
<activation-config-property-name>hostName</activation-config-property-name>
<activation-config-property-value>hostName</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>port</activation-config-property-name>
<activation-config-property-value>1415</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>queueManager</activation-config-property-name>
<activation-config-property-value>queueManagerName</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>channel</activation-config-property-name>
<activation-config-property-value>channelName</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>transportType</activation-config-property-name>
<activation-config-property-value>CLIENT</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>useJNDI</activation-config-property-name>
<activation-config-property-value>true</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>destination</activation-config-property-name>
<activation-config-property-value>java:jboss/queueName</activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
一个可能的解决方案是 "try to convert your MDBs into AspectDomain",您可以从下面的 link 中得到一个想法:
https://developer.jboss.org/thread/178162
此处应提供更多详细信息:
如何使用 JBoss EAP 6 中的 JBoss AOP 在运行时设置 MDB ActivationConfigProperty
方面域对您没有帮助。这在 JBoss 的早期版本中可用。文章 180233 的第二个 link 本质上说当前 JBoss 版本不再支持 AOP。
MDB 激活规范是在部署 MDB jar 时设置的。您可以按照说明使用 属性 替换来配置 MDB。您可以即时更改系统属性:
/system-property=wmq.port:remove
/system-property=wmq.port:add(value=1515)
/system-property=wmq.port:read-resource
如果您随后重新部署 MDB jar,将替换新的 属性 值。
我们想使用 JBoss CLI 部署包含消息驱动 bean 的 EAR。每个环境都有不同的激活配置 属性 值。
我们的问题:在使用 JBoss CLI 部署 EAR 后是否可以更改激活配置属性的值?
我们知道我们可以使用 property substitution。但是,这似乎在服务器启动时设置了激活属性。相反,我们希望随时更改值(可能只要应用程序被禁用)。
2011年那里有similar question。今天的答案可能已经过时了。它在构建时建议一个解决方案。这是我们现在所拥有的,也是需要改进的。
背景:MDBS 由 IBM Websphere MQ 资源适配器激活。描述符 ejb-jar.xml
包含如下片段:
<message-driven>
<ejb-name>MyMDB</ejb-name>
<ejb-class>com.acme.MyMDB</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
<activation-config>
<activation-config-property>
<activation-config-property-name>hostName</activation-config-property-name>
<activation-config-property-value>hostName</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>port</activation-config-property-name>
<activation-config-property-value>1415</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>queueManager</activation-config-property-name>
<activation-config-property-value>queueManagerName</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>channel</activation-config-property-name>
<activation-config-property-value>channelName</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>transportType</activation-config-property-name>
<activation-config-property-value>CLIENT</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>useJNDI</activation-config-property-name>
<activation-config-property-value>true</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>destination</activation-config-property-name>
<activation-config-property-value>java:jboss/queueName</activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
一个可能的解决方案是 "try to convert your MDBs into AspectDomain",您可以从下面的 link 中得到一个想法:
https://developer.jboss.org/thread/178162
此处应提供更多详细信息:
如何使用 JBoss EAP 6 中的 JBoss AOP 在运行时设置 MDB ActivationConfigProperty
方面域对您没有帮助。这在 JBoss 的早期版本中可用。文章 180233 的第二个 link 本质上说当前 JBoss 版本不再支持 AOP。
MDB 激活规范是在部署 MDB jar 时设置的。您可以按照说明使用 属性 替换来配置 MDB。您可以即时更改系统属性:
/system-property=wmq.port:remove
/system-property=wmq.port:add(value=1515)
/system-property=wmq.port:read-resource
如果您随后重新部署 MDB jar,将替换新的 属性 值。