通过 JBoss CLI 在部署时更改 Activation-Config-Property
Posted
技术标签:
【中文标题】通过 JBoss CLI 在部署时更改 Activation-Config-Property【英文标题】:Change Activation-Config-Property on deployment via JBoss CLI 【发布时间】:2017-07-01 22:53:47 【问题描述】:我们想用 JBoss CLI 部署一个包含消息驱动 bean 的 EAR。每个环境都有不同的激活配置属性值。
我们的问题:是否可以在使用 JBoss CLI 部署 EAR 后更改激活配置属性的值?
我们知道我们可以使用property substitution。但是,这似乎在服务器启动时设置了激活属性。相反,我们希望随时更改这些值(可能只要应用程序被禁用)。
2011 年那里有一个similar question。今天的答案可能已经过时了。它在构建时提出了一个解决方案。这就是我们现在拥有的,还有待改进的地方。
背景:MDBS 由 IBM Websphere MQ 资源适配器激活。描述符ejb-jar.xml
包含如下sn-ps:
<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>
【问题讨论】:
【参考方案1】:一种可能的解决方案是“尝试将您的 MDB 转换为 AspectDomain”,您可以从下面的链接中获得一个想法:
https://developer.jboss.org/thread/178162
更多细节应该在这里提供:
如何在 JBoss EAP 6 中使用 JBoss AOP 在运行时设置 MDB ActivationConfigProperty
https://access.redhat.com/solutions/180233
【讨论】:
恐怕我无法访问第二个资源。但是,我会请我的一个朋友检查一下。感谢您的提示。第一个资源有注释“这是一个部署时配置,不能在运行时更改”。我需要 AOP 作为第二个链接的先决条件吗? @Claude,很遗憾我也无法访问该链接,但我鼓励您使用谷歌搜索。此链接也可能对您有所帮助:***.com/a/34926075/1925356【参考方案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,则会替换新的属性值。
【讨论】:
以上是关于通过 JBoss CLI 在部署时更改 Activation-Config-Property的主要内容,如果未能解决你的问题,请参考以下文章
我可以让 JBoss CLI 工具报告导致我的部署失败的异常吗?