Бин, управляемый сообщениями, и дескриптор развертывания

1

У меня есть простой Message Driven Bean

@Named
@MessageDriven(mappedName = "jms/myQueue")
public class TestMDB implements MessageListener {

  @Override
  public void onMessage(Message msg) {
     //...
  }
}

Как я могу добиться того же, используя только дескриптор развертывания ejb-jar.xml вместо аннотаций? Я не знаю имя JNDI в очереди во время компиляции, поэтому я хочу указать его в дескрипторе развертывания.

  • 0
    Вы стремитесь вернуться назад. Как вы получаете свое имя JNDI во время развертывания, а не во время выполнения? Чтобы ответить на вопрос, вам нужно создать ejb-jar.xml и упаковать его. Прочитайте это adam-bien.com/roller/abien/entry/simplest_annotation_less_ejb_3
Теги:
java-ee
ejb-3.1
ejb-jar.xml
message-driven-bean

1 ответ

0

Может быть, что-то похожее на:

    <message-driven>
        <ejb-name>TestMDB</ejb-name>
        <ejb-class>package.name.TestMDB</ejb-class>
        <messaging-type>javax.jms.MessageListener</messaging-type>
        <transaction-type>Container</transaction-type>
        <message-destination-type>javax.jms.Queue</message-destination-type>        
        <activation-config>
           <activation-config-property>
              <activation-config-property-name>destination</activation-config-property-name>
              <activation-config-property-value>myQueue</activation-config-property-value>
           </activation-config-property>
           <activation-config-property>
              <activation-config-property-name>destinationType</activation-config-property-name>
              <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
           </activation-config-property>
           <activation-config-property>
              <activation-config-property-name>acknowledgeMode</activation-config-property-name>
              <activation-config-property-value>Auto-acknowledge</activation-config-property-value>
           </activation-config-property>
        </activation-config>
        <resource-ref id="ResourceRef_0">
           <res-ref-name>jms/myQCF</res-ref-name>
           <res-type>javax.jms.QueueConnectionFactory</res-type>
           <res-auth>Application</res-auth>
           <res-sharing-scope>Shareable</res-sharing-scope>
        </resource-ref>
     </message-driven>

Затем в файле bnd.xml:

<message-driven name="TestMDB">
    <jca-adapter activation-spec-binding-name="mdb30/myQueue" destination-binding-name="Jetstream/jms/myQueue" activation-spec-auth-alias=""/>
    <resource-ref name="jms/myQCF" binding-name="Jetstream/jms/myQCF"/>
</message-driven>
  • 0
    Я получаю com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: MDB destination not specified. Я что-то пропустил?
  • 0
    Отредактировано оригинальное сообщение - может быть, это может вывести вас на правильный путь?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню