日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle调用webservice说明

發(fā)布時間:2025/5/22 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle调用webservice说明 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.???????????? 用途簡介

為什么要在Oracle中訪問WebService?在系統(tǒng)實現(xiàn)中,有時會有直接在數(shù)據(jù)庫端利用觸發(fā)器、存儲過程等方式進行數(shù)據(jù)傳遞、分發(fā)的業(yè)務,而其中可能會涉及一些業(yè)務邏輯,為了處理這些業(yè)務邏輯,并簡單起見,可以直接在觸發(fā)器或存儲過程中調(diào)用一些java類或WebService

2.???????????? 準備工作

1、首先保證Oracle為完全安裝(本文均以10.2g)

2、下載對應版本的UTL_DBWS(一個工具包dbws-callout-utility-10131.zip),解壓后放到oracle安裝目錄下的<oracle_install_dir>/sqlj/lib中;

????? 3、在命令行中利用loadjava命令(一般安裝完jdkoracle之后就會有)jar包導入oracle對應的用戶中:

loadjava -u user/pwd@dbinstance -r -v -f -genmissing dbwsclientws.jar dbwsclientdb102.jar

若為SYS用戶,命令為:

loadjava -u sys/change_on_install -r -v -f -genmissing -s -grant public dbwsclientws.jar dbwsclientdb102.jar

3.???????????? 步驟說明

前面準備工作做好之后,如果未發(fā)現(xiàn)UTL_DBWS(可以在plsql中敲入sys.若未有utl_dbws顯示,則需要進行初始化),需要運行之前下載的包中dbws-callout-utility-10131\sqlj\lib\ utl_dbws_body.sqlutl_dbws_decl.sql,這樣準備工作基本就緒,下面是調(diào)用的步驟:

1、 編寫sql函數(shù)并發(fā)布。

create or replace function FUNC_GENERATE_LOGINNAME(xmlstring VARCHAR2)
return VARCHAR2
?? AS
?????? l_service utl_dbws.SERVICE;
?????? l_call utl_dbws.call;
?????? l_result ANYDATA;
?????? l_wsdl_url VARCHAR2(
1024);
?????? l_service_name VARCHAR2(
200);
?????? l_operation_name VARCHAR2(
200);
?????? l_input_params UTL_DBWS.anydata_list;
??? BEGIN
?????? l_wsdl_url :=
'http://192.168.21.85:9080/xgxt/services/wfWebService?wsdl';
?????? l_service_name :=
'WorkflowWebServiceService';
?????? l_operation_name :=
'saveFormData';
?????? l_service := UTL_DBWS.create_service(wsdl_document_location=>URIFACTORY.getURI(l_wsdl_url),service_name=>l_service_name);

?????? l_call := UTL_DBWS.create_call(service_handle=>l_service,port_name=>NULL,operation_name=>l_operation_name);
?????? l_input_params(
1) := ANYDATA.ConvertVarchar2(xmlstring);
????????????
?????? l_result := UTL_DBWS.invoke(call_handle=>l_call,input_params=>l_input_params);
?????? UTL_DBWS.release_call (call_handle=>l_call);
?????? UTL_DBWS.release_service (service_handle=>l_service);
?????? RETURN ANYDATA.AccessVarchar2(l_result);
??? EXCEPTION
????? WHEN OTHERS THEN
??????? RETURN substr(sqlerrm,
0,2000);
??? END FUNC_GENERATE_LOGINNAME;

2、 查看結果(select func_generate_loginname(var) from dual)

對于其中出現(xiàn)的異常,最可能的就是出現(xiàn)權限不足,可以利用如下語句解決:

begin
dbms_java.grant_permission(
'XGXT', 'SYS:java.lang.RuntimePermission', 'getClassLoader', '' );
dbms_java.grant_permission(
'XGXT','SYS:java.lang.IllegalAccessException','getClassLoader', '' );
dbms_java.grant_permission(
'XGXT', 'SYS:java.lang.RuntimePermission', 'accessClassInPackage.sun.util.calendar', '' );
dbms_java.grant_permission(
'XGXT', 'SYS:java.lang.RuntimePermission', 'setFactory', '' );
dbms_java.grant_permission(
'XGXT', 'SYS:java.util.PropertyPermission', 'HTTPClient.socket.idleTimeout', 'write' );
dbms_java.grant_permission(
'XGXT', 'SYS:java.net.SocketPermission', 'localhost', 'resolve' );
dbms_java.grant_permission(
'XGXT', 'SYS:java.net.SocketPermission', '192.168.21.203:80', 'connect,resolve' );
dbms_java.grant_permission(
'XGXT', 'SYS:java.lang.RuntimePermission', 'createClassLoader', '' );
end;

4.????????????

1、以上還只是針對windows服務器,對于unix/linux,主要是一些環(huán)境變量需要配置,需要查文檔解決。

2、有幫助的語句

SELECT owner, status, count(*) FROM DBA_OBJECTS
WHERE OBJECT_TYPE=
'JAVA CLASS'
GROUP BY owner, status;
select * from User_Objects t where t.object_type like
'%JAVA_CLASS%' and object_name like '%DbwsProxy%';

SELECT?? TEXT?? FROM?? ALL_SOURCE??
WHERE?? TYPE?? =??
'PACKAGE'?? and owner like '%XGXT%'

總結

以上是生活随笔為你收集整理的Oracle调用webservice说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。