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

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

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

    blog.Toby

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks

    使用Axis,要發布一個Web服務非常簡單,簡直不能再簡單了,盡管看起來過程和相關代碼有些長。我這個帖子里用到了這些軟件:Axis 1.1、Eclipse 2.1和Eclipse的Tomcat插件2.2(Sysdeo Tomcat plugin)。發布的方法如下:

    我要發布的服務是一個圖書商店,公布的方法有添加圖書addBook、列表圖書listBooks、刪除圖書deleteBook等等,為簡單起見這里就只發布一個添加圖書方法,因為其他方法的發布是類似的。

    1、首先在Eclipse里新建一個名為bookstore的Tomcat工程,注意要安裝了前面說的Tomcat插件才有這個選項的。如果沒有安裝可以建立一個java工程,然后手動建立必要的目錄結構(WEB-INF等),并在Tomcat的server.xml里手動增加與項目對應的<context>項。

    2、接下來建立圖書類(com.bookstore.model.Book),圖書有名稱、ISDN號和頁數三個屬性,這是一個Bean類,代碼如下:

    package?com.bookstore.model;

    public?class?Book?{
    ????private?String?name;
    ????private?String?ISDN;
    ????private?
    int ?page;

    ????public?String?getISDN()?{
    ????????
    return ?ISDN;
    ????}

    ????public?String?getName()?{
    ????????
    return ?name;
    ????}

    ????public?
    int ?getPage()?{
    ????????
    return ?page;
    ????}

    ????public?
    void ?setISDN(String?string)?{
    ????????ISDN?
    = ?string;
    ????}

    ????public?
    void ?setName(String?string)?{
    ????????name?
    = ?string;
    ????}

    ????public?
    void ?setPage( int ?i)?{
    ????????page?
    = ?i;
    ????}

    }

    3、接下來建立用來提供服務的類(com.bookstore.BookSvc),這個類就是實際的功能類了,它里面只有一個public的addBook()方法,而它的參數只有一個就是要添加的圖書。代碼如下:

    package?com.bookstore;

    import?com.bookstore.model.Book;

    public?class?BookSvc?{
    ????
    ????public?
    void ?addBook(Book?book){
    ????????
    // here?you?save?a?book?into?database
    ????????System.out.println( " Book?has?been?added. " );
    ????}
    }

    4、現在,把下載來的Axis解壓縮到一個文件夾,這里假設你解到C:\axis-1_1。把C:\axis-1_1\webapps\axis\WEB-INF\lib目錄下的所有.jar文件復制到你的這個web應用程序的WEB-INF\lib下,再把C:\axis-1_1\webapps\axis\WEB-INF目錄下的web.xml復制到你的web應用程序的WEB-INF下。這個步驟相當于在你的web應用程序中配置了Axis。

    5、為了讓Axis知道你要發布哪些服務,你得在WEB-INF下建立一個名為server-config.wsdd的文件,內容如下:

    <? xml?version="1.0"?encoding="UTF-8" ?>
    < deployment? xmlns ="http://xml.apache.org/axis/wsdd/" ?xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java" >
    ?
    < globalConfiguration >
    ??
    < parameter? name ="adminPassword" ?value ="admin" />
    ??
    < parameter? name ="attachments.Directory" ?value ="C:\eclipse\workspace\bookstore\WEB-INF\attachments" />
    ??
    < parameter? name ="attachments.implementation" ?value ="org.apache.axis.attachments.AttachmentsImpl" />
    ??
    < parameter? name ="sendXsiTypes" ?value ="true" />
    ??
    < parameter? name ="sendMultiRefs" ?value ="true" />
    ??
    < parameter? name ="sendXMLDeclaration" ?value ="true" />
    ??
    < parameter? name ="axis.sendMinimizedElements" ?value ="true" />
    ??
    < requestFlow >
    ???
    < handler? type ="java:org.apache.axis.handlers.JWSHandler" >
    ????
    < parameter? name ="scope" ?value ="session" />
    ???
    </ handler >
    ???
    < handler? type ="java:org.apache.axis.handlers.JWSHandler" >
    ????
    < parameter? name ="scope" ?value ="request" />
    ????
    < parameter? name ="extension" ?value =".jwr" />
    ???
    </ handler >
    ??
    </ requestFlow >
    ?
    </ globalConfiguration >
    ?
    < handler? name ="LocalResponder" ?type ="java:org.apache.axis.transport.local.LocalResponder" />
    ?
    < handler? name ="Authenticate" ?type ="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
    ?
    < handler? name ="URLMapper" ?type ="java:org.apache.axis.handlers.http.URLMapper" />
    ?
    < service? name ="Version" ?provider ="java:RPC" >
    ??
    < parameter? name ="allowedMethods" ?value ="getVersion" />
    ??
    < parameter? name ="className" ?value ="org.apache.axis.Version" />
    ?
    </ service >
    ?
    < service? name ="BookSvc" ?provider ="java:RPC" >
    ??
    < parameter? name ="allowedMethods" ?value ="*" />
    ??
    < parameter? name ="className" ?value ="com.bookstore.BookSvc" />
    ?
    </ service >
    ?
    < service? name ="AdminService" ?provider ="java:MSG" >
    ??
    < parameter? name ="allowedMethods" ?value ="AdminService" />
    ??
    < parameter? name ="enableRemoteAdmin" ?value ="false" />
    ??
    < parameter? name ="className" ?value ="org.apache.axis.utils.Admin" />
    ??
    < namespace > http://xml.apache.org/axis/wsdd/ </ namespace >
    ?
    </ service >
    ?
    < transport? name ="local" >
    ??
    < responseFlow >
    ???
    < handler? type ="LocalResponder" />
    ??
    </ responseFlow >
    ?
    </ transport >
    ?
    < transport? name ="http" >
    ??
    < requestFlow >
    ???
    < handler? type ="URLMapper" />
    ???
    < handler? type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
    ??
    </ requestFlow >
    ?
    </ transport >
    </ deployment >

    這個文件里發布了三個服務:Version、AdminService和我們的BookSvc。還有一個方法可以生成這個文件,好象Axis推薦使用這種生成的方法,就是在同樣目錄下寫一個deploy.wsdd文件(如果不想看可以直接跳到下一步),內容如下:

    < deployment? xmlns ="http://xml.apache.org/axis/wsdd/"
    ????????????xmlns:java
    ="http://xml.apache.org/axis/wsdd/providers/java" >
    ?
    < service? name ="BookSvc" ?provider ="java:RPC" >
    ??
    < parameter? name ="className" ?value ="com.bookstore.BookSvc" />
    ??
    < parameter? name ="allowedMethods" ?value ="*" />
    ?
    </ service >
    </ deployment >

    也就是說deploy.wsdd里只包含關于我們的服務的描述,確認Tomcat已經啟動,然后在同一目錄下用下面這個命令生成server-config.wsdd文件:

    java?org.apache.axis.client.AdminClient? - lhttp: // localhost:8080/bookstore/services/AdminService?deploy.wsdd

    其中bookstore是我這個web應用程序的虛擬路徑。

    6、重新啟動Tomcat,訪問路徑http://localhost:8080/bookstore/services,就可以看到現在發布了三個Web服務,如下圖。點擊每個服務后的wsdl鏈接可以看到對應的WSDL描述。

    posted on 2006-07-03 14:40 渠上月 閱讀(415) 評論(1)  編輯  收藏 所屬分類: java tips

    評論

    # re: 使用Axis發布簡單的Web服務 2006-07-03 14:41 渠上月
    這篇帖子是對《使用Axis發布簡單的Web服務》的補充。

    可以看出,在Axis里書寫deploy.wsdd并利用org.apache.axis.client.AdminClient發布,其主要工作就是把<service>標簽中的內容添加在server-config.wsdd里,所以一般直接編輯server-config.wsdd文件會更方便一些。不過當你還沒有server-config.wsdd文件時,使用deploy.wsdd的方法會更方便些,因為AdminClient會幫你生成一些額外的xml元素(<handler>等等),而這些元素是必要的。

    服務發布以后,就可以在IE瀏覽器里看到它的WSDL,一般是服務的URL后面加一個“?wsdl”,例如添加圖書的WSDL可以通過http://localhost:8080/bookstore/services/BookSvc?wsdl看到。至于Java類是以何種規則映射到WSDL的,請參考JAX-RPC規范;WSDL本身的說明見這里;為了搞清生成的WSDL中各種URL格式的名稱空間,最好對XML Schema有所了解,我覺得這篇文章還不錯。

    我們還可以通過IE瀏覽器直接調用服務,方法是在服務URL后加“method=xxx”,其中xxx是要調用的方法名稱。例如可以通過http://localhost:8080/bookstore/services/BookSvc?method=addBook調用添加圖書方法,按照我們的服務類,在Tomcat的控制臺上應該可以看到打出了“Book has been added.”的字樣。

    因為添加圖書方法的參數是一個自定義類型,所以在IE里調用時不能指定參數值(或者是可以以其他格式指定,但我還不知道);如果參數是簡單類型,就可以指定了。例如我們可以為BookSvc增加一個echo()方法,參數是一個java.lang.String類型的值,如下所示,然后重新編譯并啟動Tomcat(server-config.wsdd文件不必更改)。

    public void echo(String str){
    System.out.println("Hello "+str);
    }

    在IE里輸入http://localhost:8080/bookstore/services/BookSvc?method=echo&str=Mike,就會看到Tomcat的控制臺里打出了“Hello Mike”。如果有多個參數,只要把這些參數都列在URL里即可。

    來源:
    http://www.cnblogs.com/bjzhanghao/archive/2004/10/10/50530.html
      回復  更多評論
      

    主站蜘蛛池模板: 久久亚洲精品国产亚洲老地址| 思思久久99热免费精品6| 久久久久久影院久久久久免费精品国产小说| 毛片免费观看网站| 91天堂素人精品系列全集亚洲| 国产成人1024精品免费| 国产精品酒店视频免费看| 亚洲精品国产第1页| 久久狠狠躁免费观看| 在线亚洲精品福利网址导航| 免费国产污网站在线观看不要卡| 最近中文字幕无吗免费高清| 亚洲av永久无码嘿嘿嘿| 亚洲毛片在线免费观看| 亚洲国产人成在线观看69网站 | 中文字幕a∨在线乱码免费看| 国产精品另类激情久久久免费| 亚洲色无码专区一区| 成人奭片免费观看| 亚洲国产系列一区二区三区| 成人免费午夜无码视频| 亚洲AV无码国产精品色| 日本精品人妻无码免费大全 | 亚洲第一页日韩专区| 四虎精品成人免费视频| 国产偷国产偷亚洲高清日韩| 国产高潮久久免费观看| 亚洲精品乱码久久久久久按摩| 中文成人久久久久影院免费观看| 亚洲国产另类久久久精品黑人| 国产无遮挡色视频免费观看性色| 亚洲精品乱码久久久久久蜜桃不卡| 国产在线观看免费视频软件| 色婷婷六月亚洲婷婷丁香| 曰批全过程免费视频播放网站| 亚洲mv国产精品mv日本mv| 国产成人免费手机在线观看视频 | 免费无毒a网站在线观看| 亚洲人成网亚洲欧洲无码久久| 一级特黄aa毛片免费观看| 亚洲女人18毛片水真多|