Проблемы с использованием Genericra для интеграции ActiveMQ и Glassfish при использовании протокола отказоустойчивости

StackOverflow https://stackoverflow.com/questions/4696814

Вопрос

Я пытаюсь использовать ActiveMQ в Glassfish, используя адаптер Genericra Resource, предоставленную Glassfish 2.1. Я нашел несколько страниц с полезной информацией, включая http://activemq.apache.org/sjsas-with-genericjmsra.html.

У меня на самом деле был успех, и я смог заставить MDBS использовать ActiveMQ в качестве их поставщика JMS, но я сталкиваюсь с проблемой, поскольку я пытаюсь сделать более сложную конфигурацию. Я хочу настроить конфигурацию мастер-рабов, которая потребовала бы, чтобы мои клиенты использовали Brokerurl Failover: (TCP: // Broker1: 61616, TCP: // Broker2: 61616). Чтобы сделать это, я установил следующее свойство при вызове Asadmin create-resource-adapter-config (Я должен сбежать '=' и ':'):

ConnectionFactoryProperties=brokerURL\=failover\:(tcp\://127.0.0.1\:61616,tcp\://127.0.0.1\:61617)

Тем не менее, теперь я получаю StringIndexoutOfBoundSexception, когда мое приложение запускается. Я подозреваю, что запятая между двумя URL -адресами - это виновник, так как это работает нормально:

brokerURL\=failover\:(tcp\://127.0.0.1\:61616)

Просто интересно, имел ли кто -нибудь этот вопрос раньше. Также интересно, есть ли лучший способ интегрировать со стеклянной рыбкой, чем использование общего адаптера ресурсов.

РЕДАКТИРОВАТЬ: Я забыл избежать толстой кишки после второго TCP, но, к сожалению, это не решило проблему, которую я вижу.

Это было полезно?

Решение

В итоге я переключился, чтобы использовать адаптер ресурсов, предоставленный ActiveMQ, который поступает в каталоге LIB/необязательный.

В случае, если кто -то заинтересован, вот шаги, которые я выполнил, чтобы заставить его работать

asadmin create-resource-adapter-config --property ServerUrl=failover\:(tcp\://localhost\:61616,tcp\://localhost\:61617) activemqra

asadmin deploy --name activemqra <path to activemq-rar-5.4.2.rar>

Затем создавать ресурсы:

asadmin create-connector-connection-pool --raname --connectiondefinition javax.jms.ConnectionFactory --transactionsupport XATransaction jms/MyQueueFactoryPool

asadmin create-connector-resource --poolname jms/MyQueueFactoryPool jms/MyQueueQFactory

asadmin create-admin-object --raname activemqra --restype javax.jms.Queue --property PhysicalName=MyQueue jms/MyQueue

Чтобы подключить MDB, мне пришлось добавить это в Sun-ejb-jar.xml

<mdb-resource-adapter>
                <resource-adapter-mid>activemqra</resource-adapter-mid>
                <activation-config>
                    <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>destination
                        </activation-config-property-name>
                        <activation-config-property-value>MyQueue
                        </activation-config-property-value>
                    </activation-config-property>
                </activation-config>
            </mdb-resource-adapter>

Чтобы подключить это к весной Jmstemplate:

<bean id="ConFac" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>jms/MyQueueQQFactory</value>
        </property>
        <property name="resourceRef">
            <value>true</value>
        </property>
    </bean>
    <bean id="myqueue" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>jms/MyQueue</value>
        </property>
        <property name="resourceRef">
            <value>true</value>
        </property>
    </bean>
    <bean id="mdbTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="conFac" />
        <property name="defaultDestination" ref="myqueue" />
    </bean>

Другие советы

Это известный дефект в genericjmsra, см. http://java.net/jira/browse/genericjmsra-50

В комментариях предложено исправление в ObjectBuilder.java.

Я выглядит так, как будто вы не избегаете толстой кишки во втором URI.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top