通过PL/SQL访问Web Services

2016-02-19 14:39 14 1 收藏

下面图老师小编跟大家分享一个简单易学的通过PL/SQL访问Web Services教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

    在Web Services红得发紫的今天,到处都在谈论和使用Web Services;当然,其中有不小一部分是属于业界炒作。 Oracle也始终走在技术的最前沿,早在9i时代就发布了扩展包来支持PL/SQL访问Web Services,并且在Oracle 10g版本中使得该功能变得更加强大;这都源于引入了UTL_DBWS包,其实它是封装了JPublisher,使得PL/SQL开发者只需要使用简单的几个API就能调用Web Services了。

     下面我将通过一个实例向你展示如何通过PL/SQL调用Web Services,本文的重点是PL/SQL调用Web Services实现上,对于如何发布Web Services,你可以参考本人的另一篇基础性文章《用OC4J和Axis构建Web Services》或者其他参考资料。

     首先,我们来搭建运行环境吧,你得从Oracle OTN下载并安装Oracle Database(企业版、标准版、个人版均可,但切勿安装快捷版,因为它没有提供sqlj组件及相关命令)。假如你已安装好该数据库,可跳过该步骤。

     然后,需要下载对应版本的UTL_DBWS:

     Pre 10g: dbws-callout-utility.zip 

     10g: dbws-callout-utility-10R2.zip 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

    下载完成后,需要解压该文件到oracle_install_dir/sqlj/lib目录下,我们还需要使用loadJava将这些jar文件加载到SYS schema中,供所有用户使用该扩展包,命令如下: oracle_install_dir/bin/loadjava -u sys/passWord -r -v -f -s -grant public -noverify -genmissing oracle_install_dir/sqlj/lib /dbwsclient.jar

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

     其实在Oracle的文档中是声称10g是自带UTL_DBWS包的,不过我下载最新的Oracle并完全安装后,也没有发现UTL_DBWS的半点踪影,也只好自己拷贝并执行loadjava了。

     好了,现在万事俱备,只剩写程序测试了,在编码测试之前,我们假设你已经将《用OC4J和Axis构建Web Services》文章里hellows已经部署好了,并能正常的调用sayHello方法了;当然,你发布其他的Web Services服务也同样可行的。下面我们就创建一个function来进行测试,测试代码如下: CREATE OR REPLACE FUNCTION call_sayHello (username  IN  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://localhost:8888/hellows/helloService?WSDL';
  l_service_name   := 'helloService';
  l_operation_name := 'sayHello';   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(username);   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 NULL;
END call_sayHello;        测试结果如下:  

来源:http://www.tulaoshi.com/n/20160219/1607451.html

延伸阅读
正在看的ORACLE教程是:Oracle PL/SQL语言入门基础。 PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。 PL/SQL的优点 从版本6开始PL/SQL就被可靠的整...
一、PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单的调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。然而,对于有些复杂...
正在看的ORACLE教程是:Oracle使用PL/SQL操作COM对象。PL/SQL是由Oracle公司对标准SQL进行扩展,专用于Oracle数据库中程序设计的专用语言,属第三代过程式程序设计语言。从Oracle8开始提供了直接从PL/SQL中调用外部C语言过程,允许开发人员用PL/SQL进行使用C语言编制的程序模块。从Oracle8i开始,又引入了Java程序。 在本文中主要介绍外部...
  前面已经了解了关于PL/SQL编程的基础,本文将结合一个案例来加深对这些知识点的理解。 一. 案例介绍 某数据库有两张表,是关于某公司员工资料、薪水和部门信息的,它们分别是emp表和dept表,两张表的结构如下: 要求如下: 1、按照上表结构建立相应的表,并每张表写入5组合法数据。 2、操纵相关表,使得...
标签: PHP
转自:http://blog.csdn.net/ezdevelop/archive/2005/07/08/417458.aspx 最近在做一个项目,有大量的数据需要实时更新,同时要求多台服务器可共享这些数据,类似于股票系统,因此决定使用B/S+中间层三层架构,其中使用Web Services作为中间层,原因在于,从长远角度来考虑,以后可能会增加C/S结构,所以采用Web Services是个绝...

经验教程

944

收藏

82
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部