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

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

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

    kapok

    垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks
    http://www.cjsdn.net/post/view?bid=5&id=151014&sty=1&tpg=1&age=0

    這篇比較早,放在自己的blog里,順便貼過來,讓版本看看,是否可以加分。
    Apache Axis開發WEB Service簡要說明(1)- -



    1 介紹

    本文并不是想介紹Web服務的原理、系統架構等,我們假設您已經了解了關于Web服務的一些基本的概念、原理等知識。本文主要是針對那些已經了解Web服務概念,但是還沒有親身體會Web服務所帶來令人歡欣鼓舞的特征的開發人員。在此我們認為你已經具備了Java、XML等基礎知識,如果你還有其他開發環境的經驗例如VB、VC那是再好不過的了。
    1.1 Web服務

    雖然我們并不想詳細講述Web服務的體系結構,但是大概的介紹一下還是有必要的。Web服務是一種新型的Web應用程序。不同于其他Web應用程序,它是自適應、自我描述、模塊化的應用程序,并可以跨越Web進行發布、定位以及調用。簡單的Web服務可以提供例如天氣預報或者航班信息的服務。一旦部署了Web服務,其他的應用程序就可以發現和調用所部署的服務。
    1.2 AXIS項目

    Axis框架來自 Apache 開放源代碼組織,它是基于JAVA語言的最新的 SOAP 規范(SOAP 1.2)和 SOAP with Attachments 規范(來自 Apache Group )的開放源代碼實現。有很多流行的開發工具都使用AXIS作為其實現支持Web服務的功能,例如JBuilder以及著名的Eclipse J2EE插件Lomboz。AXIS的最新版本是1.1,可以從http://ws.apache.org/axis/index.html下載。下圖是AXIS核心引擎的體系結構圖:

    整個AXIS項目包括以下幾個部分:

    1. 消息流子系統

    消息流子系統提供了靈活的消息傳遞框架,這個消息傳遞框架包括處理程序、鏈、序列化程序和反序列化程序。處理程序是一個處理請求、響應和故障流的對象。處理程序可被組合在一起成為鏈,而且可以使用一個靈活的部署描述符來配置這些處理程序的順序。

    2. 傳輸框架子系統

    提供了一個傳輸框架,這個傳輸框架可以幫助您創建自己的可插式傳輸發送器和傳輸偵聽器。

    3. 數據編碼子系統

    AXIS完全按照 XML Schema 規范提供各種數據類型的自動序列化,并且提供功能擴展接口來使用您自己定制的序列化器和反序列化器。

    4. 其他

    AXIS完全支持 WSDL 以及日志記錄、出錯以及故障處理機制。它同時提供一些工具用來講WSDL文檔轉換成客戶端的調用框架以及根據類來產生WSDL定義文檔。

    AXIS目前版本支持的標準是:W3C SOAP 1.1 和 1.2;WSDL 1.1;SAAJ 1.1(SUN公司:SOAP with Attachments API for Java);JAX-RPC(SUN公司:Java API for XML-Based RPC)1.0。
    2 Axis使用
    2.1 Axis運行需要哪些jar文件

    對Axis解包后,將axis-1_1/webapps/axis/WEB-INF/lib/目錄下的jar文件復制到/usr/local/apache/htdocs/WEB-INF/lib目錄下(Web應用程序的目錄)。應包括以下jar文件。

    axis-ant.jar

    axis.jar

    commons-discovery.jar

    commons-logging.jar

    jaxrpc.jar

    log4j-1.2.8.jar

    saaj.jar

    wsdl4j.jar
    2.2 Axis使用注意事項
    2.2.1 獲取WSDL文件

    Axis支持用戶通過網絡方式,從已發布WEB服務的機器上獲取WEB服務描述文件WSDL。用戶只需簡單在IE地址欄輸入如下格式訪問鏈接即可:

    http://webappIp[/webapp]/services/WebServiceName?wsdl

    其中:

    webAppIp:運行WEB服務機器的地址。

    [/webapp]:運行Axis WEB服務的Web應用名;如果應用使用跟目錄,則不需要

    services/WebServiceName:WEB服務定位路徑,類似Servlet路徑;其中WebServiceName為定義的Web服務接口名稱。

    用戶將訪問獲的文件直接保存,即可獲取對應WEB服務的WSDL描述文件。
    2.2.2 參數類型定義(輸入、輸出參數)

    如果用戶希望使用函數定義中的輸出參數獲取響應結果時,自動生成的WSDL文件無法滿足,必須手動對自動生成的WSDL文件進行修改。

    如定義java Interface接口如下:

    int queryUser(long type,User[] users) ;

    則使用java2WSDL生成的WSDL如下:

    為了將User[]作為輸出參數,必須修改自動生成的WSDL文件,在QueryUserResponse返回消息中,添加User[]參數定義,告知Axis在WSDL2java處理中,將User[]作為輸入/輸出參數處理。

    2.2.3 server-config.wsdd

    Axis會在WEB應用程序的WEB-INF/目錄下自動生成一個名字為server-config.wsdd的xml文件,其中記錄了已部署的WEB服務。每部署一個新的WEB服務時,Axis都會將新服務的描述信息加入到server-config.wsdd中。

    如果需要在Web服務器啟動時,自動加載WEB服務,只需將server-config.wsdd與WEB應用描述文件web.xml一并放置在WEB-INF目錄下即可。

    server-config.wsdd中的內容可以手工更改獲取,也可通過發布獲取自動生成的文件。

    a) 將WEB服務發布后,從WEB應用的WEB-INF目錄下,獲取自動生成的server-config.wsdd文件。

    b) 手工更改時,將deploy.wsdd文件中的…中的內容直接拷貝,粘貼到原始server-config.wsdd文件中單獨行即可。
    2.2.4 如何將Axis集成到自己的Web應用中。

    Axis是以Servlet的方式運行的,而Tomcat的作用相當于Servlets容器(Container),因此只要配置得當,就可以使Axis在Tomcat環境中運行,這一點也適用于Tomcat以外的其它應用服務器。在Tomcat中配置Axis的方法如下。

    將axis-1_1/webapps/axis/WEB-INF/web.xml中的Servlet配置項復制到自己Web應用描述文件web.xml中對應位置上。通常應包括以下內容。

    在Servlet定義與servlet-mapping定義間,將本WEB應用的Servlet定義加入。

    AxisServlet

    Apache-Axis Servlet

    org.apache.axis.transport.http.AxisServlet

    AdminServlet

    Axis Admin Servlet

    org.apache.axis.transport.http.AdminServlet

    100

    SOAPMonitorService

    SOAPMonitorService

    org.apache.axis.monitor.SOAPMonitorService

    SOAPMonitorPort

    5001

    100

    AxisServlet

    /axis/servlet/AxisServlet

    AxisServlet

    *.jws

    AxisServlet

    /services/*

    SOAPMonitorService

    /SOAPMonitor

    wsdl

    text/xml

    xsd

    text/xml

    2.2.5 Axis提供了哪些開發工具

    Apache Axis提供了WSDL2Java和Java2WSDL兩個開發工具。

    WSDL2Java利用已知的WSDL文件生成服務端和客戶端代碼。該WSDL文件可以是由合作伙伴提供的,也可以是利用Java2WSDL生成的。Java2WSDL根據已有的Java類文件生成WSDL文件,Java類文件可以是接口類文件,并不需要實現細節。

    此外Axis還提供了SoapMonitorApplet和TCPMon工具,可用于監測Web服務。



    1 如何開發Web服務的服務端和客戶端代碼
    1.1 生成或取得WSDL文件

    Java2WSDL是Axis提供的利用Java類文件得到WSDL文件的工具。類文件可以使用接口文件編譯生成。

    生成WSDL文件以后,就可以利用Axis提供的WSDL2Java工具生成Web服務的服務端代碼和客戶端代碼了

    注意事項 :

    WSDL文件也可以由合作伙伴提供。這種情況下合作伙伴往往是Web服務的提供者或標準接口的制定者,開發者只要按照既定的WSDL文從件生成客戶端或服務端代碼就可以了。

    1.2 開發客戶端

    在開發客戶端時,WEB接口定義文件WSDL一般已經提供,或者可以通過Internat獲取。如果未提供一般也提供了接口描述文檔,詳細描述了接口輸入、輸出參數定義,據此我們可以聲明Interface接口,通過Aixs提供的java2WSDL生成WSDL文件。

    下面我們假定WSDL文件已經提供;并且我們假定讀者對eclipse、ant已經有一定了解。

    WSDL2Java工具用于從WSDL文件生成客戶端存根(stub)代碼,服務端框架(skeleton)代碼以及WSDL中的數據類型文件(生成與之對應的Java代碼)。開發人員只需向框架代碼中補充相關的業務邏輯代碼即可得到完整的Web服務代碼,因此該工具極大地減輕了開發人員的編碼負擔。

    axis_ant.jar包中已經定義了Axis集成Ant的相關Ant任務定義。任務定義在axis-tasks.properties中

    #properties file for taskdefing the public Axis taskdefs

    axis-wsdl2java=org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask

    axis-java2wsdl=org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask

    axis-admin=org.apache.axis.tools.ant.axis.AdminClientTask

    Ant任務名
      

    對應Axis提供的工具
      

    備注

    axis-wsdl2java
      

    WSDL2java
      

    axis-java2wsdl
      

    Java2WSDL
      

    axis-admin
      

    AdminClient
      

    1. 假定應用工程目錄結構如下:

    │ build.properties

    │ build.xml

    │ myAxis.wsdl

    ├─bin

    └─src

    2. build.properties文件內容如下:

    axis.home = D:\\java\\axis\\axis-1_2beta

    wsdl.file = myAxis.wsdl

    namespace.service = urn:MyAxis

    package.service = com.MyAxis.client

    3. Ant文件build.xml內容如下:

    定義Axis包所在類路徑-->

    從axis-ant.jar包中,引入Axis的Ant任務定義-->

    classpathref="axis.classpath" />

    依據WSDL文件,生成客戶端代碼-->

    url="${basedir}/${wsdl.file}"

    deployscope="Request"

    output="${generated.path.src}"

    serverside="false"

    skeletondeploy="false"

    testcase="true"

    noimports="false"

    >

    1.1 開發服務端

    開發服務端程序的一般步驟如下:

    l 根據接口定義,定義java Interface接口。

    l 根據interface接口文件,使用java2WSDL生成WEB服務描述文件

    l 根據WSDL文件,使用WSDL2java生成對應的服務端代碼

    l 修改自動生成的實現代碼類[webapp]SoapBindingImpl.java,完成接口具體操作。

    l 考慮到WEB服務為系統對外門戶,具體業務邏輯可能分模塊實現,建議考慮參考門面模式完成interface定義;在服務端具體實現時,WEB服務接口部分向邏輯提供接口,由邏輯實現組件完成具體的邏輯操作。WEB服務部分僅完成SOAP協議解封裝等工作。

    1. 假定工程路徑如下:

    ├─conf

    ├─generated

    ├─source

    ├─src

    └─WebRoot

    ├─META-INF

    └─WEB-INF

    └─lib

    2. build.properties Ant腳本使用屬性

    wsdl.file = myAxis.wsdl

    ########接口文件com.myaxis.MyAxis.java;供java2WSDL使用#####

    wsi.interface = com.myaxis.MyAxis

    location = http://localhost/CmsWsi/services/CmsWsi

    ########期望生成的接口定義包與命名空間對應關系;供WSDL2java使用###

    namespace.service = http://com. myaxis.MyAxis/1.00

    package.service = com.myaxis.server

    ########期望生成的接口相關消息類與命名空間對應關系;供WSDL2java使用###

    namespace.service.msg = http://com.myaxis.msg

    package.service.msg = com.myaxis.server.msg

    ########WEB容器定義,共AdminClient發布、注銷WEB服務使用###

    target.port = 80

    target.server = localhost

    target.appname = MyAxis

    servletpath.admin = services/AdminService

    ########在ANT腳本中采用命令行方式時,發布調用的AdminClient位置##

    location.admin = http://localhost/MyAxis/services/AdminService

    3. build.xml

    加載build.propertis定義-->

    容器下的類路徑,Axis相關jar已拷貝到對應目錄下-->

    引入Axis的Ant任務定義-->

    classpathref="axis.classpath" />

    初試化,構造WSDL2java生成代碼路徑,-->

    依據java Interface定義,生成WSDL定義文件-->

    location="${location}"

    namespace="${namespace.service}"

    output="${generated.path}/${wsdl.file}"

    style="RPC"

    >

    根據WSDL文件,生成WEB服務的服務器端源碼;考慮到接口更改,版本管理的方便,生成代碼不直接導向src目錄;第一次運行后,需要手工將代碼拷貝到src;每次修改接口后,必須清空生成源目錄,通過比較工具修改src目錄下的源文件,否則Axis判斷[webapp]SoapBindingImpl.java已存在不會進行更新。-->

    url="${basedir}/${wsdl.file}"

    deployscope="Request"

    output="${generated.path.src}"

    serverside="true"

    skeletondeploy="false"

    testcase="true"

    noimports="false"

    >

    拷貝Web服務發布、注銷腳本,deploy.wsdd和undeploy.wsdd-->

    發布WEB服務到WEB容器,Axis在WEB-INF/下自動生成server-config.wsdd-->

    腳本方式發布服務-->

    命令行方式發布服務-->

    fork="true"

    failonerror="true">


    posted on 2005-08-12 22:46 笨笨 閱讀(1047) 評論(0)  編輯  收藏 所屬分類: J2EEALL
    主站蜘蛛池模板: 久久久亚洲欧洲日产国码农村| 免费又黄又爽又猛的毛片| 亚洲日韩精品射精日| 一个人晚上在线观看的免费视频| 日韩a在线观看免费观看| 亚洲JIZZJIZZ妇女| 国产精品四虎在线观看免费| 亚洲精品女同中文字幕| 四虎AV永久在线精品免费观看| 国产成人亚洲综合a∨| 亚洲av成人一区二区三区在线观看 | 亚洲av无码国产综合专区| 国产免费的野战视频| 久久精品国产亚洲αv忘忧草| 国产在线a免费观看| 亚洲私人无码综合久久网| 国产99视频免费精品是看6| 国产va免费观看| 亚洲尹人香蕉网在线视颅| 国产精品视频免费观看| 亚洲JLZZJLZZ少妇| 亚洲线精品一区二区三区影音先锋 | 亚州免费一级毛片| 亚洲国产成人手机在线观看| 亚洲成aⅴ人片久青草影院| 国产在线观看无码免费视频| 亚洲av日韩av不卡在线观看| 在线观看H网址免费入口| 亚洲精华国产精华精华液| 亚洲日韩人妻第一页| 日本免费污片中国特一级| 亚洲六月丁香婷婷综合| 亚洲人成网站观看在线播放| 免费在线中文日本| 亚洲日韩精品无码专区加勒比| 国产91精品一区二区麻豆亚洲 | 国产精品亚洲玖玖玖在线观看| 久久国产色AV免费观看| 亚洲AV无码一区二区三区牲色| 亚洲人精品午夜射精日韩 | 18禁无遮挡无码网站免费|