سؤال

أنا أستخدم JBOSS [EAP] 5.0.0.GA ولدي أذن تحتوي على جرة EJB التي تحتوي على بعض MDBs التي تعتمد على وجود قوائم قوائم JMS التي يستخدمونها. عندما قمت بتكوين قوائم الانتظار في .../server/all/deploy/messaging/myqueues-service.xml لم تكن هناك مشكلة.

ومع ذلك ، أردت تكوين قوائم الانتظار في ملف الأذن لتجنب الاضطرار إلى إجراء تغييرات على تكوين JBOSS مباشرة. لا مشكلة ، أضع بلدي myqueues-service.xml ملف إلى جذر الأذن وأضاف الإشارة إلى بلدي jboss-app.xml على النحو التالي:

<jboss-app>
    <module-order>strict</module-order>
    <loader-repository>
        seam.jboss.org:loader=my-ear.ear
    </loader-repository>
    <module>
        <service>myqueues-service.xml</service>
    </module>
</jboss-app>

ومع ذلك ، عندما أفعل ذلك ، يقوم JBoss بتحميل جرة EJB (الواردة في My-Ear.ear) أولاً ثم يقوم بتكوين قوائم قوائم JMS بعد ذلك. يؤدي هذا إلى أخطاء عند تحميل MDB:

12:16:02,714 WARN  [JmsActivation] Failure in jms activation org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@13a59e .....
javax.naming.NameNotFoundException: MyQueue not bound

إنها ليست مشكلة كبيرة ، كما في وقت لاحق على MDBS إعادة الاتصال بنجاح إلى JMS:

12:16:12,698 INFO  [JmsActivation] Attempting to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@f91ad5
12:16:12,823 INFO  [JmsActivation] Reconnected with messaging provider.

لكنني أود حقًا تجنب وجود أي أخطاء ، ومن أجل القيام بذلك ، أحتاج إلى وسيلة لإجبار JBoss على تكوين قوائم انتظار JMS أولاً ، قبل تحميل جرة EJB. هل هناك أي طريقة للقيام بذلك؟ للرجوع إليها ، ها هي application.xml للأذن:

<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
  <display-name>my-ear</display-name>
  <module>
    <ejb>my-ejb.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>my.war</web-uri>
      <context-root>myroot</context-root>
    </web>
  </module>
</application>

أي اقتراحات موضع تقدير.

هل كانت مفيدة؟

المحلول

موافق، جايكييران باي على Community.jboss.org ، ساعدتني منتديات. الحل هو إضافة قائمة انتظار JMS كاعتماد على MDB. في حالتي ، استخدمت شرح التعليقات:

@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/MyQueue") })
@Depends("jboss.messaging.destination:service=Queue,name=MyQueue")
public class MyMessageListener implements MessageListener {
    ...
}

يمكنك أن تفعل الشيء نفسه باستخدام jboss.xml إذا كنت لا تستخدم التعليقات التوضيحية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top