WebServices in Oracle 11g

前言:本文档介绍ORACLE通过UTL_DBWS去调用Web Serices的服务,关于web service网上有一篇文档写的不错,http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html,一次业务的需要也要用来这个服务,以下是整个配置的过程。

 

附:http://oracle-base.com/articles/10g/utl_dbws-10g.php或http://blog.csdn.net/cai_xingyun/article/details/40951595(ORACLE官方的配置步骤),由于配置的过程中发现了一点点的不一样,就因为一点点的不一样,让我连续两天吃不好、睡不好,所以我觉得很有必要把整个明细的步骤写下来:

 

环境说明:数据库的版本为11.2.0.3(现在10G的版本用的人不多了)

操作系统:windows2003、windows2008和linux64_6.3配置的步骤都是一样的

 

配置步骤:

一、下载安装包

In a previous article I presented a method for Consuming Web Services using a basic SOAP implementation. This article provides similar functionality, but this time using the UTL_DBWS package, which is essentially a PL/SQL wrapper over JPublisher.

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

 

二、把下载的包放入到目录/u01/app/oracle/product/OraDb11g_home1/sqlj/lib

image

 

三、进行包的导入(步骤写着可以用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_Wsdl_Url  := '
http://oracle-base.com/webservices/server.php?wsdl';
   l_Namespace := 'http://oracle-base.com/webservices/';

   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管理 ) 

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

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12679300/viewspace-1436038/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12679300/viewspace-1436038/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值