2016-01-21 92 views
0

我有以下的MDB配置MDB设置ActivationConfig动态

@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中属性。这些值将来自初始设置属性文件和未来的管理控制台。由于它不在类的删除中,我无法简单地指定一个变量。

我看到您可以将这些值添加到各种xml文件中,但它似乎与供应商有关,例如, JBoss的。我不想把这一切归结为一个供应商。我需要它以这种方式打开。

我环顾四周,我无法找到任何暗示我可以做这样的事情。有没有可能像设置方法那样设置配置?

回答

1

不,没有标准的方法来动态设置激活配置属性。我从来没有听说过供应商特定的方式来动态设置激活配置属性。我想你可以动态重建EAR并使用特定于供应商的API重新部署它,或者某些应用程序服务器支持动态覆盖该配置。

+0

谢谢你的回复。按照供应商的具体情况,我的意思是在ejb-jar.xml中。我认为JBoss需要一套标签才能正常工作。我不能在代码中设置MDB属性吗?我想象的问题是注解用于在容器内部设置MDB,并且能够在代码中修改MDB,这需要重新部署MDB。至少我想要做的就是从用户设置的属性文件中读取目标,而不是硬编码值。 – Softey

+0

我对JBoss的回答不够熟悉,但是如果有一种方法可以轻松地使用代码来做到这一点,我会感到惊讶。通常,您可以在应用程序服务器中配置它,而不是在应用程序中配置。例如,对于WebSphere Application Server,您可以在激活规范中配置addressList而不是在MDB中。 –