gpt4 book ai didi

glassfish - 使用故障转移协议(protocol)时使用 genericra 集成 activemq 和 glassfish 时出现问题

转载 作者:行者123 更新时间:2023-12-03 08:14:46 24 4
gpt4 key购买 nike

我正在尝试使用随 glassfish 2.1 提供的 genericra 资源适配器在 glassfish 中使用 activemq。我找到了几页有用的信息,包括 http://activemq.apache.org/sjsas-with-genericjmsra.html .

我实际上已经取得了成功,并且能够让 MDB 使用 activemq 作为它们的 JMS 提供程序,但是我遇到了一个问题,因为我正在尝试进行一些更复杂的配置。我想设置一个主从配置,这将要求我的客户使用故障转移的 brokerURL:(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)

只是想知道以前是否有人处理过这个问题。还想知道是否有比使用通用资源适配器更好的方法来与 glassfish 集成。

编辑:我忘记在第二个 tcp 之后转义冒号,但不幸的是,这并没有解决我看到的问题。

最佳答案

我最终切换到使用 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>

将其连接到 spring 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>

关于glassfish - 使用故障转移协议(protocol)时使用 genericra 集成 activemq 和 glassfish 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com