泰仔在線

          java學習,心情日記,繽紛時刻
          posts - 100, comments - 34, trackbacks - 0, articles - 0

          使用Axis發布簡單的Web服務

          Posted on 2006-07-24 15:08 泰仔在線 閱讀(194) 評論(0)  編輯  收藏 所屬分類: Java 相關

          使用Axis,要發布一個Web服務非常簡單,簡直不能再簡單了,盡管看起來過程和相關代碼有些長。我這個帖子里用到了這些軟件:Axis 1.1、Eclipse 2.1和Eclipse的Tomcat插件2.2(Sysdeo Tomcat plugin)。發布的方法如下:

          我要發布的服務是一個圖書商店,公布的方法有添加圖書addBook、列表圖書listBooks、刪除圖書deleteBook等等,為簡單起見這里就只發布一個添加圖書方法,因為其他方法的發布是類似的。

          1、首先在Eclipse里新建一個名為bookstore的Tomcat工程,注意要安裝了前面說的Tomcat插件才有這個選項的。如果沒有安裝可以建立一個java工程,然后手動建立必要的目錄結構(WEB-INF等),并在Tomcat的server.xml里手動增加與項目對應的<context>項。

          2、接下來建立圖書類(com.bookstore.model.Book),圖書有名稱、ISDN號和頁數三個屬性,這是一個Bean類,代碼如下:

          package  com.bookstore.model;

          public   class  Book  {
              
          private  String name;
              
          private  String ISDN;
              
          private   int  page;

              
          public  String getISDN()  {
                  
          return  ISDN;
              }


              
          public  String getName()  {
                  
          return  name;
              }


              
          public   int  getPage()  {
                  
          return  page;
              }


              
          public   void  setISDN(String string)  {
                  ISDN 
          =  string;
              }


              
          public   void  setName(String string)  {
                  name 
          =  string;
              }


              
          public   void  setPage( int  i)  {
                  page 
          =  i;
              }


          }

          3、接下來建立用來提供服務的類(com.bookstore.BookSvc),這個類就是實際的功能類了,它里面只有一個public的addBook()方法,而它的參數只有一個就是要添加的圖書。代碼如下:
          package com.bookstore;

          import com.bookstore.model.Book;

          public class BookSvc {
              
              
          public void addBook(Book book){
                  
          //here you save a book into database
                  System.out.println("Book has been added.");
              }

          }

          4、現在,把下載來的Axis解壓縮到一個文件夾,這里假設你解到C:\axis-1_1。把C:\axis-1_1\webapps\axis\WEB-INF\lib目錄下的所有.jar文件復制到你的這個web應用程序的WEB-INF\lib下,再把C:\axis-1_1\webapps\axis\WEB-INF目錄下的web.xml復制到你的web應用程序的WEB-INF下。這個步驟相當于在你的web應用程序中配置了Axis。

          5、為了讓Axis知道你要發布哪些服務,你得在WEB-INF下建立一個名為server-config.wsdd的文件,內容如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
           
          <globalConfiguration>
            
          <parameter name="adminPassword" value="admin"/>
            
          <parameter name="attachments.Directory" value="C:\eclipse\workspace\bookstore\WEB-INF\attachments"/>
            
          <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
            
          <parameter name="sendXsiTypes" value="true"/>
            
          <parameter name="sendMultiRefs" value="true"/>
            
          <parameter name="sendXMLDeclaration" value="true"/>
            
          <parameter name="axis.sendMinimizedElements" value="true"/>
            
          <requestFlow>
             
          <handler type="java:org.apache.axis.handlers.JWSHandler">
              
          <parameter name="scope" value="session"/>
             
          </handler>
             
          <handler type="java:org.apache.axis.handlers.JWSHandler">
              
          <parameter name="scope" value="request"/>
              
          <parameter name="extension" value=".jwr"/>
             
          </handler>
            
          </requestFlow>
           
          </globalConfiguration>
           
          <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
           
          <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
           
          <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
           
          <service name="Version" provider="java:RPC">
            
          <parameter name="allowedMethods" value="getVersion"/>
            
          <parameter name="className" value="org.apache.axis.Version"/>
           
          </service>
           
          <service name="BookSvc" provider="java:RPC">
            
          <parameter name="allowedMethods" value="*"/>
            
          <parameter name="className" value="com.bookstore.BookSvc"/>
           
          </service>
           
          <service name="AdminService" provider="java:MSG">
            
          <parameter name="allowedMethods" value="AdminService"/>
            
          <parameter name="enableRemoteAdmin" value="false"/>
            
          <parameter name="className" value="org.apache.axis.utils.Admin"/>
            
          <namespace>http://xml.apache.org/axis/wsdd/</namespace>
           </service>
           
          <transport name="local">
            
          <responseFlow>
             
          <handler type="LocalResponder"/>
            
          </responseFlow>
           
          </transport>
           
          <transport name="http">
            
          <requestFlow>
             
          <handler type="URLMapper"/>
             
          <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
            
          </requestFlow>
           
          </transport>
          </deployment>
          這個文件里發布了三個服務:Version、AdminService和我們的BookSvc。還有一個方法可以生成這個文件,好象Axis推薦使用這種生成的方法,就是在同樣目錄下寫一個deploy.wsdd文件(如果不想看可以直接跳到下一步),內容如下:
          <deployment xmlns="http://xml.apache.org/axis/wsdd/"
                      xmlns:java
          ="http://xml.apache.org/axis/wsdd/providers/java">
           
          <service name="BookSvc" provider="java:RPC">
            
          <parameter name="className" value="com.bookstore.BookSvc"/>
            
          <parameter name="allowedMethods" value="*"/>
           
          </service>
          </deployment>
          也就是說deploy.wsdd里只包含關于我們的服務的描述,確認Tomcat已經啟動,然后在同一目錄下用下面這個命令生成server-config.wsdd文件:
          java org.apache.axis.client.AdminClient -lhttp://localhost:8080/bookstore/services/AdminService deploy.wsdd

          其中bookstore是我這個web應用程序的虛擬路徑。

          6、重新啟動Tomcat,訪問路徑http://localhost:8080/bookstore/services,就可以看到現在發布了三個Web服務。點擊每個服務后的wsdl鏈接可以看到對應的WSDL描述。

          主站蜘蛛池模板: 靖宇县| 罗山县| 阳曲县| 鄱阳县| 天祝| 上饶市| 酒泉市| 麻城市| 天峨县| 含山县| 察哈| 兴隆县| 文水县| 安图县| 扶沟县| 衡南县| 抚远县| 亳州市| 陵川县| 夏河县| 湘乡市| 平湖市| 宁都县| 襄汾县| 梁河县| 舟山市| 尼勒克县| 夹江县| 榆社县| 夏津县| 邯郸县| 江油市| 大厂| 福安市| 莫力| 天祝| 芮城县| 克什克腾旗| 宜黄县| 阳谷县| 安仁县|