使用基于文件系统的初始上下文连接到JMS队列

时间:2016-05-09 14:28:53

标签: jms ibm-mq

使用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

但是这引发了异常。

在哪里定义正确的连接工厂名称?

由于

1 个答案:

答案 0 :(得分:0)

问题已解决 - 在基于文件的上下文下(在JMS管理对象下),必须定义连接工厂。