2

我需要在 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(我在此处找到的列表),但对于不同的类仍然会出现类似的错误。

我面临的其他问题是,如果我收到错误并尝试使用 Oracle 的 dropjava 命令,它也不起作用。

我也从这个链接中看到,这个人是成功的,但不幸的是,他/她没有说明他们是如何使用 loadjava 加载 jar 的。

如果我可以提供任何其他信息,请告诉我。

如果有人对如何让 Java 存储过程使用 IBM MQ 与 Oracle 11i 一起工作有任何想法,我将非常感谢您的帮助。

4

2 回答 2

1

在此博客条目中找到了详细答案。我试过了,它对我有用。

于 2013-06-15T23:46:53.423 回答
0

在 Oracle 中没有 CLASSPATH 的概念,因此标准的 MQ 客户端安装是无用的。您只能在数据库架构中加载应用程序引用的 jars。加载该-r选项时会解析类。-r -Resolver您可以使用(模式)进一步指定您自己的解决方案。(查看 Oracle 文档以了解确切的格式)。所以实际上数据库模式变成了类路径。

使用 Java 的 Websphere MQ 类会带来许多问题,您必须确保 Oracle JDK 版本处于适当的支持级别才能连接到所选的 MQ 服务器版本。检查 websphere MQ Vx.x 的系统要求。您应该找到 IBM 的 Web 参考资料。检查对 MQ 为 java 分类的支持。

目前我在尝试使用 Oracle 10 和 JDK 1.4.2 连接到 Mq 时遇到这样的问题。我不得不使用 JDK 1.4.x 重新编译我的 Java 代码。这不起作用,我认为这是因为我连接到至少需要 JRE 1.7 的 MQ 7.0.1.7。

于 2014-02-24T17:34:13.697 回答