Привязка очереди к MDB EJB 3.0 в WebSphere 7

Я пишу или пытаюсь написать Baby's First MDB на WebSphere 7. У меня почти не осталось волос, я вырвал их все, пытаясь заставить эту штуку работать. Похоже, что я все настроил правильно, но я не получаю ответа, когда помещаю сообщение в соответствующую очередь.

Вот настройка файла EAR:

simplemdb.ear
    META-INF
        Manifest.mf
        application.xml
    simplemdb.jar
        META-INF
            Manifest.mf
            ejb-jar.xml
        com
            [ classes go here ]

Я не могу найти никакого синтаксиса для определения имени JNDI очереди в ejb-jar.xml, поэтому вместо этого я:

  • Определите спецификацию активации WebSphere. Имя SimpleMDBActivationSpec, имя JNDI jms/SimpleActivationSpec, назначение jms/SimpleMDBQueue.
  • Определите очередь WebSphere. Имя SimpleMDBQueue, имя JNDI jms/SimpleMDBQueue, имя очереди SIMPLE.MDB.QUEUE.
  • Определите очередь MQ с именем SIMPLE.MDB.QUEUE.
  • Разверните файл EAR. Во время развертывания меня просят ввести информацию о привязке. Я выбираю Спецификацию активации, затем указываю имя JNDI целевого ресурса и имя JNDI назначения на спецификацию активации и очередь соответственно.

(Код MDB не имеет аннотаций.) В этот момент приложение указывает на спецификацию и очередь, а спецификация указывает на очередь — ремень и подтяжки. Естественно, я предполагаю, что поэтому приложение знает об очереди. Полный надежд, ставлю сообщение в очередь, и... ничего. Событие onMessage должно использовать System.out для регистрации сообщения. Я не вижу сообщения.

Четкая документация по этому поводу бросается в глаза ее отсутствием. Google дает МНОГО результатов, но ни один из них не дает подробностей о том, как все конфигурации сочетаются друг с другом. О ibm-ejb-jar-bnd.xmi много говорят, но примеры файла загадочны, полны непрозрачных чисел без объяснения того, как они были сгенерированы или как они связаны с другими частями конфигурации.

Ради Бога. Все, что я хочу сделать, это развернуть MDB и заставить его писать «Hello, world», когда я помещаю сообщение в очередь. Я использую vi и ant в качестве инструментов разработки и сборки. Может ли кто-нибудь дать мне представление о том, что мне не хватает?

Редактировать: добавлен тег "zos".


person Singlestone    schedule 01.06.2011    source источник
comment
Я не эксперт MDB, но ваши шаги по настройке для актов, очереди и привязки выглядят правильно, поэтому я не уверен, что не так. Отмечу, что при проверке Google ibm-ejb-jar-bnd.xmi используется для pre-EJB3, а .xml используется для EJB3. Несмотря на это, эти файлы создаются/заполняются для вас на этапе развертывания, поэтому они вам не нужны. Надеюсь, это поможет...   -  person Brett Kail    schedule 02.06.2011
comment
Спасибо. Насколько я могу судить, файл ibm-ejb-jar-bnd.xmi/xml содержит используемые по умолчанию значения. Я должен иметь возможность изменять привязки на лету с помощью консоли администратора. Это не заставляет приложение работать. =( Кроме того, я только что попытался использовать порт прослушивателя вместо спецификации активации. Не работает. WebSphere сообщает, что все развернуто нормально, но MDB по-прежнему никак не реагирует на постановку в очередь. Небольшое исследование раскрыл идею, что если MDB правильно слушает, очередь MQ покажет соединение (или два).Этого тоже не происходит.Аааа!   -  person Singlestone    schedule 02.06.2011


Ответы (2)


Я нашел проблему. Это специфично для WebSphere, работающей на z/OS. Чтобы спецификация активации была полностью доступна в этой среде, необходимо запустить процесс Control Region Adjunct (CRA). Я сказал WAS запустить его, переработал сервер приложений и о чудо! Мой MDB начал отвечать.

Чтобы запустить CRA через консоль администрирования WebSphere, перейдите к...

  • Серверы приложений > [имя сервера] > Связь > Обмен сообщениями > Настройки WebSphere MQ CRA

... и установите флажок «Запустить CRA». Нажмите «ОК», сохраните его в основной конфигурации и, чтобы CRA действительно запустился, отключите сервер приложений и снова включите его. (Это для WAS 7.0.)

Спасибо всем за потраченное время и пространство для размышлений.

person Singlestone    schedule 03.06.2011
comment
Привет, рад видеть, что ваша проблема исправлена. Я бы посоветовал вам явно указать, работают ли что-то на z / OS, поскольку она отличается от других платформ. Люди предполагают, что это Windows/Unix, если вы не укажете их в своем вопросе (вопросах). - person Manglu; 06.06.2011

взгляните на это и посмотрите, есть ли здесь что-нибудь, что вам поможет.

http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.wasfpejb/wasfpejb/6.1/DevelopmentTools/WASv61_EJB3FP_MDBLab.pdf

Я не играл с этим в течение последнего года, поэтому я не могу сразу прокомментировать, но я подумал, что PDF-файл может вам помочь.

ХТН

Манглу

person Manglu    schedule 02.06.2011
comment
Спасибо. Я попытался закодировать спецификацию активации в ibm-ejb-jar.bnd.xml, как указано в PDF. Это было немного полезно, так как избавило меня от необходимости вручную связывать спецификацию активации с MDB. Однако это не влияет на фактическое поведение MDB. - person Singlestone; 03.06.2011