我在本地安装了openMQ,运行良好。我使用下面的代码来使用JNDI查找来获取QueueConnectionFactory。
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.RefFSContextFactory");
env.put(Context.PROVIDER_URL, "file:///C:/objectstore");
Context ctx = new InitialContext(env);
QueueConnectionFactory myFactory = (QueueConnectionFactory) ctx.lookup("MyQueueConnection");上面的内容返回给我连接工厂,我也从那里访问replyQueue和requestQueue。
我就是这样设置队列的
imqobjmgr add -l "MyQueueConnection"" -j "java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContext
Factory" -j "java.naming.provider.url=file:///C://objectstore" -t qf -o "imqAddressList=mq://localhost:7676/jms"
imqobjmgr add -l "cn=DEVL.REQUEST" -j "java.naming.factory.initial=com.sun.jndi.fscontext.RefFSCon
textFactory" -j "java.naming.provider.url=file:///C://objectstore" -t q -o "imqDestinationName=requestQueue"
imqobjmgr add -l "cn=DEVL.REPLY" -j "java.naming.factory.initial=com.sun.jndi.fscontext.RefFSConte
xtFactory" -j "java.naming.provider.url=file:///C://objectstore" -t q -o "imqDestinationName=replyQueue"我的问题是:
QueueConnectionFactory来自openMQ
坐在另一台服务器上?
我不是在GlassFish中运行GlassFish,而是自己运行openMQ (imqbrokerd.exe)。
发布于 2011-11-29 17:34:11
在我所有的挖掘中,我没有发现任何迹象表明OpenMQ提供了一个单独使用的JNDI提供程序。看起来这是由GlassFish提供的。这意味着您需要使用像LDAP这样的东西作为对象存储,我还没有这样做。
目前,我“欺骗”了将.binding文件(在您的例子中是c:\objectstore中的文件)复制到JMeter可以看到的文件系统,这样我就可以引用它了。只要您使用实际的机器名称或IP,而不是本地主机,就可以工作,但显然不会将其用于生产。
在Java方面,您可以完全放弃JNDI,直接实例化com.sun.messaging.ConnectionFactory。我用Spring注入连接工厂。请注意,我必须包括我自己的一个非常简单的OpenMQConnectionFactoryFactory (从https://wikis.oracle.com/display/GlassFish/OpenMQSpringConnectionConsumer窃取),因为com.sun.messaging.ConnectionFactory不是一个bean。
<bean id="connectionfactoryfactory"
class="myownlibrary.messaging.factory.OpenMQConnectionFactoryFactory">
<property name="properties">
<props>
<prop key="imqAddressList">qa29-vm:7676</prop>
<prop key="imqAddressList">qa30-vm:7676</prop>
<prop key="imqReconnectAttempts">-1</prop>
</props>
</property>
</bean>
<bean id="connectionfactory"
factory-bean="connectionfactoryfactory"
factory-method="constructConnectionFactory"/>
<bean id="jmsFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="connectionfactory" />
</bean>https://stackoverflow.com/questions/6171457
复制相似问题