通过 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 工具报告导致我的部署失败的异常吗?

Jboss CLI 应用程序部署

jboss_cli 活动会话详细信息 [关闭]

JBoss cli 连接到 docker

如何使用 Java 代码使用 jboss-cli 命令将 EAR 文件部署到 wildfly-17.0.1 服务器

部署数据源失败,因为 JBoss 认为它​​已经存在