вещи работают иначе, чем вы можете себе. Указание, что MDB привязан к javax.jms.Queue и имя этой очереди является частью спецификации EJB и сделано через ActivationConfig, например, так:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(
propertyName = "destination",
propertyValue = "FooQueue")})
public static class JmsBean implements MessageListener {
public void onMessage(Message message) {
}
}
Сам MDB контейнер фактически не JMS- вообще. Он просто понимает, что он должен перехватывать компонент до определенного адаптера ресурсов.
<openejb>
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
ServerUrl tcp://someHostName:61616
</Resource>
<Container id="MyJmsMdbContainer" ctype="MESSAGE">
ResourceAdapter MyJmsResourceAdapter
</Container>
</openejb>
Приведенное выше показывает контейнер MDB, подключенный к адаптеру ресурсов, который использует JMS через ActiveMQ.
Вот пример, который показывает MDB Контейнер подключен к Quartz Resource Adapter
Это не возможно сказать MDB контейнер о JMS конкретных вещей в соответствии со спецификацией, отношения гораздо более общий характер, чем это. Это blog post дает некоторое представление о том, как все работает.
Спасибо, очень полезно! –