(二)JAVA EE 5平台上实现Web服务实例(模拟股票行情机) 
JAVA EE 5平台上的JAX-WS 
J2EE 1.4平台上实现Web Services的是JAX-RPC, 而到了JAVA EE 5上, 重新命名为JAX-WS. 
JAX-RPC与JAX-WS最大的不同是编程模式的差别。 JAVA EE 5采用了JAVA SE 5 的Java语言新特性,在JAX-WS使用了大量的标注(annotation), 因而减少了Web Services的代码量与部署工作,自然也简化了开发。 
实现Web服务(模拟股票行情机) 
这个例子中采用自低向上的开发方式,即先实现一个模拟的股票行情机,再把这个应用程序发布为Web服务,即最终产生WSDL。 
JAVA EE 5 平台上可以最终发布为Web服务的模块有三种, Servlet, EJB以及POJO (plain old Java Object). 
下面以POJO为例,来建立模拟的股票报价Web服务 
准备及安装软件 
    - 
    
JAVA SE 5 (JDK 1.5)及以上版本(http://java.sun.com/javase/downloads/index.jsp ) 
     
    - 
    
NetBeans 5.5.1 (http://zh-cn.netbeans.org/index_zh_CN.html ) 
     
    - 
    
Sun Application Server 9 (https://glassfish.dev.java.net/): 可以直接下载带Sun Application Server 9的NetBeans 包(http://www.netbeans.info/downloads/index.php ) 
      
     
 
  
建立模拟的股票报价Web服务 
1。打开NetBeans 5.5.1, 菜单“文件”中选择“新建项目” 
2。“新建项目”窗口中,“类别”栏中选择“Web”,“项目“栏中选择“Web应用程序”,点击“下一步”按钮。 
3。“新建Web应用程序 ”窗口中,在“项目名称”栏中输入“StockQuoteWS” 
“服务器”中选择“Sun Application Server 9”, 这是Web Services 部署和运行的平台 
“Java Ee版本”中选择“Java EE 5”, 这样可以使用JAX-WS来开发Web Services 
  
 
 
  
4。点击“完成”按钮后,在NetBeans IDE中生成StockQuoteWS项目。接下来建立一个StockQuote的POJO类。鼠标右键点击“StockQuoteWS项目”,选择“新建”->“Java类”。 
5。“新建Java类 ”窗口中,输入类名和包名,比如 
类名:StockQuote 
包名:com.sun.sdn.demo.ws 
  
 
  
6。为StockQuote类添加一个getQuote()的方法. 方法实现如下: 
    
    
        
            | 
             public String getQuote(String stockCode){ 
            String quote = ""; 
            if (ht.containsKey(stockCode)) 
            quote = (String)ht.get(stockCode); 
            return quote; 
            } 
             | 
         
    
    
    
 
7。把POJO发布为Web Services,在JAX-WS中非常简单,仅仅需要在类前面加上@WebService() 。而POJO类中所有的公共方法也都会转换为Web Services 的方法. 
    
    
        
            | 
             /* 
            * StockQuote.java 
            * 
            * Created on 2007年8月20日, 下午11:25 
            * 
            * To change this template, choose Tools | Template Manager 
            * and open the template in the editor. 
            */ 
            
  
            package com.sun.sdn.demo.ws; 
            import javax.jws.WebService; 
            /** 
            * @author Ada Li 
            */ 
            @WebService() 
            public class StockQuote { 
            /** Creates a new instance of StockQuote */ 
            public StockQuote() { 
            init(); 
            } 
            java.util.Hashtable ht = new java.util.Hashtable(); 
            void init(){ 
            ht.put("601988.ss", "5.90"); 
            ht.put("000002.sz", "30.11"); 
            } 
            public String getQuote(String stockCode){ 
            String quote = ""; 
            if (ht.containsKey(stockCode)) 
            quote = (String)ht.get(stockCode); 
            return quote; 
            } 
            } 
             | 
         
    
    
    
 
在StockQuote类添加@WebService()的标注(annotation)之后,就可以在NetBeans的StockQuoteWS项目中看到新生成“Web服务”目录,目录下列出了”StockQuote”以及方法“getQuote” 
 
 
 
  
8。到这一步已经完成了StockQuote的Web服务开发,接下来要部署以及测试这个Web服务。 
9。鼠标右键点击“StockQuoteWS”项目,选择“部署项目”。部署完成后,可以在NetBeans “运行环境”->"服务器"->“Sun Application Server 9”->"应用程序"->“Web应用程序”下看到“StockQuoteWS”, 表示Web服务成功部署在了Sun Application Server 上。 
 
 
  
10。NetBeans IDE 提供了Web服务的测试工具。鼠标右键点击“StockQuoteWS”项目->"Web服务"-〉“StockQuote”,选择“测试Web服务”,浏览器会打开“StockQuoteService Web Service Test”窗口。在文本框中输入“601988.ss”,点击“getQuote”按钮。 
 
  输出结果如下图: 
 
 
  
11。在这个Java EE 5 平台上实现的Web服务,可以通过Web服务的测试工具察看WSDL以及SOAP的信息。而UDDI,测试工具使用的是NetBeans自带的Web Services Registry。 
StockQuoteWS部署完成后,最重要的记住WSDL的位置,即“http://localhost:8080/StockQuoteWS/StockQuoteService?WSDL”。接下来创建Web服务客户端时候,需要这个URL.  |