从Tomcat使用WebLogic(t3)JMS

时间:2013-11-17 20:31:42

标签: java tomcat jms weblogic

我正在尝试在Tomcat 7下运行示例JMS使用者代码,该代码使用在远程WebLogic 12上运行的JMS队列。为此,我使用“WebLogic瘦客户端”方法(添加了wlclient.jar, wljmsclient.jar到我的类路径)。

以下是代码段:

Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://testjmsserver:8710");
Context cx = new InitialContext(ht);

ConnectionFactory cf = (ConnectionFactory)cx.lookup("jms/TestFactory");
Connection connection = cf.createConnection();

当我运行它时 - 发现工作正常,但cf.createConnection()调用卡住了一分钟,然后它抛出异常(请参阅下面的完整异常转储)。

请注意,在完全成熟的WebLogic而不是Tomcat下运行相同的代码 - 工作正常。

我做错了什么?如何找到我得到的异常的根本原因?

感谢。

1 个答案:

答案 0 :(得分:2)

好的,这就是发生的事情:

有三种方法可以使用WebLogic JMS:

  1. “完整”,即在完全成熟的WebLogic下运行客户端,或使用wlfullclient.jar。这是以前为我工作的,但在Tomcat下运行时不起作用
  2. “IIOP”隧道客户端,wlclient.jar + wljmsclient.jar,这是我在这里做的,这是不起作用的(可能是由于IIOP协议隧道的防火墙/服务器配置问题)。
  3. “T3瘦”客户端,即使用 wlthint3client.jar 运行,这是我最终开始使用它并且工作正常。
  4. 我真的很惊讶选项#3不是默认选项(甚至可能是唯一可用的选项),特别是考虑到Oracle文档说#3是最快且最好的选项(例如:{ {3}})

    所以底线是 - 如果你想在Tomcat下运行WebLogic JMS使用者,只需使用WebLogic“server / lib”文件夹中的wlthint3client.jar。