使用Websphere MQ Explorer,我为JMS创建了一个基于file system
的新initial context
。使用新的初始上下文,我创建了一个JMS队列来连接到现有队列(当前使用非基于Java的框架访问)。
在应用程序代码中,我可以成功连接到上下文,如下所示:
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
properties.put(Context.PROVIDER_URL, "file:C://folder-name//");
try {
val ctx = new InitialContext(properties)
接下来,我创建一个QueueConnectionFactory:
val qcf = (ctx.lookup("com.ibm.mq.jms.MQQueueFactory")).asInstanceOf[QueueConnectionFactory]
但是,这会引发以下异常:
javax.naming.NameNotFoundException: com.ibm.mq.jms.MQQueueFactory
at com.sun.jndi.fscontext.RefFSContext.getObjectFromBindings(RefFSContext.java:400)
at com.sun.jndi.fscontext.RefFSContext.lookupObject(RefFSContext.java:327)
at com.sun.jndi.fscontext.RefFSContext.lookup(RefFSContext.java:146)
at com.sun.jndi.fscontext.FSContext.lookup(FSContext.java:127)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
我使用com.ibm.mq.jms.MQQueueFactory
作为连接工厂名称,因为在.bindings
文件中,有以下行:
MY.QUEUE/FactoryName=com.ibm.mq.jms.MQQueueFactory
但是这引发了异常。
在哪里定义正确的连接工厂名称?
由于
答案 0 :(得分:0)
问题已解决 - 在基于文件的上下文下(在JMS管理对象下),必须定义连接工厂。