【发布时间】:2012-07-04 06:56:29
【问题描述】:
我需要在 Oracle 中创建一个 Java 存储过程。我使用 IBM 的示例类从 Java EE 环境之外的简单类创建 MQ 消息。我已经单独测试了这个类并且它正在工作。
我的 Oracle 版本是 11i。
当我尝试添加简单应用程序中使用的 jar 以与我的简单类一起加载到 Oralce 时,我收到有关找不到类的错误,即使相同的 jar 可用于测试用例。我被这个问题困扰了一个多星期,非常希望有人能够帮助我。
我遇到的各种错误是来自客户端上带有 loadjava 实用程序的 -v 标志
在第 326 / 327 行,您会看到:
创建:类 com/ibm/mq/jms/admin/AP 加载:类 com/ibm/mq/jms/admin/AP
然后从第6224行开始到end,表示上述类无法解析:
com/ibm/mq/jms/admin/APRCXI:ORA-29534:引用的对象 xxxx.com/ibm/mq/jms/admin/AP 无法解决 com/ibm/mq/jms/admin/APDX:ORA-29534:引用的对象 xxxx.com/ibm/mq/jms/admin/AP 无法解决退出:错误 解析类 com/ibm/mq/jms/admin/AP
我使用的命令是:
c:\Oracle\product\11.2.0\client_1\bin\loadjava.bat -f -jarsasdbobjects -prependjarnames -stoponerror -u xxxx/yyyy@SID -v -resolve lib\jms.jar lib\com.ibm.mqjms.jar lib\com.ibm.mq.jmqi.jar lib\dhbcore.jar lib\fscontext.jar src\com\test\javasp\mq\JmsProducer.java
我还尝试使用 -genmissing 选项和一些额外的 jars(我找到的列表 here),但对于不同的类仍然会出现类似的错误。
我面临的其他问题是,如果我收到错误并尝试使用 Oracle 的 dropjava 命令,它也不起作用。
我也从this链接看到,这个人成功了,可惜他/她没有说明他们是如何使用loadjava加载jar的。
如果我可以提供任何其他信息,请告诉我。
如果有人对如何获取 Java 存储过程以使用 IBM MQ 与 Oracle 11i 一起使用有任何想法,我将非常感谢您的帮助。
【问题讨论】:
-
IBM WMQ 类已多次重新打包。您使用的是哪个版本的 WMQ 客户端?
-
如果您安装完整的 WMQ 客户端,那么您将拥有 dspmqver、trace 和 JMSAdmin(用于创建和编辑管理对象)以及应用维护和补丁的能力。请参阅stackoverflow.com/questions/10957612/… 获取下载位置。与其他应用程序捆绑在一起的 WMQ 类不一定是完整的功能或您可以对其进行维护的东西。如果您不想安装完整的客户端,我无法帮助,但也许这里的其他人可以。
-
我没有做太多 MQ 开发(这是第一个,也是使用示例)所以,如果我的问题听起来有点奇怪,请原谅我。我得到了这个项目的项目交换,其中包括 jars,但我认为(被告知)它们适用于 MQ 7。所以,我认为这将使它成为客户端版本 7.0。有办法让我确认吗?
-
抱歉,当您回复我之前的评论时,我正在编辑评论。您的第二条评论有几个问题 - 我需要从该客户端获取所有 jar,还是只需要让我当前的程序作为 java 应用程序运行的那些 jar。另外,我下载 WMQ 7 jar 中的哪个次要版本是否重要。如果为真,我如何从我的应用程序中找出我需要使用哪一个来进行 MQ 安装?非常感谢您的帮助
-
IBM 支持的方法是运行安装程序,然后将您的 CLASSPATH 指向安装客户端 jar 的目录。如果您获得 v7.1 或 v7.5,那么您可以选择在主机上的任何位置安装(尽管您仍然需要是 root 或管理员才能执行安装)。我会选择v7.5。它可以连接到任何版本的 WMQ 并包含对已知错误的修复以及提供最佳性能。有关安装和验证指南,请参阅上一条评论中的信息中心链接。正确设置 CLASSPATH 的一种简单方法是运行 setjmsenv 命令,然后运行
echo CLASSPATH。
标签: java oracle jms ibm-mq procedure