我需要在Oracle中创建Java存储过程。我使用IBM的示例类从Java EE环境之外的简单类创建MQ消息。我已经自己测试了这个类,它正在工作。
My Oracle vesrion是11i。
当我尝试将简单应用程序中使用的jar加载到Oralce以及我的简单类时,即使相同的jar工作于测试用例,我也会收到有关未找到类的错误。我坚持了一个多星期,我非常希望有人能够帮助我。
我得到的各种错误都是来自客户端上带有loadjava实用程序的 -v 标志
在第326/327行,您会看到:
创建:class com / ibm / mq / jms / admin / AP loading:class COM / IBM / MQ / JMS /管理/ AP
然后在从第6224行开始到结束时,它表示上述类无法解析:
com / ibm / mq / jms / admin / APRCXI:ORA-29534:引用对象 无法解析xxxx.com/ibm/mq/jms/admin/AP com / ibm / mq / jms / admin / APSDX: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 选项和一些额外的jar(列表我找到here),但是对于另一个类仍然会出现类似的错误。
我遇到的其他问题是,如果我收到错误并尝试使用Oracle的dropjava命令,它也不起作用。
我也从this链接看到,这个人是成功的,但不幸的是,他/她没有说明他们如何使用loadjava加载罐子。
如果我可以提供任何其他信息,请告诉我。
如果有人知道如何让Java存储过程使用IBM MQ与Oracle 11i一起使用,我真的很感激帮助。
答案 0 :(得分:1)
在this博客条目中找到详细答案。我试过了,它对我有用。
答案 1 :(得分:0)
在Oracle中没有CLASSPATH的概念,因此标准的MQ客户端安装是无用的。您只能在数据库模式中加载应用程序的jar引用。使用-r
选项加载时,将解析类。您可以使用-r -Resolver
(架构)进一步指定自己的解析。 (查看Oracle文档的确切格式)。所以实际上数据库模式就成了类路径。
使用适用于Java的Websphere MQ类会带来许多问题,您必须确保Oracle JDK版本处于适当的支持级别以连接到所选的MQ服务器版本。检查websphere MQ Vx.x的系统要求。您应该找到IBM的Web引用。检查对java分类的MQ的支持。
我在尝试使用Oracle 10和JDK 1.4.2连接到Mq时遇到了这样的问题。我不得不使用JDK 1.4.x重新编译我的Java代码。这不起作用,我认为这是因为我连接到MQ 7.0.1.7,它最少需要JRE 1.7。