2016-01-21 93 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中。 –