<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服務開發),都支持這種開發方式,例如:JBoss,GlassFishWebLogic10等等,本節就簡要討論使用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 々上善若水々 閱讀(2540) 評論(0)  編輯  收藏 所屬分類: WebService

    主站蜘蛛池模板: 香蕉免费一区二区三区| a级毛片视频免费观看| 成年网站免费视频A在线双飞| 久久久久久a亚洲欧洲aⅴ| A国产一区二区免费入口| 亚洲熟妇无码另类久久久| 免费播放在线日本感人片| 亚洲VA中文字幕不卡无码| 久久精品视频免费看| 亚洲综合无码一区二区| www视频免费看| 亚洲午夜无码毛片av久久京东热| 久久综合AV免费观看| 亚洲av无码av在线播放| 亚洲国产中文字幕在线观看 | 又粗又硬又黄又爽的免费视频 | 免费人成在线观看视频高潮| 亚洲AV无码一区东京热久久| 91香蕉在线观看免费高清| 亚洲videos| 全黄a免费一级毛片人人爱| 一级有奶水毛片免费看| 中文字幕亚洲综合久久| 女人被弄到高潮的免费视频| 水蜜桃视频在线观看免费| 国产亚洲美女精品久久久久狼| 最近免费中文字幕mv电影| 亚洲色精品VR一区区三区| 亚洲精品网站在线观看不卡无广告| 亚洲精品黄色视频在线观看免费资源 | 国产精品观看在线亚洲人成网| 亚洲区小说区图片区| 日韩插啊免费视频在线观看| 国产精品亚洲精品青青青| 国产精品深夜福利免费观看| baoyu777永久免费视频| 亚洲免费视频播放| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 日本xxwwxxww在线视频免费| 女同免费毛片在线播放| 亚洲中文字幕无码亚洲成A人片|