java-tju

          BlogJava 聯系 聚合 管理
            1 Posts :: 2 Stories :: 1 Comments :: 0 Trackbacks

          myeclipse5.1支持xfire支持的非常棒。這里講解一個簡單的例子,
          此文章為引用文章,僅做保留,供學習參考使用
          1.首先建立一個web service工程:

          點擊finish之后,myeclipse自動幫你生成services.xml以及web應用目錄結構,其中的services.xml是你導出服務的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的

          servlet.

          代碼
          1. <servlet>  
          2.     <servlet-name>XFireServlet</servlet-name>  
          3.     <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>  
          4.     <load-on-startup>0</load-on-startup>  
          5.   </servlet>  
          6.   <servlet-mapping>  
          7.     <servlet-name>XFireServlet</servlet-name>  
          8.     <url-pattern>/services/*</url-pattern>  
          9.   </servlet-mapping>  

           

          2.接下來,現在編寫要導出的pojo類,首先是接口:

          代碼
          1. package net.rubyeye.webservicedemo;   
          2.   
          3. //Generated by MyEclipse   
          4.   
          5. public interface IHelloWorldService {   
          6.   
          7. public String sayHello(String name);   
          8.   
          9. }   

           

          這個接口我們只提供一個方法:sayHello(),我們沒有采用JSR181標注式的聲明方式,還是采用xml配置文件。然后是實現類:

          代碼
          1. package net.rubyeye.webservicedemo;   
          2.   
          3. //Generated by MyEclipse   
          4.   
          5. public class HelloWorldServiceImpl implements IHelloWorldService {   
          6.   
          7. public String sayHello(String name){   
          8.   
          9. return "hello,"+name;   
          10.   
          11. }   
          12.   
          13. }   

           

          最后,配置下services.xml文件:

          代碼
          1. <service>  
          2.         <name>HelloWorldService</name>  
          3.         <serviceClass>  
          4.             net.rubyeye.webservicedemo.IHelloWorldService   
          5.         </serviceClass>  
          6.         <implementationClass>  
          7.             net.rubyeye.webservicedemo.HelloWorldServiceImpl   
          8.         </implementationClass>  
          9.         <style>wrapped</style>  
          10.         <use>literal</use>  
          11.         <scope>application</scope>  
          12.     </service>  

           

          我們的web服務名稱叫做HelloWorldService,接口是IHelloWorldService,實現類是HelloWorldServiceImpl。注意,其實我們這三個步驟可以一步完成,只要直接使用

          myeclipse的new web service向導即可

          3.然后將此工程部署到tomcat上,通過http://localhost:8081/HelloWorld/services/HelloWorldService?wsdl可以看到生成的wsdl文件。注意,在部署之后,services會被拷貝

          到WEB-INF\classes\META-INF\xfire目錄下,xfire會自動搜索此目錄并加載配置文件。我們可以編寫一個client來測試web服務,你也可以點擊myeclipse上的Launch the Web

          Services來測試web服務

          4.編寫client代碼:

          代碼
          1. package net.rubyeye.webservicedemo;   
          2.   
          3. import java.net.MalformedURLException;   
          4.   
          5. import java.util.ArrayList;   
          6.   
          7. import java.util.List;   
          8.   
          9. import org.codehaus.xfire.XFireFactory;   
          10.   
          11. import org.codehaus.xfire.client.XFireProxyFactory;   
          12.   
          13. import org.codehaus.xfire.service.Service;   
          14.   
          15. import org.codehaus.xfire.service.binding.ObjectServiceFactory;   
          16.   
          17. public class HelloWorldClient {   
          18.   
          19. public static void main(String args[]) {   
          20.   
          21. Service srvcModel = new ObjectServiceFactory()   
          22.   
          23. .create(IHelloWorldService.class);   
          24.   
          25. XFireProxyFactory factory = new XFireProxyFactory(XFireFactory   
          26.   
          27. .newInstance().getXFire());   
          28.   
          29. String helloWorldURL = "http://localhost:8081/HelloWorld/services/HelloWorldService";   
          30.   
          31. try {   
          32.   
          33. IHelloWorldService srvc = (IHelloWorldService) factory.create(   
          34.   
          35. srvcModel, helloWorldURL);   
          36.   
          37. System.out.print(srvc.sayHello("dennis"));   
          38.   
          39. catch (MalformedURLException e) {   
          40.   
          41. e.printStackTrace();   
          42.   
          43. }   
          44.   
          45. }   
          46.   
          47. }   

          執行,打印:hello,dennis

           

          注意,你也可以使用MyEclipse的new webservice client向導自動生成client,同時生成供客戶端調用的stub類等。

          如果返回類型是List或Map,并且里面存放的是自定義類的話,則需要增加一個對于服務接口的配置文件。該文件的命名規則是 接口文件名.aegis.xml。例如接口是

          HelloWorld.java的話,則此配置文件命名為HelloWorld.aegis.xml。
          xml 代碼

          代碼
          1. <?xml version="1.0" encoding="UTF-8"?>      
          2. <mappings>      
          3.   <mapping >      
          4.     <method name="getUsers">      
          5.       <return-type componentType="com.excellence.webservice.test.User"/>      
          6.     </method>      
          7.   </mapping>      
          8. </mappings>  

          getUsers方法返回類型是List,里面裝的User對象。對于這種類型的方法,在配置文件中描述了它的返回值類型。
          如果返回的類型是Map的話,做法和List一樣。但定義的類型,是Map中的Value部分,并且這樣的話,Map中Value所存放的對象就必須全部是同一種類啦
          posted on 2007-06-08 19:14 java_tju 閱讀(306) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 娱乐| 巴彦县| 秀山| 寻甸| 萍乡市| 红安县| 昌吉市| 广宁县| 杭锦后旗| 江川县| 台山市| 定西市| 搜索| 盖州市| 淮南市| 喀喇沁旗| 富锦市| 大庆市| 根河市| 侯马市| 奈曼旗| 江川县| 卢湾区| 巴彦淖尔市| 赣州市| 乐清市| 江城| 永德县| 万安县| 江孜县| 东阿县| 台南市| 招远市| 金川县| 朔州市| 常宁市| 察隅县| 新竹市| 皋兰县| 大名县| 卓资县|