java - 如何使 MDB 激活规范上下文属性可配置?

标签 java jms wildfly jboss-mdb

在我们的项目中,我们使用 MDB 监听特定队列上的消息。它被定义为注释。

示例:

@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "20")})

.

为了改变 maxSessions 的值,每次都必须编译代码。即使我在 ejb-jar.xml 中配置它而不是作为注释,我也需要编译代码并生成 EAR 文件。

有没有办法让它成为用户可配置的(从属性文件中读取),这样就不需要重新编译代码,只需将 maxSession 值更改为“30”并重新启动 jboss,它就应该可以工作了。

请帮忙。

引用代码:

@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "ABCQueue"),
@ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "20"),    @ActivationConfigProperty(propertyName="maxMessagesPerSessions",propertyValue="15")})
public class ABCMDB implements MessageListener
{
   ----------- 
}

最佳答案

在 Wildfly 中有一个简单的方法(我已经将它用于 Wildfly 11)。

  1. 通过更新 standalon-xx.xml 或 domain.xml 中的“ee”子系统启用注释中的属性替换

<subsystem xmlns="urn:jboss:domain:ee:4.0"> ... <annotation-property-replacement>true</annotation-property-replacement> ... </subsystem>

  1. 在 standalon-xx.xml 或 domain.xml 中定义系统属性

    <system-properties><br/> <property name="property.maxsessions" value="50"/> </system-properties>

或者您自己的属性文件使用 -P myconfigured.properties , 同时启动野蝇

或者在启动 wildfly 时通过命令行 -Dproperty=value

  1. 修改MDB注解

    @ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "${property.maxsessions}")

引用:https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/7.0/html-single/developing_ejb_applications/#message_driven_beans-1

关于java - 如何使 MDB 激活规范上下文属性可配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030422/

相关文章:

java - 如何自定义ActionEvent的事件源?

java - 是否可以在 java 应用程序中使用 jQAssistant 作为工具?

java - 启动多个新窗口但保持当前 View 处于 Activity 状态

jms - 如何在独立的 Java 应用程序中池化 JMS 连接?

java - 如何在 Wildfly 10 上查找远程 jms 队列

java - 使用 Java 查找天气

java - 消息消费者在第一条消息后被阻止

java - 如何在 Wildfly 10 上设置 MariaDB JNDI?

使用任务控制进行 Java 分析 - 我在哪里可以看到我自己的方法所花费的时间?

java - 如何在 JBoss "Wildfly"中的 2 个 EAR 之间共享 JPA 数据模型