Соединение Weblogic EJB с внешней очередью Tibco EMS JMS - PullRequest
2 голосов
/ 25 июля 2011

Я пытаюсь подключить Weblogic (10.3) MDB к очереди Tibco EMS JMS. Я прочитал из очереди, используя простое соединение JNDI Java / Spring, поэтому я знаю, что внешние имена поиска JNDI действительны. Данные моего внешнего сервера WL:

JNDI Initial Context Factory: com.tibco.tibjms.naming.TibjmsInitialContextFactory
JNDI Connection URL: tcp://ems-dit-am-uat-1.app.xxx.net:30055
JNDI Properties:
java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory
java.naming.provider.url=tcp://ems-dit-am-uat-1.app.xxx.net:30055
java.naming.security.principal=rdsuat
java.naming.factory.url.pkgs=com.tibco.tibjms.naming
(password entered in Properties Credential box).

Назначение:

Name, Local JNDI Name and Remote JNDI name all set to Q.NY.DERIV.DRD.RFI

Фабрика соединений:

Name, Local JNDI Name and Remote JNDI name all set to DRDRFIQueueConnectionFactory
(which simply changes the default connection factory port).
User/password also set here (same as before).

WebLogic-EJB-jar.xml

    <weblogic-enterprise-bean>
    <ejb-name>MessageReceiver</ejb-name>
    <message-driven-descriptor>
        <pool>
            <max-beans-in-free-pool>2</max-beans-in-free-pool>
        </pool>
        <destination-jndi-name>Q.NY.DERIV.DRD.RFI</destination-jndi-name>
        <connection-factory-jndi-name>DRDRFIQueueConnectionFactory</connection-factory-jndi-name>
    </message-driven-descriptor>
</weblogic-enterprise-bean>

Я получаю ошибку: Управляемый сообщениями EJB: MessageReceiver не может подключиться к месту назначения JMS: Q.NY.DERIV.DRD.RFI. Ошибка была: Не удается получить информацию о месте назначения. Имя JNDI получателя - Q.NY.DERIV.DRD.RFI, URL-адрес провайдера - нулевой

Я попытался переместить конфигурацию в weblogic-ejb-jar.xml (то есть:

    <weblogic-enterprise-bean>
    <ejb-name>MessageReceiver</ejb-name>
    <message-driven-descriptor>
        <pool>
            <max-beans-in-free-pool>2</max-beans-in-free-pool>
        </pool>
        <destination-jndi-name>Q.NY.DERIV.DRD.RFI</destination-jndi-name>
        <initial-context-factory>com.tibco.tibjms.naming.TibjmsInitialContextFactory</initial-context-factory>
        <provider-url>tcp://ems-dit-am-uat-1.app.xxx.net:30055</provider-url>
        <connection-factory-jndi-name>DRDRFIQueueConnectionFactory</connection-factory-jndi-name>
    </message-driven-descriptor>
</weblogic-enterprise-bean>

но я получаю другую ошибку: Модуль активации исключений: EJBModule (rfiloader.jar) Невозможно развернуть EJB: MessageReceiver от rfiloader.jar: невозможно найти EndPointFinder для tcp: //ems-dit-am-uat-1.app.xxx.net: 30055

... есть идеи?

Спасибо Chris

1 Ответ

2 голосов
/ 28 июля 2011

Наконец-то добились этого - из-за ошибки в Weblogic 10.3 это не так просто, как должно быть.

  1. Создание стороннего сервера со всеми обычными данными (локальные / удаленные имена поиска JNDI для фабрик назначения и соединений).

  2. Создание локального пользователя WL с тем же именем, что и у удаленного пользователя EMS, включая пароль.

  3. Создание сопоставления учетных данных ejb (НЕ сопоставление учетных данных безопасности)

    • Сделайте это, щелкнув по соответствующему развертыванию, щелкните по соответствующему имени ejb в списке, затем перейдите на вкладку Безопасность, затем на вкладку Отображение учетных данных.
    • добавить одно и то же имя для пользователей WLS и Remote (пароль здесь не нужен).

Добавьте следующие разделы в конфигурационные файлы:

WebLogic-jar.xml-EJB

В нижней части этого файла после закрывающего тега «weblogic-enterprise-bean» и перед заключительным тегом «weblogic-ejb-jar» добавьте следующее:

<security-role-assignment>
    <role-name>rficonsumer</role-name>
    <principal-name>rdsuat</principal-name>
</security-role-assignment>

Роль rficonsumer существует только в этих 2 файлах конфигурации и может быть любой, если она совместима во всех трех разделах, описанных здесь. Имя участника-участника 'rdsuat' должно соответствовать пользователю, созданному в разделе консоли администратора WL, и , следовательно, должно соответствовать пользователю очереди EMS.

EJB-jar.xml

  1. В разделе тега «управляемый сообщениями» для соответствующего MDB добавьте следующий раздел в конце перед закрывающим тегом «управляемый сообщениями»:

    rficonsumer

  2. В самом конце файла, после закрывающего тега 'enterprise-beans', перед завершающим закрывающим тегом 'ejb-jar' добавьте следующее:

    rficonsumer

...