2013-02-01 58 views
0

我需要从JNDI(配置的SIB)中查找一个websphere 7队列。首先我写了一个访问远程websphere服务器的客户端程序。我添加了com.ibm.ws.admin.client,com.ibm.ws.runtime,com.ibm.ws.sib.client.thin.jms和com.ibm.ws.webservices.thinclient jar文件。从JNDI查找websphere队列

代码如下。

Hashtable<String, Object> env = new Hashtable<String, Object>(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, 
        "com.ibm.websphere.naming.WsnInitialContextFactory"); 
env.put(Context.PROVIDER_URL, "iiop://localhost:2809"); 

由于我以远程客户端的身份访问它,因此无法正常工作。因此我加了这个,

env.put("java.naming.corba.orb",org.omg.CORBA.ORB.init((String[])null,null)); 

这个工作正常。然后我删除了上面的行并将目标JDK移动到IBM JDK。在这种情况下,它也没有任何问题。

当我需要访问服务器程序中的上述队列时,会遇到实际问题。这在单独的JVM上运行。当我尝试访问远程JNDI队列时,它给了我一个类转换异常。我相信它是因为它加载默认的sun ORB实现而不是IBM。我添加了com.ibm.ws.orb jar,但仍然没有运气。它加载Sun ORB。因此它给了类抛出异常。

像上面一样,我没有加载org.omg.CORBA.ORB的工具。有什么办法可以运行吗?我错过了什么吗?任何来自Websphere 8.5的反馈也是受欢迎的。

注意:这不是Websphere MQ。我指的是Websphere应用程序服务器队列。

回答

0

嗯......棘手。您也许可以尝试打包之前与EAR文件一起工作的客户机jar文件,并将类加载器策略更改为PARENT_LAST。

+0

显然我需要知道我是否在上面正确地执行操作。我相信应该有其他方法来实现这一点。 – Dilshan