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 管理界面的语言为英语?