2

在我们的项目中,我们正在使用一个 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
{
   ----------- 
}
4

2 回答 2

5

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>
    <property name="property.maxsessions" value="50"/> </system-properties>

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

或者在启动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

于 2019-01-08T12:18:27.183 回答
1

我开始写一篇关于 Wildfly8 和 Websphere MQ 集成的要点,允许为 MDB 或 JMS 消息生产者配置和维护环境上下文配置。

基本上,我必须在我的应用程序中声明一个 jboss-ejb3.xml 自定义部署描述符,它使用系统属性来进行 MDB 使用的上下文配置。

系统属性在 wildfly Standalone-full.xml 文件中配置,位于 system-properties 元素下。所以不在属性文件中,但在我看来,standalone-full.xml 配置是这种配置的好位置。

这是链接:https ://gist.github.com/remibantos/33c366803f189db9b225

于 2015-12-01T22:03:32.800 回答