MDB 动态设置 ActivationConfig

MDB set ActivationConfig dynamically

我有以下 MDB 配置

@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destinationJndiName", propertyValue = "jms/test/log"),
@ActivationConfigProperty(propertyName= "destination", propertyValue="jms_test_log"),
@ActivationConfigProperty(propertyName="acknowledgeMode", propertyValue="Auto-acknowledge"),    
@ActivationConfigProperty(propertyName="addressList", propertyValue="mq://test.server.co.uk:7676"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "10")
})

@TransactionManagement(TransactionManagementType.BEAN)
public class DownloadListener implements MessageListener { ....

我希望能够动态设置 addressList 属性。这些值将来自初始设置属性文件和未来的管理控制台。由于它不在 class decleration 范围内,我无法简单地分配一个变量。

我看到您可以将这些值添加到各种 xml 文件中,但它似乎取决于供应商,例如JBoss。我不想把这归咎于一家供应商。我需要它以这种方式打开。

我环顾四周,找不到任何迹象表明我可以做这样的事情。是否可以像设置方法一样设置配置?

不,没有动态设置激活配置属性的标准方法。我什至从未听说过 vendor-specific 动态设置激活配置属性的方法。我想您可以动态重建 EAR 并使用 vendor-specific API 重新部署它,或者某些应用程序服务器可能支持动态覆盖该配置。