我有一台运行JBoss4.2.1的服务器,其中包含一个JMS主题。我还有多个终端,每个终端运行自己的JBoss和一个EJB3消息驱动的bean,需要使用持久订阅来订阅主题。由于每个订阅都需要指定唯一的clientId和subscriptionName,因此我无法对ActivationConfigProperty注释中的值进行硬编码,也无法在部署描述符文件中指定值。
所以,问题是如何指定这些值?我是否在JBoss配置文件中执行此操作?
如果可能,请提供完整的示例配置。
感谢。
答案 0 :(得分:1)
这可以通过使用ejb-jar.xml配置文件中的条目组合并将值作为参数提供给JBoss启动命令来完成。
META-INF / ejb-jar.xml中
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
version="3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<enterprise-beans>
<message-driven>
<ejb-name>MyMsgDrivenBeanMDB</ejb-name>
<ejb-class>com.mdb.MyMsgDrivenBeanMDB</ejb-class>
<activation-config>
<activation-config-property>
<activation-config-property-name>clientId</activation-config-property-name>
<activation-config-property-value>${client.id}</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>subscriptionName</activation-config-property-name>
<activation-config-property-value>${subscription.name}</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>reconnectInterval</activation-config-property-name>
<activation-config-property-value>60</activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
</enterprise-beans>
</ejb-jar>
通过在ejb-jar.xml文件中使用$ {variable}表示法指定值,然后可以从JBoss start命令中选择它们作为服务器选项。
-Dclient.id = client-01 -Dsubscription.name = subscription-01