通过PL/SQL访问Web Services

2013_Silver

2013_Silver

2016-02-19 14:39

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

    在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》或者其他参考资料。

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

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

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

     Pre 10g: dbws-callout-utility.zip 

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

(本文来源于图老师网站,更多请访问https://m.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

     其实在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;        测试结果如下:  

展开更多 50%)
分享

猜你喜欢

通过PL/SQL访问Web Services

编程语言 网络编程
通过PL/SQL访问Web Services

PHP and Web Services

PHP
PHP and Web Services

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

不通过dsn访问sql server

SQLServer
不通过dsn访问sql server

面向Microsoft SQL Server 2005的本机XML Web Services概述

编程语言 网络编程
面向Microsoft SQL Server 2005的本机XML Web Services概述

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

PL/SQL number型数据

编程语言 网络编程
PL/SQL number型数据

PL/SQL基础:阶层查询

编程语言 网络编程
PL/SQL基础:阶层查询

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Oracle10g中过程(PROCEDURE )重建的增强

Oracle10g中过程(PROCEDURE )重建的增强

JavaScript实例教程(十)页面窗口的由小变大

JavaScript实例教程(十)页面窗口的由小变大
下拉加载更多内容 ↓