如何利用现有 Java 类开发 Web 服务

最初撰稿时间:2004 年 11 月 4 日
最后更新时间:2006 年 1 月 18 日
作者:Jon Maron

简介




  • 创建一个服务接口。该接口将公开服务提供的功能和操作。
  • 创建一个服务实现类。该类只为服务接口中声明的每个方法提供实现。在本示例中,实现类将实例化一个底层 Bank 对象,并将方法调用委托给该对象。
  • 生成 Web 服务的 WSDL 文件及其关联的产物(映射文件等)。WSDL 文件是基于所提供的服务接口生成的,这样现在可以创建客户端来访问该 Web 服务。
  • 将服务打包为应用程序模块。服务类和所有关联的生成产物都被打包为标准的 J2EE 部署模块。
  • 部署服务。将服务模块部署到 Oracle 应用服务器。
  • 生成客户端代理。利用 WSDL 文件为已部署的服务生成客户端代理/存根。
  • 编写客户端应用程序。编写一个利用客户端代理调用远程服务操作的应用程序。

前提条件

知识准备

软件需求

符号


  • %ORACLE_HOME% — 安装 OC4J 或 Oracle 应用服务器的目录
  • %JAVA_HOME% — 安装 JDK 的目录

构建应用程序


现有的 Bank 实现



public class BankMemDB implements Bank{
public static BankMemDB newInstance();
public String addNewAccount(String name,float initBalance) throws AccountException;
public Account getAccount(String id);
public List getAccounts();
}




public class BankFactory {
public BankFactory();
public Bank createBank();
}

将 Bank 公开为 Web 服务

为了将现有 Bank 的实例公开为 Web 服务,我们将执行以下操作:

  1. 创建一个服务接口。该服务接口表示我们希望提供给客户端应用程序的功能和操作:
  1. 创建一个服务实现。实现类 (BankServiceImpl) 将实现服务接口 (BankService),并将各种调用委托给它创建的 Bank 实例。例如,createAccount() 方法只调用底层 Bank 的 addNewAccount() 方法(m_bank 是从 BankFactory 获得的 BankMemDB 的实例):
public String createAccount(String acctName,float initBalance) throws RemoteException,AccountException {
return m_bank.addNewAccount(acctName,initBalance);
}

创建客户端应用程序

生成、编译和部署应用程序

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);
}

here


运行示例

在本示例中,我们将创建一个将其功能包装并委托给底层 Bank 对象的银行 Web 服务。

检查方法文档分发

方法文档 zip 文件应包含以下内容:

Left Curve
热门下载
Right Curve