通过JBoss CLI更改部署时的Activation-Config-Property

时间:2017-02-13 20:18:49

标签: deployment jboss command-line-interface jboss7.x ejb-3.0

我们希望使用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>

2 个答案:

答案 0 :(得分:2)

一种可能的解决方案可能是“尝试将您的MDB转换为AspectDomain”,您可以从以下链接获取该想法:

https://developer.jboss.org/thread/178162

此处应提供更多详细信息:

如何使用JBoss EAP 6中的JBoss AOP在运行时设置MDB ActivationConfigProperty

https://access.redhat.com/solutions/180233

答案 1 :(得分:2)

方面域对您没有帮助。这在早期版本的JBoss中可用。文章180233的第二个链接基本上表示当前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,则新属性值将被替换。