Oracle版本:12c
OS:Linux
使用賬號:ITAMHR,普通用戶權限,已讓DBA授予了UTL_DBWS EXECUTE的權限
存盤程序如下:
create or replace procedure getITAssetData is
l_service SYS.UTL_DBWS.service;
l_call SYS.UTL_DBWS.call;
l_result ANYDATA;
l_wsdl_url VARCHAR2(100);
l_namespace VARCHAR2(100);
ESB_PWD VARCHAR2(50);
ESB_SERVICE_ID VARCHAR2(50);
ESB_SID VARCHAR2(25);
ESB_SN VARCHAR2(250);
ESB_USER VARCHAR2(25);
l_service_qname SYS.UTL_DBWS.qname;
l_operation_qname SYS.UTL_DBWS.qname;
rsCursor SYS_REFCURSOR;
l_name VARCHAR2(256);
l_input_params SYS.UTL_DBWS.ANYDATA_LIST;
begin
----對應wsdl地址
l_wsdl_url := 'http://10.10.162.36/esbservice.wsdl';
l_namespace := 'http://w3.ibm.com/gbs/ais/ei/esb';
---引數1
ESB_PWD :='DD4B';
dbms_output.put_line('1');
---引數2
ESB_SERVICE_ID :='00000000000100';
---引數3
ESB_SID :='0000';
---引數4
ESB_SN :='000020150602142247139621';
---引數5
ESB_USER :='0000';
dbms_output.put_line('2');
l_service_qname := SYS.UTL_DBWS.to_qname(l_namespace, 'EsbService');
dbms_output.put_line('3');
l_operation_qname := SYS.UTL_DBWS.to_qname(l_namespace, 'invoke');
dbms_output.put_line('4');
l_service := SYS.UTL_DBWS.create_service (wsdl_document_location => URIFACTORY.getURI(l_wsdl_url),service_name => l_service_qname);
dbms_output.put_line('5');
l_call := SYS.UTL_DBWS.create_call (service_handle => l_service,port_name => null, operation_name => l_operation_qname);
dbms_output.put_line('6');
l_input_params(1) :=ANYDATA.ConvertVarchar2 (ESB_PWD);
dbms_output.put_line('7');
l_input_params(2) :=ANYDATA.ConvertVarchar2(ESB_SERVICE_ID);
l_input_params(3) :=ANYDATA.ConvertVarchar2(ESB_SID);
l_input_params(4) :=ANYDATA.ConvertVarchar2(ESB_SN);
l_input_params(5) :=ANYDATA.ConvertVarchar2(ESB_USER);
--回傳值
l_result := SYS.UTL_DBWS.invoke(call_Handle => l_call,input_Params => l_input_params);
SYS.UTL_DBWS.release_call (call_handle => l_call);
SYS.UTL_DBWS.release_service (service_handle => l_service);
dbms_output.put_line(ANYDATA.AccessVarchar2(l_result));
----呼叫XML決議函式
OPEN rsCursor for select idAttributeOfDocElements(ANYDATA.AccessVarchar2(l_result)) from dual;
LOOP
fetch rsCursor into l_name;exit when rsCursor%NOTFOUND;
dbms_output.put_line(l_name);
end LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END getITAssetData;
輸出陳述句:
1
2
3
4
ORA-29532: Java 呼叫被未捕獲的 Java 例外錯誤終止: java.lang.IllegalAccessException: java.lang.NoClassDefFoundError
我已經按照官網的要求,將dbwsclientdb11.jar和dbwsclientws.jar放入sqlj/lib下了,并且運行了loadjava命令。
但是執行存盤程序的時候系統報“ORA-29532: Java 呼叫被未捕獲的 Java 例外錯誤終止: java.lang.IllegalAccessException: java.lang.NoClassDefFoundError”
這個錯到底是什么引起的?授權和JAR包都已經到位了啊,怎么還會說NoClassFound?
請大神指點,還有哪沒有配置正確的?或者哪里可以查看具體是哪個class有問題?十分感謝!
uj5u.com熱心網友回復:
解決了嗎 我的 也出這個問題了 怎么辦吶???uj5u.com熱心網友回復:
接近 一年的帖子了咋辦吶??
uj5u.com熱心網友回復:
ORA-29532: Java 呼叫被未捕獲的 Java 例外錯誤終止: java.lang.IllegalAccessException: java.lang.ExceptionInInitializerError轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/92138.html
標籤:開發
