我想为消息驱动的EJB创建一个共享非持久订阅,并想知道如何使用@MessageDriven和@ActivationConfigProperty来实现这一目标。
我发现article描述了类似的内容,但我不确定这是否适用于我的问题:
订阅的共享依赖于设置的客户端ID,不仅适用于持久订阅(总是需要客户端ID),还适用于非持久订阅(通常不需要客户端ID)。如果资源适配器正在创建订阅以供消息驱动Bean(MDB)使用,并且未设置客户端ID,则资源适配器会将客户端ID设置为MDB的名称。但是,如果使用JMS API以编程方式创建订阅,并且未设置客户端ID,则将抛出异常。
请注意,在EJB或Web容器中,不允许使用连接工厂创建连接的应用程序在新创建的连接上设置客户端ID,但必须在连接工厂上设置它。这种限制是由EJB规范强加的,尽管它也适用于Web组件。应用程序客户端容器中没有此类限制。
答案 0 :(得分:0)
使用标准JavaEE MDB激活属性是不可能的。请阅读EJB 3.2 specification的第5.4.17.7节。有不同的(供应商特定的)方法(例如GlassFish,Wildfly等)