天天看點

WebServices in Oracle 11g

環境說明:資料庫的版本為11.2.0.3(現在10G的版本用的人不多了)

作業系統:windows2003、windows2008和linux64_6.3配置的步驟都是一樣的

配置步驟:

一、下載下傳安裝包

First, download the latest copy of the dbwsclient.jar file:

二、把下載下傳的包放入到目錄/u01/app/oracle/product/OraDb11g_home1/sqlj/lib

WebServices in Oracle 11g

三、進行包的導入(步驟寫着可以用sys使用者導入,但是測試的時候sys使用者報錯很多,用了system使用者後解決)

注:windows需要先安裝java,并在oracle使用者下運作

10g R2的導入腳本

CREATE OR REPLACE Function Add_Numbers(p_Int_1 In Number, p_Int_2 In Number) Return Number As

   l_Service Utl_Dbws.Service;

   l_Call    Utl_Dbws.Call;

   l_Wsdl_Url        Varchar2(32767);

   l_Namespace       Varchar2(32767);

   l_Service_Qname   Utl_Dbws.Qname;

   l_Port_Qname      Utl_Dbws.Qname;

   l_Operation_Qname Utl_Dbws.Qname;

   l_Xmltype_In  Sys.Xmltype;

   l_Xmltype_Out Sys.Xmltype;

   l_Return      Number;

Begin

   l_Service_Qname   := Utl_Dbws.To_Qname(l_Namespace, 'Calculator');

   l_Port_Qname      := Utl_Dbws.To_Qname(l_Namespace, 'CalculatorPort');

   l_Operation_Qname := Utl_Dbws.To_Qname(l_Namespace, 'ws_add');

   l_Service := Utl_Dbws.Create_Service(Wsdl_Document_Location => Urifactory.Geturi(l_Wsdl_Url)

                                       ,Service_Name           => l_Service_Qname);

   l_Call := Utl_Dbws.Create_Call(Service_Handle => l_Service

                                 ,Port_Name      => null --  l_Port_Qname

                                 ,Operation_Name => l_Operation_Qname);

   l_Xmltype_In  := Sys.Xmltype('<?xml version="1.0" encoding="utf-8"?>

      ' || p_Int_1 || '

      ' || p_Int_2 || '

    ');

   l_Xmltype_Out := Utl_Dbws.Invoke(Call_Handle => l_Call, Request => l_Xmltype_In);

   Utl_Dbws.Release_Call(Call_Handle => l_Call);

   Utl_Dbws.Release_Service(Service_Handle => l_Service);

   l_Return := l_Xmltype_Out.Extract('//return/text()').Getnumberval();

   Return l_Return;

End;

/

總結:年末這個時間點,要靜下心來研究一個技術真不是一件容易的事情。本來不是很難的一個問題,弄的焦頭爛額。做技術請先把心靜下來;

........................................................................................................................................................................

本文作者:JOHN,某上市公司DBA,業餘時間專注于資料庫的技術管理,從管理的角度去運用技術。

ORACLE技術部落格:ORACLE 獵人筆記               資料庫技術群:367875324 (請備注ORACLE管理 )