胖熊熊

          得到多少又失去了什么

          CXF 2.0 學(xué)習(xí)筆記-1(服務(wù)端)

             從網(wǎng)絡(luò)上找了很多入門(mén)的例子,但大部分都是有這樣或那樣的問(wèn)題,搞的頭大。
             這里根據(jù)自己搭建的過(guò)程,整理出一個(gè)實(shí)際例子。
             環(huán)境:jdk1.5+,eclipse3.4,Tomcat5.5,cxf-2.1.4
             以下沒(méi)有用到任何插件來(lái)生成
             服務(wù)端
               一、server 端: 
                    接口:WebServiceSample
                   
          import hs.cxf.bean.ReqBean;
          import hs.cxf.bean.RespBean;
          import hs.cxf.bean.UserDTO;
          import javax.jws.WebParam;
          import javax.jws.WebResult;
          import javax.jws.WebService;

          /**
           * WebService接口定義類(lèi).
           * 
           * 使用@WebService將接口中的所有方法輸出為Web Service. 
           * 可用annotation對(duì)設(shè)置方法、參數(shù)和返回值在WSDL中的定義.
           
          */

          @WebService
          public interface WebServiceSample {

              
          /**
               * 一個(gè)簡(jiǎn)單的方法,返回一個(gè)字符串
               * 
               * 
          @param hello
               * 
          @return
               
          */

              String say(String hello);

              
          /**
               * 稍微復(fù)雜一些的方法,傳遞一個(gè)對(duì)象給服務(wù)端處理
               * 
               * 
          @param user
               * 
          @return
               
          */

              String sayUserName(@WebParam(name 
          = "user") UserDTO user);

              
          /**
               * 通過(guò)對(duì)象來(lái)交互
               
          */

              @WebResult(name 
          = "RespBean")
              RespBean action(@WebParam(name 
          = "ReqBean") ReqBean req);

          }

             實(shí)現(xiàn)類(lèi):WebServiceSampleImpl
            
          import javax.jws.WebService;
          import hs.cxf.bean.ReqBean;
          import hs.cxf.bean.RespBean;
          import hs.cxf.bean.UserDTO;

          /**
           * @Title:
           * 
           * @Description:
           * 
           * @Copyright: Copyright (c) 2009 FFCS All Rights Reserved
           * 
           * 
          @author zhengzhi 2009-3-16 上午11:22:23
           * 
          @version 1.00.000
           * 
           
          */

          @WebService(endpointInterface
          ="hs.cxf.server.WebServiceSample")
          public class WebServiceSampleImpl implements WebServiceSample {
              
          public String sayUserName(UserDTO user) {
                  
          return "hello " + user.getName();
              }


              
          public String say(String hello) {

                  
          return "hello " + hello;
              }


              
          public RespBean action(ReqBean req) {
                  RespBean respBean 
          = new RespBean();
                  respBean.setExp(req.getExp());
                  respBean.setRespId(req.getSeqId());
                  
          return respBean;
              }


          }

            實(shí)體類(lèi):UserDTO,ReqBean,RespBean
           
          UserDTO
          @XmlAccessorType(XmlAccessType.FIELD)   
          @XmlType(name 
          = "User")   
          public class UserDTO {   
            
              
          protected Integer id;   
            
              
          protected String name;   
              
          //get和set方法,這里不寫(xiě)出
          }

          ReqBean
          @XmlAccessorType(XmlAccessType.FIELD)   
          @XmlType(name 
          = "ReqBean")   
          public class ReqBean {
              
          private String exp;
              
          private String seqId;
                 
          //get和set方法,這里不寫(xiě)出
          }


          RespBean
          @XmlAccessorType(XmlAccessType.FIELD)   
          @XmlType(name 
          = "RespBean")   
          public class RespBean {
              
          private String respId;
              
          private String exp;
                 
          //get和set方法,這里不寫(xiě)出
          }

           二、Spring 配置
                
          <beans xmlns="http://www.springframework.org/schema/beans"  
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"  
              xmlns:jaxws
          ="http://cxf.apache.org/jaxws"  
              xsi:schemaLocation
          ="   
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
          http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
          >   
            
              
          <import resource="classpath:META-INF/cxf/cxf.xml" />   
              
          <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />   
              
          <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />   
            
              
          <bean id="jaxWsServiceFactoryBean"  
                  class
          ="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">   
                  
          <property name="wrapped" value="true" />   
                  
          <property name="dataBinding" ref="aegisBean" />   
              
          </bean>   
            
              
          <bean id="aegisBean"  
                  class
          ="org.apache.cxf.aegis.databinding.AegisDatabinding" />   
            
              
          <jaxws:endpoint id="CollectiveServices"  
                  implementor
          ="hs.cxf.server.WebServiceSampleImpl" address="/HelloWorld">   
                  
          <jaxws:serviceFactory>   
                      
          <ref bean="jaxWsServiceFactoryBean"/>   
                  
          </jaxws:serviceFactory>   
              
          </jaxws:endpoint>   
          </beans>  


          三.web.xml配置
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
          <web-app id="WebApp_ID">
              
          <display-name>cxfTest</display-name>
              
          <context-param>
                  
          <param-name>contextConfigLocation</param-name>
                  
          <param-value>WEB-INF/beans.xml</param-value>
              
          </context-param>
              
          <listener>
                  
          <listener-class>
                      org.springframework.web.context.ContextLoaderListener   
                  
          </listener-class>
              
          </listener>
              
          <servlet>
                  
          <servlet-name>CXFServlet</servlet-name>
                  
          <servlet-class>
                      org.apache.cxf.transport.servlet.CXFServlet   
                  
          </servlet-class>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>CXFServlet</servlet-name>
                  
          <url-pattern>/ws/*</url-pattern>
              
          </servlet-mapping>
          </web-app>

          這里要注意,cxf 教程上提到需要的包并不完整,還需要導(dǎo)入:jdom,stax-api-1.0-2.jar,jaxws-api.jar 這些包
           我使用的包如下:

           

          aopalliance-1.0.jar
          asm-2.2.3.jar
          commons-logging-1.1.1.jar
          cxf-2.1.4.jar
          geronimo-activation_1.1_spec-1.0.2.jar
          geronimo-annotation_1.0_spec-1.1.1.jar
          geronimo-javamail_1.4_spec-1.3.jar
          geronimo-servlet_2.5_spec-1.2.jar
          geronimo-ws-metadata_2.0_spec-1.1.2.jar
          jaxb-api-2.1.jar
          jaxb-impl-2.1.9.jar
          jaxen-core.jar
          jaxen-jdom.jar
          jaxws-api.jar
          jdom.jar
          jetty-6.1.9.jar
          jetty-util-6.1.9.jar
          neethi-2.0.4.jar
          saaj-api-1.3.jar
          saaj-impl-1.3.2.jar
          saxpath.jar
          spring-beans-2.0.8.jar
          spring-context-2.0.8.jar
          spring-core-2.0.8.jar
          spring-web-2.0.8.jar
          stax-api-1.0-2.jar
          wsdl4j-1.6.2.jar
          wstx-asl-3.2.6.jar
          xalan.jar
          xml-resolver-1.2.jar
          XmlSchema-1.4.3.jar

          然后啟動(dòng)tomcat,輸入http://IP:端口/模塊名/ws 查看你生成的服務(wù)端,可使用xmlspy來(lái)進(jìn)行測(cè)試。

           注:
          后續(xù)將研究下如何并不結(jié)合Spring 來(lái)使用CXF,如有知道的朋友,請(qǐng)留言告知。

          posted on 2009-03-16 15:14 fatbear 閱讀(3437) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): web service

          評(píng)論

          # re: CXF 2.0 學(xué)習(xí)筆記-1(服務(wù)端) 2009-09-16 17:39 jij

          jhkkkkkkkkkkkkkkkkkkkk  回復(fù)  更多評(píng)論   

          # re: CXF 2.0 學(xué)習(xí)筆記-1(服務(wù)端) 2009-12-08 11:36 longwen

          好!!!  回復(fù)  更多評(píng)論   

          # re: CXF 2.0 學(xué)習(xí)筆記-1(服務(wù)端) 2010-04-16 10:41 kenail

          寫(xiě)得挺好  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 凤台县| 离岛区| 新乡市| 石渠县| 柳州市| 梅州市| 旌德县| 吉林省| 桓仁| 许昌市| 大方县| 温泉县| 大余县| 堆龙德庆县| 广昌县| 渝中区| 宣武区| 清流县| 金堂县| 江孜县| 从江县| 墨脱县| 冕宁县| 英山县| 丹江口市| 淳化县| 南充市| 南安市| 大石桥市| 新余市| 乳山市| 井陉县| 安多县| 嘉鱼县| 城市| 江陵县| 景宁| 文成县| 通州区| 湖州市| 凯里市|