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 文件。

代码如下。

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

4

1 回答 1

0

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

于 2013-02-01T18:40:21.657 回答