J2EE之巔

           

          Spring集成XFire開發WebService

           

          Spring是目前最流行的JavaEE Framework,但是使用SpringSpring-WS開發WebService卻十分繁瑣。XFire是一個簡化WebService開發的開源項目,通過SpringXFire的結合可以大大簡化基于Spring Framework的應用中的WebService開發。

          SpringXFire可以通過多種方式結合,下文介紹的是筆者常用的一種簡單而實用的方法。所用的Spring版本為2.0,XFire版本為1.2.6

          1 配置XFire Servlet

          web.xml中加入如下配置:

          <servlet>

              <servlet-name>XFireServlet</servlet-name>

            

              <servlet-class>

                  org.codehaus.xfire.spring.XFireSpringServlet

              </servlet-class>

           </servlet>

           <servlet-mapping>

              <servlet-name>XFireServlet</servlet-name>

              <url-pattern>/servlet/XFireServlet/*</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>XFireServlet</servlet-name>

              <url-pattern>/services/*</url-pattern>

           </servlet-mapping>

          2 配置Spring的監聽器,同基于springWeb項目一樣Spring的監聽器是必不可少的。

              <context-param>

                  <param-name>contextConfigLocation</param-name>

                 <param-value>

                      classpath:org/codehaus/xfire/spring/xfire.xml,

                      /WEB-INF/applicationContext.xml

                 </param-value>

              </context-param>

          <listener>

           <listener-class>

              org.springframework.web.context.ContextLoaderListener

           </listener-class>

          </listener>  

          以下是完整的web.xml配置文件

          <?xml version="1.0" encoding="UTF-8"?>

          <web-app version="2.4"

              xmlns="http://java.sun.com/xml/ns/j2ee"

              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

              http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   

              <context-param>

                  <param-name>contextConfigLocation</param-name>

                 <param-value>

                      classpath:org/codehaus/xfire/spring/xfire.xml,

                      /WEB-INF/applicationContext.xml

                 </param-value>

              </context-param>

          <listener>

           <listener-class>

              org.springframework.web.context.ContextLoaderListener

           </listener-class>

          </listener>  

           <servlet>

              <servlet-name>XFireServlet</servlet-name>

            

              <servlet-class>

                  org.codehaus.xfire.spring.XFireSpringServlet

              </servlet-class>

           </servlet>

           <servlet-mapping>

              <servlet-name>XFireServlet</servlet-name>

              <url-pattern>/servlet/XFireServlet/*</url-pattern>

           </servlet-mapping>

           <servlet-mapping>

              <servlet-name>XFireServlet</servlet-name>

              <url-pattern>/services/*</url-pattern>

           </servlet-mapping>

          </web-app>

          3 定義接口及實現服務

          定義接口,這個接口中定義要通過WebService暴露的方法

          package org.ccsoft;

          publicinterface HelloWS {

              public String sayHello(String sb);

          }

          實現服務

          package org.ccsoft;

          publicclass HelloWSImp implements HelloWS {

              public String sayHello(String sb) {

                 // TODO Auto-generated method stub

                 return"Hello "+sb;

              }

          }

          4 配置服務

          將上文中實現的服務,加入到spring的配置文件中。

          <?xml version="1.0" encoding="UTF-8"?>

          <beans xmlns="http://www.springframework.org/schema/beans"

                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                 xsi:schemaLocation="

          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

              <bean id="helloWS" class="org.ccsoft.HelloWSImp"/>

              <bean name="helloService" class="org.codehaus.xfire.spring.ServiceBean">

              <property name="serviceBean" ref="helloWS"/>

              <property name="serviceClass" value="org.ccsoft.HelloWS"/>

              <property name="inHandlers">

                <list>

                  <ref bean="addressingHandler"/>

                </list>

              </property>

          </bean>

                 <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/>

          </beans>

          好了現在你可以通過http://127.0.0.1:8080/XFireWS1/services/HelloWS?wsdl來驗證是否部署成功了。

          —————————————————————————————————————


          SCEA SCBCD MCSD
          IBM Certified Specialist RUP
          IBM Certified Solution Designer OOA&D UML v2
          北京天融信軟件架構師
          SUN,Microsoft培訓中心特邀高端教師
          常年提供架構咨詢服務
          chaocai2001@yahoo.com.cn 010-82776427

          posted on 2007-09-17 18:01 超越巔峰 閱讀(9699) 評論(5)  編輯  收藏 所屬分類: Java EE

          評論

          # re: Spring集成XFire開發WebService 2007-09-17 18:20 千里冰封

          配XML終究不爽,還是EJB3.0里面的元數據注釋好一些  回復  更多評論   

          # re: Spring集成XFire開發WebService 2007-09-17 18:29 sitinspring

          代碼亂了一些,怎么不試試"插入代碼"按鈕呢?  回復  更多評論   

          # re: Spring集成XFire開發WebService[未登錄] 2007-09-17 21:31 bluesky

          用spring 的ws啊  回復  更多評論   

          # re: Spring集成XFire開發WebService 2007-09-18 08:59 阿蜜果

          呵呵,前陣子也寫了篇類似的文章,不過還沒放上blog。
          :)  回復  更多評論   

          # re: Spring集成XFire開發WebService 2012-03-06 15:44 斷線的風箏

          都啟動不了,報錯org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'addressingHandler' defined  回復  更多評論   

          導航

          統計

          常用鏈接

          留言簿(12)

          隨筆分類(54)

          隨筆檔案(59)

          文章分類(2)

          文章檔案(1)

          相冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永寿县| 西安市| 新邵县| 长武县| 三穗县| 化德县| 黄梅县| 满洲里市| 西吉县| 彰武县| 鄄城县| 大悟县| 德钦县| 香港 | 和硕县| 普兰县| 拉孜县| 南岸区| 建始县| 永新县| 拜泉县| 台湾省| 会宁县| 历史| 昭通市| 新野县| 荣成市| 临海市| 林甸县| 沙雅县| 桂林市| 南通市| 广汉市| 镇平县| 文安县| 长葛市| 建水县| 武乡县| 新余市| 蓝山县| 蒙自县|