gpt4 book ai didi

java - 在jboss 7中为Activemq配置池连接jndi

转载 作者:行者123 更新时间:2023-12-01 05:12:39 58 4
gpt4 key购买 nike

我正在使用 ActiveMq 5.4.3,并且我正在使用队列。我有我的生产者作为一个Web服务(不是Ejb),并且我已经在jboss服务器中部署了Web服务 war 。我的服务运作良好。但每次调用服务时,都会创建和关闭连接和 session 。我想克服这个瓶颈,以便在启动服务器时只创建一次连接和 session 。我怎样才能做到这一点。我不希望 jboss 充当 mdb 容器。我已将 activemq-rar 部署在 jboss 的部署文件夹中,并将以下子系统添加到我的standalone.xml

<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">
<resource-adapters>
<resource-adapter>
<archive>
activemq-ra.rar
</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:jboss/activemq/QueueConnectionFactory" enabled="true" use-java-context="true" pool-name="QueueConnectionFactory" use-ccm="true">
<config-property name="prefill">
false
</config-property>
<config-property name="max-pool-size">
20
</config-property>
<config-property name="ServerUrl">
tcp://localhost
</config-property>
<config-property name="use-strict-min">
false
</config-property>
<config-property name="min-pool-size">
5
</config-property>
</connection-definition>
</connection-definitions>
<admin-objects>
<admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="activemq/queue/outbound" enabled="true" use-java-context="true" pool-name="outbound">
<config-property name="Type">
javax.jms.Queue
</config-property>
<config-property name="Properties">
PhysicalName=queue.outbound
</config-property>
</admin-object>
<admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="activemq/topic/inbound" enabled="true" use-java-context="true" pool-name="inbound">
<config-property name="Type">
javax.jms.Topic
</config-property>
<config-property name="Properties">
PhysicalName=topic.inbound
</config-property>
</admin-object>
</admin-objects>
</resource-adapter>
</resource-adapters>
</subsystem>

现在,当我尝试使用 JNDI 获取连接(下面的代码)时PooledConnectionFactory connectionFactory = (PooledConnectionFactory) context.lookupLink("java:jboss/activemq/QueueConnectionFactory");

我收到的错误为

javax.naming.NameNotFoundException: org.apache.activemq.ra.ActiveMQManagedConnectionFactory -- service jboss.naming.context.java."org.apache.activemq.ra.ActiveMQManagedConnectionFactory 

最佳答案

很简单,使用 PooledConnectionFactory。

您可以通过代码来完成此操作,也可以通过手头的任何 XML 配置来完成:

ConnectionFactory cf = new PooledConnectionFactory(new ActiveMQConnectionFactory("tcp://localhost:61616"));

Here是一个 XML 示例用法(针对 spring,但您可能会从中得到启发)

然后它就像任何其他连接工厂一样。

Connection conn = cf.createConnection();
Session sess = conn.createSession..

ActiveMQ aspects on chaching (mostly spring related)

关于java - 在jboss 7中为Activemq配置池连接jndi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840486/

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