一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

WebService CXF學(xué)習(xí)(高級篇1):整合Spring框架

 CevenCheng 2012-06-08
通過前面兩節(jié)的講解,相信你對CXF框架開始有一些認(rèn)識了。在當(dāng)今項(xiàng)目開發(fā)中,Spring框架基上都用到過,那么它怎么與CXF結(jié)合呢,這就是我們這一間要講的內(nèi)容。好了,閑話少說。 
    首先,在前面基礎(chǔ)上再導(dǎo)入幾個(gè)spring要用到的幾個(gè).jar包: 
    spring-core.jar 
    spring-jdbc.jar 
    spring-context.jar 
    spring-orm.jar 
    spring-beans.jar 
    spring-tx.jar 
    包導(dǎo)入完之后,我們還不能開如干活,配置幾薦參數(shù),便于下一步工作。 
    配置CXF框架 
    我的電腦->屬性->高級->環(huán)境變量 
    創(chuàng)建一個(gè)CXF_HOEM變量,值為CXF框架所在根目錄,修改一下 
    CLASSPATH=%CXF_HOME%/lib;PATH=%CXF_HOME%/bin;這時(shí)有會問為什么要配置這兩個(gè)參數(shù)據(jù)呢,其實(shí)配置這兩個(gè)參數(shù)用途與配置JAVA變量一下,在DOS窗口下直接運(yùn)行java2ws,wsdl2java等可執(zhí)行文件。當(dāng)然你沒有配置也可以進(jìn)到CXF框架的bin目錄下遠(yuǎn)行這個(gè)幾個(gè)可執(zhí)行文件。 
   配置好了后,你在DOS窗口下輸入java2ws,看看配置是否效。肯定沒有成功,原因是使用6.0的JDK,我們還得在%JAVA_HOME%/jre/lib目錄下創(chuàng)建一下endorsed文件夾,將jaxb-api.jar,jaxws.jar拷貝進(jìn)去?,F(xiàn)在再運(yùn)一下java2ws,成功運(yùn)行,配置生效了。 
    基本工作做得差不多,整合spring框架正式開始: 
    第一步:新一個(gè)web project,導(dǎo)入要用到.jar包,其實(shí)CXF利用org.apache.cxf.transport.servlet.CXFServlet來攔截所有web請求,將其配置到web.xml中。配置如下: 
Java代碼  收藏代碼 

    <web-app>  
        <context-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>  
                /WEB-INF/classes/applicationContext-*.xml,/WEB-INF/classes/webservice.xml  
            </param-value>  
        </context-param>  
      
        <listener>  
            <listener-class>  
                org.springframework.web.context.ContextLoaderListener  
            </listener-class>  
        </listener>  
      
        <servlet>  
            <servlet-name>CXFServlet</servlet-name>  
            <display-name>CXF Servlet</display-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>/*</url-pattern>  
        </servlet-mapping>
  
    </web-app>  


      注意一下綠色字體 
      CXF框架配置好了,我就來開發(fā)一個(gè)WebService接口 
Java代碼  收藏代碼 

         @WebService  
         public interface IService {  
      
    //public void save(@WebParam(name="info")String xml);  
    public void save(@WebParam(name="dto")UserInfoDTO dto,@WebParam(name="flag")boolean flag);  
    public void update(@WebParam(name="info")String xml);  
    public void delete(@WebParam(name="id")int id);  
    public @WebResult(name="String")String get(@WebParam(name="id")int id);  
        }  


    這里面有四個(gè)方法,其中有一個(gè)涉及到對象,這一點(diǎn)前面一節(jié)講到怎么處理它。放在這里是再回顧前節(jié)內(nèi)容。 
    創(chuàng)建一個(gè)WebService接口實(shí)現(xiàn)類 
   
Java代碼  收藏代碼 

       @WebService  
       public class ServiceImpl implements IService {  
    private Logger log = LoggerFactory.getLogger(ServiceImpl.class);  
      
    public void delete(int id) {  
        log.info("delete id is {} user"+id);  
    }  
      
    public void save(UserInfoDTO dto,boolean flag) {  
        System.out.println("name:"+dto.getName());  
    }  
      
    public void update(String xml) {  
    }  
      
    public String get(int id){  
        return null;  
    }  
      }  
         


   由于本節(jié)只講解與Spring整合,沒有涉及到數(shù)據(jù)庫,因就打印一下傳遞過來的對象內(nèi)容來證明整合成功。與spring,hibernate整合后面章節(jié)會講到,請留意后面章節(jié)。 
   傳遞對象,當(dāng)然創(chuàng)建對象啦 
Java代碼  收藏代碼 

      @XmlType(name="ServerUserInfo")  
      @XmlAccessorType(XmlAccessType.FIELD)  
      public class UserInfoDTO implements java.io.Serializable {  
      
    private static final long serialVersionUID = -4666026219400887433L;  
    private Integer id;  
    private String name;  
    private Integer age;  
    private Integer address;  
      
    public Integer getId() {  
        return id;  
    }  
      
    public void setId(Integer id) {  
        this.id = id;  
    }  
      
    public String getName() {  
        return name;  
    }  
      
    public void setName(String name) {  
        this.name = name;  
    }  
      
    public Integer getAge() {  
        return age;  
    }  
      
    public void setAge(Integer age) {  
        this.age = age;  
    }  
      
    public Integer getAddress() {  
        return address;  
    }  
      
    public void setAddress(Integer address) {  
        this.address = address;  
    }  
      
    public UserInfoDTO() {  
    }  
      
       }  


   做了這么多工作,有人又會問,怎么現(xiàn)在做的與spring框架就沒一點(diǎn)聯(lián)系,呵呵,確實(shí)是這樣。開戲開場了,利用Spring來發(fā)布WebService接口: 
Java代碼  收藏代碼 

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www./schema/beans"  
        xmlns:xsi="http://www./2001/XMLSchema-instance"  
        xmlns:jaxws="http://cxf./jaxws"  
        xsi:schemaLocation="  
            http://www./schema/beans   
            http://www./schema/beans/spring-beans-2.0.xsd  
            http://cxf./jaxws   
            http://cxf./schemas/jaxws.xsd">  
          
            <!--導(dǎo)入與CXF框架有關(guān)的xml-->  
            <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" />
  
      
            <!--布布WebService接口-->  
        <jaxws:endpoint id="service"  
            implementor="com.itdcl.service.ServiceImpl" address="/Service">  
              
        </jaxws:endpoint>  
    </beans>  


     服務(wù)端開發(fā)工作基本結(jié)束。現(xiàn)在打包部署到Tomcat6.0.18(本人目前使用的測試服務(wù)器,你當(dāng)然可以使用別的服務(wù)器) 
    服務(wù)器啟動完成后,打開瀏覽器在地址欄中輸入http://localhost:port/project name/Service?wsdl看看接口是否發(fā)成功。 
    接下來就是開發(fā)一個(gè)客戶端了。 
    另建一個(gè)web project,現(xiàn)在前面的參數(shù)配置要起作用了,cmd進(jìn)入DOS環(huán)境下輸入wsdl2java -p com.itdcl.service(自定義包名) http://localhost:port/project name/Service?wsdl(前提是服務(wù)器沒停止) 
    敲擊Enter,wsdl2java工具幫你將發(fā)布出來的wsdl文件轉(zhuǎn)換成webservice接口,到指定目錄下將com.itdcl.service拷到剛才另建的web project的src目錄下。 
    現(xiàn)在,我們就來創(chuàng)建一個(gè)客戶端程序: 
Java代碼  收藏代碼 

        public class SampleClient {  
      
    ublic static void main(String[] args) {  
    ApplicationContext context = new ClassPathXmlApplicationContext(  
            "beans.xml");  
        
     IService service = (IService)context.getBean("service");  
     ServerUserInfo userInfo = new ServerUserInfo();  
     userInfo.setAddress(1);  
     userInfo.setAge(100);  
     userInfo.setName("Jason");  
      
     service.save(userInfo,true);  
     service.delete(1);  
      
      
     }  


    看得仔細(xì)的朋友就會問了,ServerUserInfo 這個(gè)類那來的,你進(jìn)到com.itdcl.service目錄下就會看到,是WebService發(fā)布出來的。 
    到目前為止,客戶端還沒有完成,你沒有看到程序中ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");這個(gè)bean.xml就是spring框架來注刪除WebService接口的。好啦,創(chuàng)建一個(gè)bean.xml,內(nèi)容如下: 
Java代碼  收藏代碼 

      <?xml version="1.0" encoding="UTF-8"?>  
      <beans xmlns="http://www./schema/beans"  
    xmlns:xsi="http://www./2001/XMLSchema-instance"  
    xmlns:jaxws="http://cxf./jaxws"  
    xsi:schemaLocation="  
        http://www./schema/beans   
        http://www./schema/beans/spring-beans-2.0.xsd  
        http://cxf./jaxws   
        http://cxf./schemas/jaxws.xsd
">  
    <jaxws:client id="service"  
        address="http://localhost:9999/cxf/Service"  
        serviceClass="com.itdcl.service.IService" />  
      </beans>  


    留意一下綠色字體 
    剩下的事就是運(yùn)行客戶端程序了,沒有異常拋出,打印出:name:Josen,則恭喜你CXF框架與Spring整合成功。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本加勒比中文在线观看| 熟女乱一区二区三区四区| 亚洲欧美日本视频一区二区| 亚洲国产黄色精品在线观看| 亚洲一区二区精品免费视频| 日本久久中文字幕免费| 日韩精品视频一二三区| 国产成人精品在线播放| 色丁香一区二区黑人巨大| 久久国内午夜福利直播| 日韩成人午夜福利免费视频 | 欧美激情床戏一区二区三| 国产午夜精品在线免费看| 亚洲精品美女三级完整版视频| 亚洲熟女诱惑一区二区| 国产又粗又猛又爽又黄| 国产肥女老熟女激情视频一区| 亚洲品质一区二区三区| 国产人妻熟女高跟丝袜| 国产又粗又猛又爽色噜噜| 69老司机精品视频在线观看| 69久久精品亚洲一区二区| 综合久综合久综合久久| 好骚国产99在线中文| 午夜国产精品国自产拍av| 国产欧美日韩在线精品一二区 | 伊人久久五月天综合网| 日本中文字幕在线精品| 黄色片国产一区二区三区| 国产av天堂一区二区三区粉嫩| 亚洲精品国产第一区二区多人| 国产精品大秀视频日韩精品 | 国产精品伦一区二区三区四季 | 夜夜嗨激情五月天精品| 色婷婷视频免费在线观看| 国产成人国产精品国产三级| 少妇福利视频一区二区| 中文字幕人妻日本一区二区 | 美女黄片大全在线观看| 亚洲中文字幕人妻系列| 国产福利在线播放麻豆|