速動畫教程第二十五集? 使用 xfire 開發 web service 應用

          ?

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

          在這里請大家幫忙,有那位朋友使用過 xfire 開發客戶端的話,請與我聯系!

          聯系方法見文章結尾處

          ?

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

          ?

          一、一個簡單的 web service

          ?

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

          ?

          ?? 新建一個 java 文件,名稱為 Hello.java,內容如下:

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

          package com.test;

          ?

          public class Hello {

          ?

          ??? public String getName(String name){

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

          ??? }

          }

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

          ?

          ? 修改Web Services目錄下的 services.xml 文件,內容如下:

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

          < 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 > ? 服務名稱

          ? < serviceClass > com.test.Hello </ serviceClass > ? 服務類

          ?

          ? 現在可以部署項目,使用以下鏈接訪問:

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

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

          ?

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

          ?

          ? 頁面中出現 xml 文件內容表示服務正常

          ?

          ?

          二、使用 jsr181 風格

          ?

          --------------------- 介紹 摘抄自 XFire 實戰? ------------------------

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

          ?

          BEA官方網站有一篇 web服務元數據簡介 ,對理解JSR 181規范很有幫助。

          ?

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

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

          ?

          ? 修改 Hello.java 文件,內容如下:

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

          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 文件,內容如下:

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

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

          ??? < service >

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

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

          ??? </ service >

          </ beans >

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

          ?

          ? 啟動服務,現次測試,沒什么變化,服務正常

          ?

          三、對 xfire 進行單元測試

          ?

          --------------------- 介紹 摘抄自 XFire 實戰? ------------------------

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

          AbstractXFireSpringTest 類又實現了 AbstractXFireTest 類,AbstractXFireTest 類是 TestCase

          的子類,所以你可以使用 junit 進行單元測試。

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

          ?

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

          ?

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

          實現一個 createContest 方法,內容如下:

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

          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 文件上點擊鼠標右鍵 Run as --> Junit ... 進行測試,結果顯示綠色條,通過測試!

          ? 關于其它的測試方法請查看《XFire實戰.pdf》

          ?

          四、和 Spring 集成

          ?

          ? 新建一個 service 層接口 IHelloService,內容如下:

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

          package com.test.services;

          ?

          public interface IHelloService {

          ?

          ??? public String getName(String name);

          ???

          }

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

          ?

          ? 創建接口的實現 HelloService,內容如下:

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

          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 框架,設置將 applicationContext.xml 文件創建到 WEB-INF 目錄下

          ?

          ? 修改 applicationContext.xml 文件,內容如下:

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

          <? 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 文件,文件內容如下:

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

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

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

          ? 注:紅色字體部份為新重點關注部份

          ?

          ? 重啟服務,進行測試!!!

          ?

          ? 一切正常,現在用一個web service測試工具進行一下測試

          ?

          ? 本集就到這里了!!!

          ?

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

          聯系方法:

          ? http://www.oksonic.cn

          ? Email: oksonic@tom.com

          ? QQ: 71279650
          image001.gif

          Feedback

          # re: 速動畫教程第二十五集 使用 xfire 開發 web service 應用  回復  更多評論   

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

          # re: 速動畫教程第二十五集 使用 xfire 開發 web service 應用  回復  更多評論   

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

          # re: 速動畫教程第二十五集 使用 xfire 開發 web service 應用  回復  更多評論   

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

          # re: 速動畫教程第二十五集 使用 xfire 開發 web service 應用  回復  更多評論   

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

          # re: 速動畫教程第二十五集 使用 xfire 開發 web service 應用  回復  更多評論   

          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 開發 web service 應用  回復  更多評論   

          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 開發 web service 應用  回復  更多評論   

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

          # re: 速動畫教程第二十五集 使用 xfire 開發 web service 應用  回復  更多評論   

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

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


          網站導航:
           

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

          Copyright © oksonic

          主站蜘蛛池模板: 张家界市| 永泰县| 云安县| 婺源县| 浙江省| 平邑县| 无锡市| 从江县| 介休市| 阳新县| 行唐县| 津市市| 丘北县| 石河子市| 界首市| 涪陵区| 阿克苏市| 会宁县| 阿尔山市| 盱眙县| 福安市| 汶上县| 南汇区| 高阳县| 无锡市| 墨竹工卡县| 扶沟县| 日照市| 拜泉县| 和静县| 神木县| 佛山市| 栖霞市| 峨山| 绥中县| 临澧县| 会宁县| 鄂托克旗| 中山市| 壶关县| 济南市|