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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    MyEclipse開發WebServices(基于Annotations)

    XFire支持JSR 181標注方式的Web服務開發,另外,所有支持Java EE 5的應用服務器(Tomcat只是Web層的,本身不支持EJBWeb服務開發),都支持這種開發方式,例如:JBossGlassFishWebLogic10等等,本節就簡要討論使用XFire開發標注式Web服務和用JBoss開發的過程。

    15.4.1 XFire的標注服務開發

           XFire支持JRS181方式的標注服務開發,這樣開發的時候只需要編寫一個普通的Java類,然后加上標注信息后,加入services.xml中即可。我們仍然在第2節所開發的HelloWorldService項目中進行修改。下面是創建的Web服務類echo.Jsr181EchoService

    package echo;

    import javax.jws.WebMethod;

    import javax.jws.WebParam;

    import javax.jws.WebResult;

    import javax.jws.WebService;

    @WebService(name = "EchoService", serviceName="EchoServiceTest", targetNamespace = "http://www.openuri.org/2004/04/HelloWorld")

            publicclass Jsr181EchoService

    {

        @WebMethod(operationName = "echoString", action = "urn:EchoString")

        @WebResult(name = "echoResult")

        publicString echo(@WebParam(name = "echoParam", header = true) String input)

        {

            return input;

        }

    }

    這個代碼中有很多標注,絕大部分都可以在最后生成的WSDL文檔中找到對應值。

    @WebService這個標注放置在 Java 類之前,注明這個類的部分方法可以被發布為 Web 服務(還記得上一章提到的標注嘛?這個標注最終被XFire讀取后進行分析后會進一步處理成Web服務)。它的屬性用于設置 Web 服務被發布時的配置信息,常用的屬性包括:

    name(可選)Web 服務的名字,WSDL wsdl:portType元素的 name屬性和它保持一致,默認是 Java類或者接口的名字,也可以進行自定義,例如本例中的EchoService 

    serviceName(可選)Web 服務的服務名,WSDL wsdl:service元素的 name屬性和它保持一致,默認是Java類的名字(Jsr181EchoService),不過如果設置了name屬性,則名字改為name屬性的取值。

    targetNamespace(可選) WSDL文件所使用的 namespace,該 Web 服務中所產生的其他 XML文檔同樣采用這個作為namespace,一般取值為Web服務所在網站的名字,不過看起來任意取值并無出錯之處。

    @WebMethod(可選) 標注放在需要發布成 Web 服務的方法之前,有一些屬性可以設置。例如openrationName指明了SOAP調用時所看到的方法名為echoString,而不是類中的方法名echoaction則定義了操作的類型。一個類里面可以定義多個@WebMethod

    @WebResult(可選)標注定義了返回值(SOAP Response Envolope)中的name(名字)echoResult

    @WebParam(可選)則定義了哪些參數可以作為Web服務中的遠程可見的參數被調用,name設置了其屬性。

    乍看之下,這個Web服務中所用的標注有點多,實際上,這些標注可以不加任何屬性,例如只寫下@WebService@WebMethod即可,甚至于整個類只需要一個@WebService標注即可,此時代碼如下所示:

    package echo;

    import javax.jws.WebService;

    @WebService

    publicclass Jsr181EchoService {

        public String echo(

        String input) {

           return input;

        }

    }

    。此時最后所生成的Web服務中,所有的操作名,方法名和參數名都和此通Java類中的名稱一致。在這種情況下,該Web服務的訪問地址應為:

    http://localhost:8080/HelloWorldService/services/Jsr181EchoService?wsdl

           最后一步,乃是在XFire中配置并發布此服務了,在services.xml中加入的Web服務配置格式如下:

        <service>

           <!-- 如果配置文件中配置了額外的name屬性,那么最終的Web Service 名字將會以此處為準,即:

               ServiceName?wsdl;同樣的namespace的取值也會覆蓋Java類中的標注的值。

               <name>ServiceName</name>

               <namespace>http://www.un.gov/HelloEcho</namespace>

           -->

           <serviceClass>echo.Jsr181EchoService</serviceClass>

           <serviceFactory>

               org.codehaus.xfire.annotations.AnnotationServiceFactory

           </serviceFactory>

        </service>

    ,此配置相當的簡單,需要注意的是serviceClass就是我們寫有Web服務標注的Java類,而serviceFactory則必須是AnnotationServiceFactory(標注服務工廠),否則此Web服務將無法正常發布。

    好了,現在按照15.2.4一節的內容發布項目并運行后,即可在瀏覽器中鍵入下面地址進行測試了:

    http://localhost:8080/HelloWorldService/services/EchoServiceTest?wsdl

    EchoServiceTest的名字是因為在類中標注了@WebServiceserviceName屬性。之后就可以在Web Service Explorer中對它進行測試,或者是生成客戶端代碼。

    從這里看到這種開發方式相對也簡單的多,而且您將在下一節看到如果是Java EE 5的容器,開發過程將更加的簡單,而且不需要XFire類庫及其配置文件。



    posted on 2008-04-23 15:02 々上善若水々 閱讀(2545) 評論(0)  編輯  收藏 所屬分類: WebService

    主站蜘蛛池模板: 老色鬼久久亚洲AV综合| 久久亚洲色一区二区三区| 久久人午夜亚洲精品无码区| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 中国性猛交xxxxx免费看| 亚洲第一精品福利| 成全影视免费观看大全二| 成人亚洲国产精品久久| 久久精品国产亚洲av四虎| 好先生在线观看免费播放| www免费黄色网| 精品久久久久久亚洲精品| 亚洲?V无码乱码国产精品| 中文字幕天天躁日日躁狠狠躁免费| 亚洲日韩精品无码专区加勒比| 亚洲色中文字幕无码AV| 麻豆国产入口在线观看免费| 久久免费国产精品| 亚洲熟伦熟女专区hd高清| 国产精品亚洲一区二区三区在线| 四虎成人免费观看在线网址| 日本高清免费观看| 免费人成在线观看播放a| 亚洲乱码中文字幕小综合| 中文字幕亚洲不卡在线亚瑟| 欧美在线看片A免费观看| 永久免费A∨片在线观看| 亚洲av无码成人精品国产| 亚洲精品在线免费看| 亚洲性猛交XXXX| 国产一级一片免费播放| 成人免费视频网站www| a级毛片免费高清毛片视频| 亚洲AV无码专区在线厂| 亚洲日本中文字幕区| 亚洲高清无码在线观看| 国产精品成人免费视频网站京东| 久久这里只精品热免费99| 一级黄色免费网站| 亚洲精品无码久久久久秋霞| 亚洲成年人电影网站|