从JNDI查找websphere队列

时间:2013-02-01 18:01:00

标签: java-ee websphere jndi websphere-7 iiop

我需要从JNDI(Configured 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文件。

代码如下。

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应用服务器队列。

1 个答案:

答案 0 :(得分:0)

嗯......很棘手。您可以尝试打包先前使用EAR文件的客户端jar文件,并将类加载器策略更改为PARENT_LAST。