Отправка сообщений JMS из WildFly Swarm в WebLogic 11g

Я пытаюсь воспроизвести в Wildfly Swarm процесс отправки сообщений JMS из Wildfly 8 в Weblogic без использования Camel (http://blog.eisele.net/2015/07/sending-jms-messages-from-wildfly-8-to-weblogic-with-camel.html), но безуспешно.

То, что я сделал до сих пор, следующее:

1) Создание модуля для wlthint3client.jar (src/main&resources/modules/custom/oracle/weblogic):

<module xmlns="urn:jboss:module:2.0" name="custom.oracle.weblogic">
    <resources>
        <resource-root path="wlthint3client.jar">
            <filter>
                <exclude-set>
                    <path name="javax.ejb"/>
                    <path name="javax.ejb.spi"/>
                    <path name="javax.transaction"/>
                    <path name="javax.jms"/>
                    <path name="javax.xml"/>
                    <path name="javax.xml.stream"/>
                </exclude-set>
            </filter>
        </resource-root>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="sun.jdk" export="false" services="import">
            <exports>
                <include-set>
                    <path name="sun/security/acl"/>
                    <path name="META-INF/services"/>
                </include-set>
            </exports>
        </module>
        <module name="com.sun.xml.bind" />
        <module name="org.omg.api"/>
        <module name="javax.ejb.api" export="false"   />
        <module name="javax.transaction.api"  export="false" />
        <module name="javax.jms.api"  export="false" />
        <module name="javax.xml.stream.api" export="false"  />
        <module name="org.picketbox" optional="true"/>
        <module name="javax.servlet.api" optional="true"/>
        <module name="org.jboss.logging" optional="true"/>
        <module name="org.jboss.as.web" optional="true"/>
        <module name="org.jboss.as.ejb3" optional="true"/>
        <module name="org.hornetq" />
    </dependencies>
</module>

Теперь проблема в том, как перевести конфигурацию jms-bridge в project-stages.yml:

<jms-bridge name="wls-bridge" module="custom.oracle.weblogic">
                <source>
                    <connection-factory name="java:/ConnectionFactory"/>
                    <destination name="java:/jms/sourceQ"/>
                </source>
                <target>
                    <connection-factory name="jms/WFMessagesCF"/>
                    <destination name="jms/WFMessages"/>
                    <context>
                        <property key="java.naming.factory.initial"
                              value="weblogic.jndi.WLInitialContextFactory"/>
                        <property key="java.naming.provider.url" 
                              value="t3://127.0.0.1:7001"/>
                    </context>
                </target>
                <quality-of-service>AT_MOST_ONCE</quality-of-service>
                <failure-retry-interval>2000</failure-retry-interval>
                <max-retries>10</max-retries>
                <max-batch-size>500</max-batch-size>
                <max-batch-time>500</max-batch-time>
                <add-messageID-in-header>true</add-messageID-in-header>
            </jms-bridge>

До сих пор мне не удалось воспроизвести его в файле project-stages-yml и увидеть некоторую информацию, зарегистрированную при запуске моего java-проекта. Кто-нибудь был бы любезен помочь мне с этой проблемой?

Большое спасибо.


person Ernesto Antonio Rodriguez A.    schedule 06.02.2018    source источник


Ответы (1)


Вам нужно будет создать раздел в project-defaults.yml, который использует ключи, упомянутые здесь .

Например, приведенное выше будет начинаться так:

swarm:
  messaging-activemq:
    jms-bridges:
      wls-bridge:
        failure-retry-interval: 2000
        max-batch-size: 500
        max-batch-time: 500
        source-connection-factory: java:/ConnectionFactory
        source-destination: java:/jms/sourceQ
        target-connection-factory: jms/WFMessagesCF

Это не полный список настроек, но его должно быть достаточно, чтобы вы начали конвертировать его в yaml.

person Ken    schedule 06.02.2018
comment
Большое спасибо, Кен. Это может работать, но в какой части моего проекта-стадий-yml мне нужно указать ссылку на модуль wlthint3client? Я предполагаю, что этот момент является наиболее важным ключом для запуска адаптера ресурсов, когда я начинаю свой проект. Есть идеи? - person Ernesto Antonio Rodriguez A.; 07.02.2018
comment
Привет, Кент. Пытаясь выполнить описанную выше настройку и добавив остальную информацию, я получаю эту ошибку во время выполнения: ОШИБКА ‹org.jboss.as.controller.management-operation› ‹Загрузочный поток контроллера› WFLYCTL0013: операция (добавить) не удалась - адрес : ([(subsystem=›messaging-activemq),(jms-bridge=›wls-bridge)]) — описание ошибки: {WFLYCTL0412: Требуемые службы, которые не установлены: =›[jboss.naming.context.java.richiesteDownloadQCF ] - person Ernesto Antonio Rodriguez A.; 07.02.2018
comment
Я не вижу ничего, что упоминается как richiesteDownloadQCF в приведенных выше фрагментах кода, поэтому не знаю, почему он пытается ссылаться на что-то с этим именем из JNDI. - person Ken; 08.02.2018
comment
Привет Кен. Ты прав. Это было ошибкой. Настоящим именем фабрики целевых соединений является richiesteDownloadQCF, а не jms/WFMessagesCF. Итак... Я не знаю, по какой причине я получаю сообщение об ошибке первым. У вас есть какие-нибудь идеи, пожалуйста? Еще раз большое спасибо - person Ernesto Antonio Rodriguez A.; 08.02.2018
comment
Привет, Кен. Я закончил добавлять остальную часть формата xml jms-bridge в формат yml, но при запуске java-проекта ничего не происходит. Я отправляю сообщение, но оно не получено очередью Weblogic JMS. - person Ernesto Antonio Rodriguez A.; 09.02.2018
comment
Я получаю эту ошибку сейчас: 2018-02-09 13:56:03 WARN ‹org.apache.activemq.artemis.jms.bridge› ‹Thread-61› AMQ342010: не удалось подключить мост JMS: javax.naming.CommunicationException : Не удалось подключиться ни к одному серверу. Пробовали серверы: [t3://sapvxs015:7676 (поставщик соединения для схемы URI t3 не установлен)] - person Ernesto Antonio Rodriguez A.; 09.02.2018
comment
Я раньше не видел URI, начинающийся с t3. Это правильно? Сообщение связано с тем, что он не знает, что делать с t3 URL-адресами, а не с http - person Ken; 12.02.2018
comment
URI, начинающийся с t3, определяется в разделе target-context в файле project-stages.yml: target-context: java.naming.factory.initial: org.jboss.naming.remote.client.InitialContextFactory java.naming.provider .url: t3://sapvxs015:7676 - person Ernesto Antonio Rodriguez A.; 12.02.2018
comment
Извините, я имею в виду, что это за протокол URL? В сообщении об ошибке говорится, что он не знает, что означает t3. Если бы это был http или https, он бы знал, что с ним делать. - person Ken; 13.02.2018
comment
T3 — это протокол, используемый для передачи информации между серверами WebLogic и другими типами программ Java. WebLogic отслеживает каждую виртуальную машину Java, подключенную к приложению. Для переноса трафика на виртуальную машину Java WebLogic создает одно соединение T3. Этот тип подключения обеспечивает максимальную эффективность за счет устранения нескольких протоколов, используемых для связи между сетями, что позволяет использовать меньше ресурсов операционной системы. - person Ernesto Antonio Rodriguez A.; 15.02.2018
comment
Верно. Однако я говорю о том, что, по-видимому, должен присутствовать некоторый JAR, чтобы Java знала, как обращаться с типом протокола t3. - person Ken; 19.02.2018