Oracle Web Service 之一:把 PL/SQL 包装为 Web Service

| No Comments | No TrackBacks

Web service 的相关概念
=================================================================================
* XML: 事实上已成为信息交换的标准
* SOAP: 通过 HTTP, FTP, SMTP 之类的协议传输 XML
* WSDL: 一个 Web service 的接入点,包含使用 Web service 所需的全部信息
* UDDI: ?


Oracle 的 Web Service 能力
=================================================================================
* Oracle Database 10g / Oracle Application Server 10g 两个产品都可用来实现 Web Service
* 即可使用(Consume)Web Service,也可提供(Provide)Web Service
* Oracle Database 10g web services,即把数据库功能作为 Web Service 提供给使用者
* Oracle Database 10g web services 可利用的技术包括:PL/SQL (packages, procedures, functions, and triggers), SQL queries, SQL

DML statements, and Java stored procedures


OC4J
=================================================================================
* OC4J 是 Oracle Application Server 的组件之一
* OC4J 包括以下服务: Web Container、Enterprise JavaBean Container、JMS Server


OC4J 安装配置
=================================================================================
* 下载了 Oracle Containers for J2EE Standalone Distributions - Production Releases 10.1.3.4
  软件介绍:http://www.oracle.com/technology/tech/java/oc4j/1013/index.html
  下载地址:http://www.oracle.com/technology/software/products/ias/htdocs/utilsoft.html
 
* 此版本 OC4J 包含的内容
  The OC4J Standalone Distributions includes:
  ! an HTTP/S server
  ! all of the required J2EE 1.4 APIs and services
  ! a complete EJB 3.0 and JPA implementation,
  ! Oracle TopLink
  ! extensive Web Services capabilities
  ! and the browser-based Application Server Control Console management interface to configure the server and deploy

applications.

* 安装要求
  Java2 Standard Edition (J2SE) SDK version 5.0 (or 1.4.2)
 
* 安装
  解压到 D:\Zhengwu\Java\OC4J 目录

* 配置
  在 D:\Zhengwu\Java\OC4J\bin\oc4j.cmd 中加入两行,配置 JAVA_HOME 和 ORALCE_HOME

  set ORACLE_HOME=D:\Zhengwu\Java\OC4J
  set JAVA_HOME=D:\Zhengwu\Java\JDK6_12 
 
* 启动/停止 OC4J
  cd D:\Zhengwu\Java\OC4J\bin\
  oc4j -start
  oc4j -shutdown -port 23791 -password welcome
 
* 第一次启动提示设置 OC4J administrator 密码

  2009-3-26 16:41:11 com.evermind.server.XMLApplicationServerConfig randomizeJtaAdminPassword
  信息: Updating JtaAdmin account
  09/03/26 16:41:11 Set OC4J administrator's password (password text will not be displayed as it is entered)
  Enter password: 

  OC4J administrator 用户名为:oc4jadmin
  密码设置为:welcome

* 访问
 
  首页:http://10.10.10.103:8888 
  管理界面:http://10.10.10.103:8888/em/

* 配置数据源,连接 coLinux 虚拟机上的数据库
 
  OC4J 管理界面\管理\管理任务\服务\JDBC 资源, 创建一个数据源
  创建了命名为 DS_VZW1840 的"本机数据源","应用程序"选的是 default, "JNDI 位置"手工命名为:jdbc/DS_VZW1840

  实际上修改了 D:\Zhengwu\Java\OC4J\j2ee\home\config\data-sources.xml 文件,
  在 <data-sources> </data-sources> 之间加入了以下内容
 
  <native-data-source
    user="oraws"
    password="oraws"
    url="jdbc:oracle:thin:@10.10.10.104:1521:ORADB10G"
    login-timeout="30"
    data-source-class="oracle.jdbc.pool.OracleDataSource"
    jndi-name="jdbc/DS_VZW1840"
    name="DS_VZW1840"
  />
  

如何 create, publish PL/SQL web service
=================================================================================
1 数据库对象,见 scripts_create.sql

2 配置数据源

Database web service 的实现机制是:利用 OC4J 提供的 web services assembler tool,给 Database 功能套上一个 Java Class。
可以被套的 Database 功能包括:SQL、PL/SQL、Java Stored Procedure

3 uses the WebServicesAssembler JAR file to publish the web service using the config.xml file

set ORACLE_HOME=D:\Zhengwu\Java\OC4J
set CLASSPATH=.;%ORACLE_HOME%\webservices\lib\wsdl.jar;%ORACLE_HOME%\lib\xmlparserv2.jar;%ORACLE_HOME%\soap\lib\soap.jar

D:\Zhengwu\Java\JDK6_12\bin\java -jar %ORACLE_HOME%\webservices\lib\WebServicesAssembler.jar -config "C:\Documents and

Settings\zw1840\桌面\2009.03.24.Oracle.Web.Service\config.xml"

执行后提示:

Please wait ...
ORAWS.PKG_DBFUNC
注意:\tmp\pkg_dbfunc\db\func\place\order\pkg_dbfuncBase.java 使用了未经检查或不
安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
注意:proxy\db\func\place\order\proxy\pkg_dbfuncProxy.java 使用了未经检查或不安
全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

4 deploys the web service with the deployment name of "dbfunc."

D:\Zhengwu\Java\JDK6_12\bin\java -jar %ORACLE_HOME%\j2ee\home\admin.jar ormi://10.10.10.103 oc4jadmin welcome -deploy -file

./dbfunc.ear -deploymentName dbfunc

执行后提示:

Uploading file C:\Documents and Settings\zw1840\.\dbfunc.ear to oc4j server side

[ 2009-03-26 17:36:24.500 CST ] dbfunc 的 Application Deployer 开始。
[ 2009-03-26 17:36:24.750 CST ] 将档案复制到 D:\Zhengwu\Java\OC4J\j2ee\home\applications\dbfunc.ear
[ 2009-03-26 17:36:24.750 CST ] 初始化 D:\Zhengwu\Java\OC4J\j2ee\home\applications\dbfunc.ear 开始...
[ 2009-03-26 17:36:24.765 CST ] 解包 dbfunc.ear
[ 2009-03-26 17:36:24.812 CST ] 解包 dbfunc.ear 完成
[ 2009-03-26 17:36:24.812 CST ] 解包 dbfunc_web.war
[ 2009-03-26 17:36:24.859 CST ] 解包 dbfunc_web.war 完成
[ 2009-03-26 17:36:24.875 CST ] 初始化 D:\Zhengwu\Java\OC4J\j2ee\home\applications\dbfunc.ear 结束...
[ 2009-03-26 17:36:24.875 CST ] 启动应用程序: dbfunc
[ 2009-03-26 17:36:24.875 CST ] 初始化类加载程序
[ 2009-03-26 17:36:24.890 CST ] 初始化 EJB 容器
[ 2009-03-26 17:36:24.890 CST ] 加载连接器
[ 2009-03-26 17:36:25.046 CST ] 启动资源适配器
[ 2009-03-26 17:36:25.062 CST ] 初始化 EJB 会话
[ 2009-03-26 17:36:25.062 CST ] 提交类加载程序
[ 2009-03-26 17:36:25.062 CST ] 初始化 dbfunc_web 开始...
[ 2009-03-26 17:36:25.078 CST ] 初始化 dbfunc_web 结束...
[ 2009-03-26 17:36:25.093 CST ] 已启动的应用程序: dbfunc
[ 2009-03-26 17:36:25.140 CST ] dbfunc 的 Application Deployer 完成。操作时间: 640 msecs

5 binds the dbfunc web service to the default web site named default-web-site with the path /plsqlsample 

D:\Zhengwu\Java\JDK6_12\bin\java -jar %ORACLE_HOME%\j2ee\home\admin.jar ormi://10.10.10.103 oc4jadmin welcome -bindWebApp

dbfunc dbfunc_web default-web-site /plsqlsample

 

如何 invoke PL/SQL web service
=================================================================================
http://10.10.10.103:8888/plsqlsample/dbfunc

http://10.10.10.103:8888/plsqlsample/dbfunc?WSDL

 


参考
=================================================================================
[1] Build a PL/SQL Web Service / 创建 Oracle Web Service
    http://www.oracle.com/technology/pub/articles/price_10gws.html

[2] Consuming Web Services / 在 9i 中使用 UTL_HTTP 包访问 Web Service
    http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php

[3] UTL_DBWS - Consuming Web Services in Oracle 10g / 在 10g 中使用 UTL_DBWS 包访问 Web Service
    http://www.oracle-base.com/articles/10g/utl_dbws10g.php

[4] Oracle Containers for J2EE, OC4J
    http://www.oracle.com/technology/tech/java/oc4j

[5] Oracle Application Server
    http://en.wikipedia.org/wiki/Oracle_Application_Server

[6] Web container
    http://en.wikipedia.org/wiki/Web_container

[7] Enterprise JavaBean
    http://en.wikipedia.org/wiki/Enterprise_JavaBean

[8] Java Message Service
    http://en.wikipedia.org/wiki/Java_Message_Service
   
[9] Oracle Application Server 10g Release 3 (10.1.3.1.0) Documentation Library
    http://download.oracle.com/docs/cd/B31017_01/index.htm  
   
[10] Oracle Application Server Web Services Developer's Guide
     http://download.oracle.com/docs/cd/B31017_01/web.1013/b28974/toc.htm    


问题
=================================================================================
[1] %ORACLE_HOME%\webservices\lib\WebServicesAssembler.jar 的用法?config.xml 的规则

[2] %ORACLE_HOME%\j2ee\home\admin.jar 的用法

[3] jndi、UDDI ?

[4] 为什么 OC4J 管理界面\Web 服务里看不到新增的服务?

[5] 如何修改 OC4J 管理界面的语言为英语?

No TrackBacks

TrackBack URL: http://www.zw1840.com/mt/mt-tb.cgi/17

Leave a comment

About this Entry

This page contains a single entry by zw1840 published on March 26, 2009 9:33 PM.

北京2012年地铁规划 was the previous entry in this blog.

What Skills Does an Oracle BI Developer Need in 2009? is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.