<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    速動畫教程第二十五集? 使用 xfire 開發(fā) web service 應(yīng)用

    ?

    下載地址: http://this.oksonic.cn

    在這里請大家?guī)兔Γ心俏慌笥咽褂眠^ xfire 開發(fā)客戶端的話,請與我聯(lián)系!

    聯(lián)系方法見文章結(jié)尾處

    ?

    制作工具:Eclipse3.2?? MyEclipse5.0m2?? Tomcat5.5.x

    ?

    一、一個簡單的 web service

    ?

    ?? 新建一個 web service 工程,名稱為 xfire

    ?

    ?? 新建一個 java 文件,名稱為 Hello.java,內(nèi)容如下:

    -------------------------------------------------------------------------------------

    package com.test;

    ?

    public class Hello {

    ?

    ??? public String getName(String name){

    ?????? return "Hello world " + name;

    ??? }

    }

    -------------------------------------------------------------------------------------

    ?

    ? 修改Web Services目錄下的 services.xml 文件,內(nèi)容如下:

    -------------------------------------------------------------------------------------

    < beans xmlns = "http://xfire.codehaus.org/config/1.0" >

    ??? < service >

    ?????? < name > Hello </ name >

    ?????? < namespace > http://www.oksonic.cn/xfire </ namespace >

    ?????? < serviceClass > com.test.Hello </ serviceClass >

    ??? </ service >

    </ beans >

    -------------------------------------------------------------------------------------

    ? < name > Hello </ name > ? 服務(wù)名稱

    ? < serviceClass > com.test.Hello </ serviceClass > ? 服務(wù)類

    ?

    ? 現(xiàn)在可以部署項(xiàng)目,使用以下鏈接訪問:

    ? http://localhost/xfire/services/Hello?wsdl

    ? 注:我的端口已經(jīng)修改為80,如果沒有修改過的話請使用 http://localhost:8080/xfire/services/Hello?wsdl

    ?

    ? 網(wǎng)上原有的教程中提到可以使用 http://localhost/xfire/services/ 訪問,但測試時出現(xiàn)無法連接

    ?

    ? 頁面中出現(xiàn) xml 文件內(nèi)容表示服務(wù)正常

    ?

    ?

    二、使用 jsr181 風(fēng)格

    ?

    --------------------- 介紹 摘抄自 XFire 實(shí)戰(zhàn)? ------------------------

    ? JSR 181通過標(biāo)準(zhǔn)化一個易于學(xué)習(xí)且可以快速開發(fā)的Web服務(wù)簡單編程模型,從而刺激了對Web服務(wù)的采用。一直以來,J2EE開發(fā)人員要開發(fā)和部署Web服務(wù)就必須掌握相當(dāng)多的信息。通過使用J2SE 5.0中的新增注釋功能,Java軟件源代碼可以使用JSR 181注釋進(jìn)行注釋,從而聲明式地定義所需的Web服務(wù)行為。這使開發(fā)人員可以將注意力集中在Web服務(wù)的應(yīng)用邏輯上而無需擔(dān)心復(fù)雜的API、協(xié)議和部署描述符。

    ?

    BEA官方網(wǎng)站有一篇 web服務(wù)元數(shù)據(jù)簡介 ,對理解JSR 181規(guī)范很有幫助。

    ?

    這一節(jié)的例子和上一節(jié)的例子很相似,或者通過使用java注釋,比上一節(jié)的POJO稍微復(fù)雜了一點(diǎn)。不是說JSR 181節(jié)省了很多的配置信息嗎?鄙人認(rèn)為可以從這個方面來理解,正常情況下,POJO如果配置到其他webservices框架下,比如axis2、Celtix、weblogic等容器中,必然需要編寫適合這些容器的配置文件,以便這些容器能夠識別這個POJO類是wenservices,并根據(jù)配置文件中的比如命名空間、參數(shù)類型、web服務(wù)的方法等信息提供web服務(wù)。而通過jsr 181規(guī)范中的定義可以自動識別這些信息,這樣這些信息不必在每個容器中所配置,這些容器通過java注釋就可以得到這些信息,所以說jsr181在這方面進(jìn)行了簡化。XFire通過services.xml文件得到哪個類被定義為web服務(wù), XFire可以通過java注釋來獲取web服務(wù)的相關(guān)信息。

    -------------------------------------------------------------------------------------

    ?

    ? 修改 Hello.java 文件,內(nèi)容如下:

    -------------------------------------------------------------------------------------

    package com.test;

    ?

    import javax.jws.WebMethod;

    import javax.jws.WebParam;

    import javax.jws.WebResult;

    import javax.jws.WebService;

    ?

    @WebService (name= "Hello" ,serviceName= "Hello" ,

    ?????? targetNamespace= "http://www.oksonic.cn/xfire" )

    public class Hello {

    ?

    ??? @WebMethod

    ??? @WebResult

    ??? public String getName( @WebParam String name){

    ?????? return "Hello world " + name;

    ??? }

    }

    -------------------------------------------------------------------------------------

    ?

    ? 修改 services.xml 文件,內(nèi)容如下:

    -------------------------------------------------------------------------------------

    < beans xmlns = "http://xfire.codehaus.org/config/1.0" >

    ??? < service >

    ?????? < serviceClass > com.test.Hello </ serviceClass >

    ?????? < serviceFactory > jsr181 </ serviceFactory >

    ??? </ service >

    </ beans >

    -------------------------------------------------------------------------------------

    ?

    ? 啟動服務(wù),現(xiàn)次測試,沒什么變化,服務(wù)正常

    ?

    三、對 xfire 進(jìn)行單元測試

    ?

    --------------------- 介紹 摘抄自 XFire 實(shí)戰(zhàn)? ------------------------

    ? 你不必發(fā)布到 tomcat 等容器中就可以進(jìn)行測試,常用的測試類常繼承 AbstractXFireTest 抽像類。

    AbstractXFireSpringTest 類又實(shí)現(xiàn)了 AbstractXFireTest 類,AbstractXFireTest 類是 TestCase

    的子類,所以你可以使用 junit 進(jìn)行單元測試。

    ------------------------------------------------------------------------------

    ?

    ? 新建一個 JUnit case ,這是為了讓 IDE 自動增加 JUnit 相關(guān)的類庫

    ?

    ? 新建一個 java 文件,名稱為 HelloTest.java,此類繼承 AbstractXFireSpringTest

    實(shí)現(xiàn)一個 createContest 方法,內(nèi)容如下:

    ------------------------------------------------------------------------------

    package test.com.test;

    ?

    import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;

    import org.codehaus.xfire.spring.AbstractXFireSpringTest;

    import org.jdom.Document;

    import org.springframework.context.ApplicationContext;

    ?

    public class HelloTest extends AbstractXFireSpringTest {

    ?

    ??? @Override

    ??? protected ApplicationContext createContext() {

    ?????? return new ClassPathXmlApplicationContext( new String[] {

    ????????????? "/org/codehaus/xfire/spring/xfire.xml" ,

    ????????????? "/META-INF/xfire/services.xml" });

    ?

    ??? }

    ???

    ??? public void testService() throws Exception

    ?

    ??? {

    ??????? Document wsdl = getWSDLDocument( "Hello" );

    ??????? printNode(wsdl);

    ??? }

    ?

    }

    ------------------------------------------------------------------------------

    ? 為了讓 createContext 方法可以找到 services.xml 文件,需要把 Web Services 目錄下的 services.xml 拷貝到 src/ META-INF/xfire 目錄下

    ?

    ? 不用啟動 tomcat 直接在 HelloTest.java 文件上點(diǎn)擊鼠標(biāo)右鍵 Run as --> Junit ... 進(jìn)行測試,結(jié)果顯示綠色條,通過測試!

    ? 關(guān)于其它的測試方法請查看《XFire實(shí)戰(zhàn).pdf》

    ?

    四、和 Spring 集成

    ?

    ? 新建一個 service 層接口 IHelloService,內(nèi)容如下:

    ------------------------------------------------------------------------------

    package com.test.services;

    ?

    public interface IHelloService {

    ?

    ??? public String getName(String name);

    ???

    }

    ------------------------------------------------------------------------------

    ?

    ? 創(chuàng)建接口的實(shí)現(xiàn) HelloService,內(nèi)容如下:

    ------------------------------------------------------------------------------

    package com.test.services.impl;

    ?

    import com.test.services.IHelloService;

    ?

    public class HelloService implements IHelloService {

    ?

    ??? public String getName(String name) {

    ?????? return "Hello World " + name;

    ??? }

    ?

    }

    ------------------------------------------------------------------------------

    ?

    ? 添加 spirng 框架,設(shè)置將 applicationContext.xml 文件創(chuàng)建到 WEB-INF 目錄下

    ?

    ? 修改 applicationContext.xml 文件,內(nèi)容如下:

    ------------------------------------------------------------------------------

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

    <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >

    ?

    < beans >

    ??? < bean id = " helloBean " class = "com.test.services.impl.HelloService" />

    </ beans >

    ------------------------------------------------------------------------------

    ?

    ? 在 WEB-INF 目錄下新建 xfire -servlet.xml 文件,文件內(nèi)容如下:

    ------------------------------------------------------------------------------

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

    <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd" >

    < beans >

    ??? < bean

    ?????? class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >

    ?????? < property name = "urlMap" >

    ?????????? < map >

    ????????????? <!-- 配置 service 名稱和 Service Bean -->

    ????????????? < entry key = "/Hello" >

    ????????????????? < ref bean = " hello " />

    ????????????? </ entry >

    ?????????? </ map >

    ?????? </ property >

    ??? </ bean >

    ??? < bean id = " hello "

    ?????? class = "org.codehaus.xfire.spring.remoting.XFireExporter" >

    ?????? < property name = "serviceFactory" >

    ?????????? < ref bean = "xfire.serviceFactory" />

    ?????? </ property >

    ?????? < property name = "xfire" >

    ?????????? < ref bean = "xfire" />

    ?????? </ property >

    ?????? < property name = "serviceBean" >

    ?????????? < ref bean = " helloBean " />

    ?????? </ property >

    ?????? < property name = "serviceClass" >

    ?????????? < value > com.test.services.IHelloService </ value >

    ?????? </ property >

    ??? </ bean >

    </ beans >

    ------------------------------------------------------------------------------

    ? 注意:紅色字體部份必需一r致,深紅色字體部份要和 spring 的配置文件部份一致

    ?

    ? 修改 web.xml 文件,增加 spring 配置部份,修改 xfire 的名稱

    ------------------------------------------------------------------------------

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

    < web-app xmlns = "http://java.sun.com/xml/ns/j2ee"

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

    ??? 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 >

    ?????????? /WEB-INF/applicationContext.xml

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

    ?????? </ param-value >

    ??? </ context-param >

    ??? < listener >

    ?????? < listener-class >

    ?????????? org.springframework.web.context.ContextLoaderListener

    ?????? </ listener-class >

    ??? </ listener >

    ??? < servlet >

    ?????? < servlet-name > xfire </ servlet-name >

    ?????? < servlet-class >

    ?????????? org.springframework.web.servlet.DispatcherServlet

    ?????? </ servlet-class >

    ?????? < load-on-startup > 0 </ load-on-startup >

    ??? </ servlet >

    ??? < servlet-mapping >

    ?????? < servlet-name > xfire </ servlet-name >

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

    ??? </ servlet-mapping >

    </ web-app >

    ------------------------------------------------------------------------------

    ? 注:紅色字體部份為新重點(diǎn)關(guān)注部份

    ?

    ? 重啟服務(wù),進(jìn)行測試!!!

    ?

    ? 一切正常,現(xiàn)在用一個web service測試工具進(jìn)行一下測試

    ?

    ? 本集就到這里了!!!

    ?

    為了制作更多更好的錄像教程,希望大家多多提供相關(guān)資料!!!

    聯(lián)系方法:

    ? http://www.oksonic.cn

    ? Email: oksonic@tom.com

    ? QQ: 71279650
    image001.gif

    Feedback

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2006-07-26 12:38 by mfsll
    作者眼光真是明銳啊,佩服,佩服!

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2006-08-04 14:48 by &**
    非常感謝作者分享............................

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2006-08-05 09:52 by zjhyp
    請問下在客戶端如何寫java代碼調(diào)用呢?又如何進(jìn)行單元測試?

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2007-01-08 18:00 by bingfen
    頂。。。謝謝。。。。

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2007-03-19 05:50 by www
    http://www.ltomper22.info/linsey-lohan.html sederi diciottenni http://www.ltomper22.info/imbarazzato-sedere.html orgie musicali http://www.anita-blonde.mikoolo22.info ragazze vogliose http://www.seghe-spagnolette.mikoolo22.info foto penetrazione http://www.mamibi21.info/moglie-porca.html grasse chiappe http://www.mamibi21.info/rumene-fiche.html julian caldi http://www.sorche-scopate.mikipedi21.info ani bagnati http://www.infermieri-maiali.mikipedi21.info guy negre http://www.naughty-professoresse.meepen22.info inchiodare cielo http://www.affetto-cameriera.meepen22.info eccessivo molto

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2007-04-10 05:50 by aka
    http://www.eccellere-amatoriali-dildo.talibi66.info giapponesi cinema http://www.comprensivo-fighetta.talibi66.info club voyeur http://www.mom-fuck.ealibi66.info freddissimo discreto vergine http://www.abigliamento-de-coy.ealibi66.info love cowgirl sesso http://www.grassone-vecchie.ralibi66.info divertente fighe http://www.gallery-esibizioniste.ralibi66.info paingate alta http://www.tardone-sexi.ualibi66.info eccessivo bionde azione http://www.deciso-fighette-fotti.ualibi66.info cuckold moglie foto http://www.clisteri-culi-merda.yalibi66.info comprensivo fighette ubriache http://www.piu-freddo-bagno.yalibi66.info stravagantemente segretaria sex

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2008-04-29 00:09 by hejing
    好文章,正需要ws的內(nèi)容,謝過:)

    # re: 速動畫教程第二十五集 使用 xfire 開發(fā) web service 應(yīng)用  回復(fù)  更多評論   

    2008-07-17 16:52 by whttaotao
    不錯寫的很詳細(xì) 而且我一試就通過了,
    頂一下,
    我看過很人發(fā)的文章可是怎么調(diào)都調(diào)不通
    就那么幾步,也不知道那些人怎么寫的。腦袋里可能有屁。
    樓主這篇真不錯,就是不知道客戶怎么調(diào)呀

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


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

    posts - 103, comments - 1104, trackbacks - 0, articles - 0

    Copyright © oksonic

    主站蜘蛛池模板: 免费久久精品国产片香蕉| 亚洲天堂中文字幕在线观看| 亚洲欧美日韩中文二区| 日本在线看片免费人成视频1000| 国产又粗又长又硬免费视频| 亚洲人成7777影视在线观看| 国产午夜免费高清久久影院| vvvv99日韩精品亚洲| 亚洲精品综合在线影院| 97视频免费观看2区| 夜夜春亚洲嫩草影院| 日韩亚洲翔田千里在线| 免费a级毛片高清视频不卡| 久久亚洲私人国产精品vA | 久久青草亚洲AV无码麻豆| 国产精品久久久久久亚洲小说| 日本亚洲免费无线码| 亚洲综合日韩中文字幕v在线| 一级女人18片毛片免费视频| 国产麻豆免费观看91| 亚洲精品亚洲人成在线播放| 最近中文字幕无免费| 亚洲AV无码国产在丝袜线观看| kk4kk免费视频毛片| 免费大香伊蕉在人线国产| 亚洲愉拍一区二区三区| 妻子5免费完整高清电视| 亚洲网址在线观看你懂的| 波多野结衣免费一区视频| 国产亚洲精品久久久久秋霞| 人妻仑刮八A级毛片免费看| 国产成人免费一区二区三区| 亚洲七久久之综合七久久| 野花高清在线观看免费完整版中文 | 久久久久亚洲精品无码网址色欲| 一二三四影视在线看片免费| 亚洲av片不卡无码久久| 美女视频黄的全免费视频网站| 亚洲天堂一区在线| 日本免费网址大全在线观看| 亚洲国产美女在线观看 |