3

グラスフィッシュ 2.1 で提供されるジェネリック リソース アダプターを使用して、グラスフィッシュで activemq を使用しようとしています。http://activemq.apache.org/sjsas-with-genericjmsra.htmlなど、役立つ情報が記載されたページをいくつか見つけました。

私は実際に成功し、JMS プロバイダーとして ActiveMQ を使用するように MDB を取得することができましたが、より複雑な構成を行おうとしているときに問題が発生しています。クライアントがフェイルオーバーのブローカーURLを使用する必要があるマスター/スレーブ構成をセットアップしたい:(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 が発生しています。これは正常に機能するため、2 つの URL の間のコンマが原因であると思われます。

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

誰かが以前にこの問題に対処したことがあるかどうか疑問に思っています。また、汎用リソース アダプターを使用するよりも、glassfish と統合するためのより良い方法があるかどうかも疑問に思っています。

編集: 2 番目の tcp の後にコロンをエスケープするのを忘れましたが、残念ながら、私が見ている問題は解決しませんでした。

4

3 に答える 3

3

lib/optional ディレクトリにある activemq が提供するリソース アダプタを使用するように切り替えました。

誰かが興味を持っている場合に備えて、これを機能させるために私が従った手順は次のとおりです

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>
于 2011-01-18T20:52:55.837 に答える
1

これはgenericjmsraの既知の欠陥です。http://java.net/jira/browse/GENERICJMSRA-50を参照してください

コメントでは、ObjectBuilder.javaの修正が提案されています。

于 2012-07-04T12:30:44.193 に答える
0

2 番目の uri でコロンをエスケープしていないようです。

于 2011-01-17T04:20:19.107 に答える