把困難踩在腳下

          迎難而上

           

          XFire+WebService+Spring簡單Demo

          XFire簡介:

          XFire是新一代的Java Web服務(wù)引擎,XFire使得在JavaEE應(yīng)用中發(fā)布Web服務(wù)變得輕而易舉。和其他Web服務(wù)引擎相比,XFire的配置非常簡單,可以非常容易地和Spring集成,它使得Java開發(fā)人員終于可以獲得和.Net開發(fā)人員一樣的開發(fā)效率。具體內(nèi)容請訪問:http://baike.baidu.com/view/920041.html

          WebService簡介:

          它是一種構(gòu)建應(yīng)用程序的普遍模型,可以在任何支持網(wǎng)絡(luò)通信的操作系統(tǒng)中實施運行;它是一種新的web

          webservice

          應(yīng)用程序分支,是自包含、自描述、模塊 化的應(yīng)用,可以發(fā)布、定位、通過web調(diào)用。Web Service是一個應(yīng)用組件,它邏輯性的為其他應(yīng)用程序提供數(shù)據(jù)與服務(wù).各應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標準數(shù)據(jù)格式(Http,XML,Soap)來訪問Web Service,通過Web Service內(nèi)部執(zhí)行得到所需結(jié)果.Web Service可以執(zhí)行從簡單的請求到復(fù)雜商務(wù)處理的任何功能。一旦部署以后,其他Web Service應(yīng)用程序可以發(fā)現(xiàn)并調(diào)用它部署的服務(wù)。

          具體內(nèi)容請訪問:http://baike.baidu.com/view/837392.html

          使用這三種技術(shù)主要是在客戶端調(diào)用服務(wù)器端的方法,屬于遠程調(diào)用。

          先看服務(wù)器端:

          新建一個java project項目,按下圖建立包結(jié)構(gòu):

          1

          其實要寫的代碼非常簡單,或許你看到了會不相信,在SOAPService.java中代碼如下:

           

          public interface SOAPService 

              String sayHi(String x);
              
          int add(int x,int y);
              
          int sendmsm(String context,int to);
          }
           

          在SOAPServiceImpl.java中代碼如下:

           

          public class SOAPServiceImpl implements SOAPService 

              
          public String sayHi(String x) {
                   
          return("Hello my friend, " + x + "! Glad to see you!");
              }

              
          public int add(int x,int y){
                  
          return x+y;
              }

              
          public int sendmsm(String context, int to) {
                  
          return 0;
              }

          }
           

          簡單吧?重要的是配置,pom.xml是將所用到的jar包的dependency放進去,運行在dos窗口下找到這個項目然后執(zhí)行這兩條語句:mvn eclipse:clean ,mvn eclipse:eclipse語句就會將文件中所需要的jar包下載下來,當然你的電腦上必須配置maven,具體怎么配置我就說了,如果你沒有配置的話你可以將所需要的jar包下載下來,然后添加到build path中。在web項目最重要的就是web.xml文件中的配置,在文件中配置如下:

           

          <listener>
              
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
          </listener> 

          <context-param>
              
          <param-name>contextConfigLocation</param-name>
              
          <param-value>/WEB-INF/classes/Spring-*.xml</param-value>
          </context-param> 

          <!--編碼設(shè)置-->
          <filter>
              
          <filter-name>SetCharacterEncoding</filter-name>
              
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
              
          <init-param>
                  
          <param-name>encoding</param-name>
                  
          <param-value>UTF-8</param-value>
              
          </init-param>
          </filter>
          <filter-mapping>
              
          <filter-name>SetCharacterEncoding</filter-name>
              
          <url-pattern>/*</url-pattern>
          </filter-mapping> 

          <!--xfire 設(shè)置WS -->
          <servlet>
              
          <servlet-name>xfire</servlet-name>
              
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          </servlet>
          <servlet-mapping>
              
          <servlet-name>xfire</servlet-name>
              
          <url-pattern>*.Service</url-pattern>
          </servlet-mapping> 

          對于xfire項目這個xfire-servlet.xml也是很重要的,在xfire-servlet.xml文件中配置下:

          <beans>
              
          <!-- 引入XFire預(yù)配置信息 -->
              
          <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
              
          <!-- 定義訪問的url -->
                 
          <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
                  
          <property name="urlMap"> 
                    
          <map> 
                      
          <entry key="/Services/Hello.Service">
                          
          <ref bean="WsHelloService" /> 
                       
          </entry>
                   
          </map> 
                  
          </property> 
              
          </bean> 
              
          <!-- 使用XFire導(dǎo)出器 -->
              
          <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
                 
          <!-- 引用xfire.xml中定義的工廠 -->
                 
          <property name="serviceFactory" ref="xfire.serviceFactory" />
                 
          <!-- 引用xfire.xml中的xfire實例 -->
                 
          <property name="xfire" ref="xfire" />
              
          </bean>
               
          <bean id="WsHelloService" parent="baseWebService">
                
          <!-- 業(yè)務(wù)服務(wù)bean -->
                
          <property name="serviceBean" ref="WsHelloImpl"/>
                
          <!-- 業(yè)務(wù)服務(wù)bean的窄接口類 -->
                
          <property name="serviceClass" value="com.cmcc.interfaces.SOAPService" />
              
          </bean> 
          </beans> 

          上面的功能寫的很清楚了。

          在spring-content.xml文件中的配置如下:

           

          <beans>
              
          <import resource="spring/Spring-Service.xml" />
          </beans>

           

          它的功能連接spring-servicie.xml文件中的內(nèi)容,就是一個中間橋梁的作用。在spring-service.xml文件中的配置如下:

           

          <beans>
              
          <bean id="WsHelloImpl" class="com.cmcc.impl.SOAPServiceImpl">
                 
          <!--<property name="userService" ref="UserService"></property> -->
              
          </bean>
          </beans> 

          這個配置文件就是通過spring和實體的程序連接到一起。

          看客戶端,客戶端有兩種形式,一個是自動生成的,新建一個web service project

          看下圖勾選

          1

          然后選擇finish,然后再服務(wù)器開啟的的狀態(tài)下,右擊這個項目新建一個web service client

          2

          在wsdl中寫上訪問服務(wù)器端的url,然后finish,然后就完成了客戶端的程序,你可以在客戶端的程序中調(diào)用服務(wù)器的方法。

          3

          另一種客戶端生成的形式就是自己來寫了,新建一個XFireWSDemoClient的project,然后建立如下包結(jié)構(gòu):

          SOAPService.java的包路徑一定要和服務(wù)器端的包路徑相同,在WsFactory.JAVA中是用來生成service的,代碼如下:

           

          public class WsFactory {
              
          private static ArrayList l;
              
          private static HashMap props;
              
          private static ObjectServiceFactory serviceFactory;
              
          /**
               * 上傳信息
               * 
          */

              
          public static SOAPService getSOAPService(){
                  
          //調(diào)用xfire的遠程方法,將接收到的xml信息解析后發(fā)送給服務(wù)器??
                  String url = "http://localhost:8080/Services/Hello.Service";
                  serviceFactory 
          = new ObjectServiceFactory();
                  l 
          = new ArrayList();
                  l.add(Integer.
          class.getName());
                  props 
          = new HashMap();
                  props.put(AegisBindingProvider.WRITE_XSI_TYPE_KEY, Boolean.TRUE);
                  props.put(AegisBindingProvider.READ_XSI_TYPE_KEY, Boolean.TRUE);
                  props.put(AegisBindingProvider.OVERRIDE_TYPES_KEY, l);
                  Service serviceModel 
          = serviceFactory.create(SOAPService.class,props);
                  SOAPService service 
          = null;
                  
          try {
                      service 
          = (SOAPService) new XFireProxyFactory().create(serviceModel,url);
                  }
           catch (MalformedURLException e) {
                      e.printStackTrace();
                  }

                  
          return service;
              }

          }
           

          wstest.java只是一個簡單的測試類,代碼如下:

           

          public class WSTest{
              
          public static void main(String[]args) {
                  SOAPService service 
          = WsFactory.getSOAPService();
                  System.out.println(service.sayHi(
          "馮魁"));
              }

          }
           

          這樣就會調(diào)用服務(wù)器端的方法了!

          本人也是初學(xué),只是會簡單的使用原理懂的不多,請各位大蝦批評指正!

          posted on 2011-02-25 16:48 馮魁 閱讀(17442) 評論(1)  編輯  收藏

          評論

          # re: XFire+WebService+Spring簡單Demo 2013-03-14 11:11 liuzhuo

          很詳細,太感謝了。  回復(fù)  更多評論   


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


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學(xué)習(xí)網(wǎng)站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜都市| 八宿县| 孙吴县| 宿迁市| 永济市| 望都县| 怀柔区| 绥化市| 巴彦淖尔市| 五台县| 瑞安市| 河北省| 玛纳斯县| 安吉县| 德令哈市| 缙云县| 林芝县| 曲沃县| 惠水县| 安达市| 东乡族自治县| 宜丰县| 宜川县| 崇明县| 毕节市| 建平县| 新蔡县| 高雄县| 普兰店市| 德格县| 蒲城县| 临潭县| 永年县| 繁昌县| 韶山市| 湘乡市| 廉江市| 芦溪县| 安达市| 武清区| 盈江县|