中间件
Application Server
首次发布时间:2004 年 9 月 14 日
最后更新日期:2006 年 1 月 18 日
作者:Jon Maron
Oracle 应用服务器为利用现有 Web 服务描述语言 (WSDL) 文档生成 Web 服务提供了便利。这个自上而下的方法虽然不像自下而上的方法(将现有类公开为 Web 服务)那样简单,但也有许多受欢迎的原因:
利用 WSDL 文档生成 Web 服务并创建关联的客户端应用程序的过程包括:
诚然,可以创建较为简单的参数,使其通过实施 SEI(如上所述消除了创建服务实施类的要求)只需修改底层实施类并将其直接公开为 Web 服务。尽管存在这种可能,但更为普通且常见的情况是,现有类无法修改。相反,还需要在不修改目标类的情况下,将现有类提供的功能公开给远程客户端。我们将在以下示例中探究这个案例。
整个文档使用以下约定:
下面我们将详细了解利用现有 Java 类创建 Web 服务应用程序的步骤。该示例已经执行了这些步骤,这里仅用于演示目的。
BankMemDB 类是 Bank 接口的实现,它提供了标准的银行业务功能:
该类是我们希望通过 Web 服务接口提供其功能的访问权限的现有类。
Bank 接口的实例(如 BankMemDB)由 BankFactory 创建:
public class BankFactory {
public BankFactory();
public Bank createBank();
}
为了使用自上而下的开发方法将现有 Bank 的实例公开为 Web 服务,我们将执行以下操作:
利用 WSDL 生成的服务接口表示了我们希望提供给客户端应用程序的功能和操作:
一旦创建并部署服务之后,就可以利用 WSDL 文件(作为服务生成过程的一部分而生成)创建利用该服务的客户端应用程序(请参阅
生成、编译和部署应用程序)。
除了 JAX-RPC 运行时需要的类,Oracle 应用服务器的客户端生成工具还会创建一个方便类,使开发人员从某些较为琐碎的 JAX-RPC 服务实例化任务中解脱出来。该类称为实用程序客户端,银行业务应用程序 (BankApplication) 将利用该类调用远程服务上的方法(
m_endpoint 是该实用程序客户端的类属性):
void demoGoodAccount() throws Exception {
String accountID =
m_endpoint.createAccount(DEMO_USER1,2000.50f);
// ... print statements removed for clarity ...
m_endpoint.deposit(accountID,500.50f);
float balance =
m_endpoint.getBalance(accountID,DEMO_USER1);
System.out.println("Current balance is now " + balance);
System.out.println("Withdrawing $250.00 from account");
m_endpoint.withdraw(accountID,250.00f);
balance =
m_endpoint.getBalance(accountID,DEMO_USER1);
}
上述组件的 javadoc 可以从
此处获得。
如果给定 Bank 实施与支持类、服务接口和服务实施,我们就可以继续生成和部署 Web 服务了。
在本例中,我们将创建一个将其功能包装并委托给底层 Bank 对象的银行 Web 服务。
方法文档 zip 文件应包含以下内容:
请检查以确保以下属性在示例分发根目录下的
ant-oracle.properties 文件中配置正确(注意:某些属性将默认为相应环境变量的值,如下所示。如果您已经在环境中设置了这些变量,则不必在文件中更改这些值)。如果有必要,将这些变量修改为环境的相应值:
此外,请确保与 OC4J ant 版本关联的 ant 命令位于执行路径 ( %ORACLE_HOME%/ant/bin) 中。
如果您运行的是 Oracle 应用服务器 10
g 的受管理版本,并且要使用 OPMN,则必须更改以下值以符合您的配置:
此外,请确保与 OC4J ant 版本关联的 ant 命令位于执行路径 ( %ORACLE_HOME%/ant/bin) 中。
独立安装:
%ORACLE_HOME%/bin/oc4j start
注意,
oc4j 命令期望 JAVA_HOME 环境变量指向整个 JDK 安装。
OracleAS 受管理的安装: %ORACLE_HOME%/opmn/bin/opmnctl startall
要生成、编译和部署该应用程序的组件,只需在示例根目录的命令提示符下键入以下命令:
要执行所提供的 build.xml 文件中默认的“所有”目标,请执行以下步骤:
现在,Web 服务已经部署,并且客户端已经生成并编译,下面我们就可以运行应用程序了。从示例根目录的命令提示符下,只需键入以下命令即可:
该命令执行的客户端应用程序将执行以下操作和信息交换(下面的信息交换图是由 JDeveloper 10g TCP Packet Monitor 捕获的,用于说明在执行远程服务调用期间执行的底层信息交换):
该方法文档详细说明了如何利用 WSDL 文档生成 Web 服务。我们已经看到该过程包括:
热门下载 | ||