我是JMS和Websphere服务器的新手,我正尝试从Java代码访问Websphere Application Server 8上配置的JMS队列。我无法确切了解应为Context.INITIAL_CONTEXT_FACTORY设置什么值。它应该是该类的完全限定的类名称还是特定于应用程序服务器的名称?
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
environment.put(Context.PROVIDER_URL, "iiop://localhost:9081");
在将Context.INITIAL_CONTEXT_FACTORY的设置值设置为完全限定的类名,即com.ms.test.Demo时,我收到了NoInitialContextException。
PFB我正在使用的代码-
package com.jms.test;
import java.util.Hashtable;
import javax.jms.Queue;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Demo {
public static void main(String[] args) throws NamingException {
System.out.println("Start.....");
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.jms.test.Demo");
environment.put(Context.PROVIDER_URL, "iiop://localhost:9081");
//String pUrl = System.getProperty(Context.PROVIDER_URL);
//System.out.println("*******"+pUrl+"********");
InitialContext ctx = new InitialContext(environment);
Queue queue = (Queue) ctx.lookup("jms/TestQ111200");
System.out.println("*** Queue is *** "+queue.toString());
}}
我已经使用以下链接中给出的步骤在Websphere Application Server中进行了JMS配置:
http://pic.dhe.ibm.com/infocenter/iisinfsv/v8r1/index.jsp?topic=/com.ibm.swg.im.iis.infoservdir.user.doc/topics/t_isd_user_setting_up_jms_in_was.html
最佳答案
连接到WebSphere时,始终使用以下内容,而不是您自己的类。
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
需要正确连接到WAS。
对于第二个属性,您需要提供引导端口而不是http。通常是
2809
,在SystemOut.log
中查找以下消息:00000001 NameServerImp A NMSV0018I: Name server available on bootstrap port 2809.
您还将需要特定的jar来让您的客户端连接到WAS JMS。看到
Installing and configuring the Thin Client for JMS with WebSphere Application Server
关于java - 如何设置Context.INITIAL_CONTEXT_FACTORY? NoInitialContextException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26892729/