OBE 主页 > 10gR2 单实例 > 应用程序开发

从数据库中访问 Web 服务

本教程说明了如何将 Oracle 数据库 10g 设置为现有 Web 服务的使用者。

大约 30 分钟

主题

本教程介绍了以下主题:

概述
前提条件
总结

将鼠标置此图标上以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注意:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。您可以单击单个屏幕截图将其隐藏。

概述

本教程介绍了如何从 Oracle 数据库中调用现有 Web 服务。Web 服务是一种软件,它使用 Web 协议(例如,HTTP)上标准的、基于 XML 的消息处理协议(例如,SOAP)为客户端应用程序提供功能和可用性。

在本教程中,您将学习如何只使用一条 SQL 语句从数据库种调用现有的 Web 服务。无需学习 SOAP、WSDL、UDDI 和 HTTP。如果对数据库的发展角度有意义的话,可以使用大多数 Web 服务。本教程提供关于配置数据库和客户端工具、定位 Web 服务、标识其调用序列以及调用它的完整逐步指南。

典型的公共 Web 服务包括股票报价、天气预报、信用卡报告和认证。

返回主题列表

前提条件

开始本教程之前,您应该:

1.

完成了教程在 Windows 上安装 Oracle 数据库 10g

返回主题列表

安装 Oracle SQLJ

为了学习本教程,您需要安装 SQLJ。执行以下步骤:

1.

下载并解压缩 Oracle 数据库 10g 客户端 CD。

 

2.

通过 setup.exe 执行该安装程序。

将鼠标移到该图标上可以查看该图像

 

3.

在 Welcome 窗口中,单击 Next

将鼠标移到该图标上可以查看该图像

 

4.

对于 Installation Type 选择 Custom,然后单击 Next

将鼠标移到该图标上可以查看该图像

 

5.

确保选择了数据库 Oracle 主目录 (OraDb10g_home1)。然后单击 Next

将鼠标移到该图标上可以查看该图像

 

6.

在 Oracle Client 部分下,选择 Oracle SQLJ 并单击 Next

将鼠标移到该图标上可以查看该图像

 

7.

安装程序将验证您的系统是否满足最低要求。当完成时,单击 Next

将鼠标移到该图标上可以查看该图像

 

8.

查看您的选择,然后单击 Install

将鼠标移到该图标上可以查看该图像

 

9.

将显示进度窗口。

将鼠标移到该图标上可以查看该图像

 

10.

Oracle SQLJ 已经成功安装。单击 Exit。然后单击 Yes

将鼠标移到该图标上可以查看该图像

 

返回主题列表

设置环境变量

为了安装 Web 服务调出实用程序并访问 Web 服务,您需要确保 PATH 环境变量设置正确:

1.

选择 Start > Settings > Control Panel.双击 System

将鼠标移到该图标上可以查看该图像

 

2.

单击 Advanced 选项卡。然后单击 Environment Variables

将鼠标移到该图标上可以查看该图像

 

3.

在 System Variables 下,选择 Path,然后单击 Edit

将鼠标移到该图标上可以查看该图像

 

4.

<oracle_home>\jdk\bin 添加到该路经并单击 OK three times

将鼠标移到该图标上可以查看该图像

 

返回主题列表

安装调出实用程序

要安装 Web 服务调出实用程序,请执行以下步骤:

1.

从您的浏览器,访问以下 URL:

http://www.oracle.com/technology/sample_code/tech/java/jsp/dbwebservices.html

 

2.

向下滚动到标记为 Callout Utility for 10g (R1 + R2) RDBMS 的链接。单击鼠标右键,然后单击 Save Link As

将鼠标移到该图标上可以查看该图像

 

3.

将该文件保存在您的工作目录(例如,c:\wkdir)中,然后单击 Save

将鼠标移到该图标上可以查看该图像

 

4.

在保存该文件的位置双击 dbws-callout-utility-10R2.zip

将鼠标移到该图标上可以查看该图像

 

5.

单击 Extract

将鼠标移到该图标上可以查看该图像

 

6.

将该文件的内容提取到 <database oracle home> 目录。一定要设置 Use folder names 选项。

将鼠标移到该图标上可以查看该图像

 

7.

打开一个 DOS 窗口,设置 CLASSPATH 环境变量,使其包括以下内容:

%oracle_home%\jdbc\lib\ojdbc14.jar;
%oracle_home%\jdbc\lib\orai18n.jar;
%oracle_home%\sqlj\lib\translator.jar;
%oracle_home%\sqlj\lib\runtime12.jar;
%oracle_home%\sqlj\lib\runtime12ee.jar;
%oracle_home%\sqlj\lib\dbwsa.jar;
%oracle_home%\jdbc\lib\classes12.jar

您可以使用 set_classpath.bat 文件进行此操作。例如,如果您的 ORACLE_HOME 设置为 c:\oracle\product\10.2.0\db_1,则 set classpath 命令将如下所示:

cd c:\oracle\product\10.2.0\db_1

set classpath=.;c:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar;
c:\oracle\product\10.2.0\db_1\jdbc\lib\orai18n.jar;
c:\oracle\product\10.2.0\db_1\sqlj\lib\translator.jar;
c:\oracle\product\10.2.0\db_1\sqlj\lib\runtime12.jar;
c:\oracle\product\10.2.0\db_1\sqlj\lib\runtime12ee.jar;
c:\oracle\product\10.2.0\db_1\sqlj\lib\dbwsa.jar;
c:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.jar

将鼠标移到该图标上可以查看该图像

 

8.

输入以下命令。确保针对 SYS 用户使用了正确的口令。

loadjava -u sys/oracle -r -v -f -s -grant public -genmissing sqlj/lib/dbwsclient.jar

将鼠标移到该图标上可以查看该图像

注意没有错误。

 

返回主题列表

调用 Web 服务

要调用 Web 服务,请执行以下步骤:

1.

在您的浏览器中,输入以下 URL:

http://www.cdyne.com/developers/overview.aspx

 

2.

针对 Phone Verifier 服务,单击 Get WSDL 链接。

 

3.

注意 URL。它将用在 jpub 命令行中。

 

4.

滚到该服务端口地址的位置,注意该 URL。它将用在 jpub 命令行的末尾。

 

5.

在 DOS 命令提示符处,输入以下命令。

jpub -user hr/hr -sysuser system/oracle -proxywsdl=http://ws.cdyne.com/phoneverify/phoneverify.asmx?wsdl -proxyopts=tabfun -httpproxy=www-proxy.us.oracle.com:80 -endpoint=http://ws.cdyne.com/phoneverify/phoneverify.asmx -dir=phone

 

6.

在 DOS 命令窗口中,执行以下命令:

sqlplus /nolog
connect / as sysdba
exec dbms_java.grant_permission('HR','SYS:java.lang.RuntimePermission','setFactory','');

 

7.

注意 wsdl 页面中的参数 — 有两个。该站点通知其他进行测试的地方使用“0”作为 LicenseKey。

 

8.

要测试该服务,请执行以下命令:

connect hr/hr
select jpub_plsql_wrapper.checkphonenumber('6505067000','0') from dual;

 

9.

由于您为 jpub 程序提供了 tabfun 选项,因此已经创建了用于调用这些函数的表版本的包装函数。这意味着您发送了一个参数。 为此创建一个表并使用若干电话号码填充它,方法是在作为 HR 用户登录时执行以下语句:

create table phonetab (phone varchar2(10), license varchar2(1) default '0');
insert into phonetab (phone) values('6505067000');
insert into phonetab (phone) values('2054038957');
insert into phonetab (phone) values('7195778000');
insert into phonetab (phone) values('3052607200');

commit;

 

10.

执行以下查询,以查看插入到该表中的所有电话号码的结果:

select * from table(jpub_plsql_wrapper.to_table_checkphonenumber 
(cursor(select * from phonetab)));

 

在本教程中,您学习了如何:

返回主题列表