2010-10-20 2 views
1

Как описано в OpenEJB документации, мы можем настроить JMS фабрику соединений и очередь, и они будут появляться в JNDI как: OpenEJB: Ресурс/MyJmsConnectionFactory, OpenEJB: Ресурс/MyQueueOpenEJB: Настройка МБР с пользовательским ConnectionFactory

  1. Учитывая эти записи JNDI, как я могу сообщить MDB, чтобы использовать их?

  2. Можно ли изменить имя JNDI, например ConnectionFactory появиться как Java:/ConnectionFactory или ConnectionFactory

ответ

3

вещи работают иначе, чем вы можете себе. Указание, что 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 дает некоторое представление о том, как все работает.

+0

Спасибо, очень полезно! –

Смежные вопросы