问题描述
经过数小时的详尽探索以及Oracle文档和支持页面,我们无法解决此问题。
实用程序:loadjava
操作:尝试使用loadjava加载.jar文件,并尝试使用PL / sql Api调用java类。这个java类仅向JMS队列添加一个值,并返回状态为SUCCESS的String。注意:Hello.java工作成功。
问题:使用loadjava成功加载后,通过Oracle PL / sql Function执行时,出现以下错误。
ORA-29532:Java调用因未捕获的Java异常而终止:javax.jms.JMSRuntimeException:无法实例化类:weblogic.jndi.WLInitialContextFactory
我们的试验:我们认为它缺少一些Weblogic库。因此,我们使用loadjava实用程序单独添加了wlthint3client.jar。我们还尝试在“ ORACLEHOME \ jdk \ jre \ lib \ ext”下添加wlthint3client.jar,以便在实例加载时将其拾取。但是错误不断发生。我们将此内容包含在我们原始jar的同一部分中。
我们回到基础知识,创建了Hello.java和Hello.class并使用loadjava加载了它们。使用PL / sql函数称为此类,它可以成功运行。仅当我们加载.jar文件时,它才会引发ContextFactory错误。
步骤1:在ORACLEHOME命令提示符下:
loadjava -user userschema/password@instance -verbose -force JMessenger-1.0.jar.
加载成功。以下是输出:
Classes Loaded: 97
Resources Loaded: 13
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 0
Errors: 0
CREATE OR REPLACE FUNCTION FUN_CALL_JAVA_TST RETURN VARCHAR2 AS
LANGUAGE JAVA NAME 'xyz.abc.messenger.producer.MessageProducer.testPing() return java.lang.String';
/
第3步:我们写了一个呼叫者:
declare testoutput varchar2(100);
begin testoutput := FUN_CALL_JAVA_TST();
dbms_output.put_line(testoutput);
exception when others then
dbms_output.put_line(sqlerrm);
end;
相同的错误不断出现。
-
OracleHome安装中的Java版本:Java版本“ 1.8.0_201”
-
Java(TM)SE运行时环境(内部版本1.8.0_201-b09)
-
Java HotSpot(TM)64位服务器VM(内部版本25.201-b09,混合模式)。
因此,我们确保使用正确的weblogic版本库。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)