1.
|
通过执行位于目录 <SAMPLE_HOME>/RefCursor/config 中的文件 CreateProcedure.sql 创建 PL/SQL 过程。
要执行脚本 CreateProcedure.sql,需按 hr/hr 连接到您的数据库,并根据 SQL 提示符运行以下命令
SQL>@<SAMPLE_HOME>/RefCursor/config/CreateProcedure.sql
此操作将创建一个带有函数 getSubordinates 的新程序包 EmpData 函数。
|
2.
|
确保您的 CLASSPATH 中有以下内容,这些内容为 JPublisher 所需,用来编译 SQLJ 文件。
-
SQLJ translator classes (translator.jar present at <OC4J_HOME> \sqlj\lib)
-
SQLJ runtime classes (runtime12ee.jar present at <OC4J_HOME> \sqlj\lib)
-
JDBC classes (classes12dms.jar <OC4J_HOME> \jdbc\lib)
|
3.
|
下一步使用 JPublisher 为上面创建的程序包生成 java (SQLJ) 文件。确保 PATH 中有 jpub。jpub 位于<OC4J_HOME> \bin 目录中。通过某个方便的目录给出以下命令,以生成 Java 文件。
>jpub -sql=EMPDATA:EmpBase:EmpImp -package=EmpData -user=hr/hr -url=jdbc:oracle:thin:@::
其中:
|
EMPDATA |
数据库中程序包的名称 |
|
EmpBase |
JPub 在此生成其代码的基本类 |
EmpImp
|
存放用户指定代码的初始版本的 EmpImp.sqlj |
|
安装数据库的主机名称
|
|
数据库的 TNS 监听器端口
|
|
数据库名称
|
此操作将在同一目录中创建 EmpBase.sqlj 和 EmpImp.sqlj。JPublisher 将其代码置于 EmpBase.sqlj 中并创建一个 EmbImp.sqlj 的初始版本,在此,您也可以用自己的代码覆盖 EmpBase.sqlj 中现有的方法。
|
4.
|
您现在已有了一个可返回 REF CURSOR 的 PL/SQL 方法。JPublisher 会自动将返回类型映射为 java.sql.ResultSet。您将在 EmpBase 类中拥有以下方法:
public java.sql.ResultSet getsubordinates (String firstname,String lastname)
ResultSet 类型不是一个可接受的 Web 服务参数。您需要创建一个函数,将 ResultSet映射为可当作 Web 服务参数接受的类型。您可将 ResultSet 映射为 String[ ]。要做到这一点,您需要使用一种可将 ResultSet 作为 String[ ] 返回的新方法 EmpImp.sqlj,如:
public String[] getSubordinatesNames(String firstName, String lastName)
您现在可以将此映射方法添加到 EmpImp.sqlj 中。另外,保证要有用于调用各个超类型构造符的构造符。
最后,此类应该与随示例 jar 一起提供的 EmpImp.sqlj 相似。
|
| 5.
|
下一步,需要确保在进行 Web 服务所提供的操作时省略 getsubordinates(字符串名)方法,取而代之的是 getSubordinatesNames(字符串名)方法。要达到此目的,需定义一个接口,比如 EmpInter,让它正好包含您要发布的那些方法。 您的接口必须与随示例一起提供的 EmpInter.java 中的某个接口相似。
|
6.
|
导航至已创建了 sqlj 和 java 文件的目录。编译 SQLJ 文件和 java 文件以创建这些类文件。确保 PATH 中有 sqlj.exe(位于<OC4J_HOME> \bin 目录中)。
>javac -d .*.java
>sqlj -d .*.sqlj
此操作将创建一个目录 EmpData 并将所有的类文件置于其中。
|
7.
|
创建 EmpData 目录的 JAR,比如 EmpData.jar。
>jar cvfM EmpData.jar EmpData
|
8
|
现在您可以使用 Web 服务汇编程序来创建可部署的 Web 服务企业应用档案 (EAR) 文件。 WebServicesAssembler.jar 位于 <OC4J_HOME> \webservices\lib 中
您需要通过配置文件 config.xml 提供对 WebServicesAssembler.jar 的输入。示例 config.xml 位于 <SAMPLE_HOME>\RefCursor\config.xml 中。您可以将此 config.xml 和在上一个步骤中创建的 EmpData.jar 复制到 <OC4J_HOME> \webservices\lib 中。
config.xml 包含要部署的 jar、实现服务的类、接口文件、数据源等方面的信息。 提供的数据源如下所示。
jdbc/ora9idb
确保将数据源的名称更改为可连接到示例模式的 HR 用户中的 EMPDATA 程序包的那一个。如果此数据源不存在,您可以通过在<OC4J_HOME> \j2ee\home\config\data-sources.xml 中创建以下条目提供新的数据源名称。
class="oracle.jdbc.pool.OracleDataSource" name="ora9idb" location="jdbc/ora9idb" xa-location="jdbc/xa/ora9idbXADS" ejb-location="jdbc/ora9idb" connection-driver="oracle.jdbc.driver.OracleDriver" username="hr" password="hr" url="jdbc:oracle:thin:@::" inactivity-timeout="30" />
注意:要为主机名、端口和 SID 添加有效值
现在给出以下命令以在 <OC4J_HOME> \webservices\lib 中生成 EAR 文件
>java -jar WebServicesAssembler.jar -config config.xml
此操作可创建 EmpData.ear 文件。
|
9.
|
将上面创建的 ear 文件复制到:<OC4J_HOME> \j2ee\home\applications 目录。
|
10.
|
启动 OC4J 服务器。为此,请转到 <OC4J_HOME> \j2ee\home 文件夹并键入以下内容
>java -jar oc4j.jar
|
11.
|
使用以下内容从 <OC4J_HOME> \j2ee\home部署 EAR
>java -jar admin.jar ormi://: admin -deploy -file <OC4J_HOME> \webservices\lib\EmpData.ear -deploymentName EmpData
这将使用名称 “EmpData” 部署该应用程序
现在,使用以下命令将该 Web 应用程序绑定到网站,
>java -jar admin.jar ormi://: admin -bindWebApp EmpData EmpData_web http-web-site /PLSQL
其中:
| http-web-site
|
绑定 Web 应用程序的网站 |
| server
|
该站点的主机/IP
|
| rmi-port
|
该站点的端口
|
| password
|
OC4J 服务器的管理员口令 |
|
12.
|
您可以通过打开浏览器并转到以下 URL 查看 Web 服务的工作情况
http://:/PLSQL/EmpData
您将看到您的 Web 服务操作列表,并可通过您的浏览器分别测试这些操作。
Web 服务的终点是
http://:/PLSQL/EmpData?WSDL
其中:
| server
|
该站点的主机/IP
|
| http-port
|
该站点的 Http 端口
|
|