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

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

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

    心的方向

    新的征途......
    posts - 75,comments - 19,trackbacks - 0
     

    開發(fā)環(huán)境:

    Eclipse3.2

    MyEclipse5.5.1GA

    JDK1.5

     

    創(chuàng)建一個WEB Service工程XFire,按照網(wǎng)上的實例開發(fā)了一個簡單的HelloWorld程序,發(fā)布到TOMCAT一切OK

    客戶端用XFire插件開發(fā)(比較方便),需要先下載插件,步驟如下:

    打開EclipseHelp菜單,選擇”Software Updates”,然后再選擇”Find and Install.”
    選擇"Search for new features to install",然后點擊Next
    選擇"Create New Remote Site" name中輸入"XFire",在eclipse update site中輸入

    http://dist.codehaus.org/xfire/update/
    選擇OK
    選擇Finish

    2、新建一個java project。命名為“Client”,其他默認(rèn),finish

    3File->New->Other ,選擇“XFire”文件夾下的“Code generation from WSDL document”,打開代碼生成向?qū)В?/span>

    WSDL的地址欄填入http://localhost:8080/XFire/services/HelloWorldService?wsdlOutput directory欄中點瀏覽按鈕,選擇我們剛才新建的項目Client,這兩項是必填的。可選項中,package一欄可以選已經(jīng)存在的包名,如果不填這一項,代碼生成器會在wsdl目標(biāo)命名空間的基礎(chǔ)上創(chuàng)建一個。

       完成后,可以看到項目中多了XFire類庫,還有package下面的生成的一些類。此時要保證IDETomcat服務(wù)器是打開的。
        
    此時,在調(diào)用服務(wù)之前,還有一個重要的步驟,從XFireProject項目的右鍵菜單里調(diào)出Properties配置窗口,選中左面一欄中的XFire項,右面會列出所有與XFire運行有關(guān)的類庫,按列表中所示的,選中一些類庫,這些類庫在調(diào)用本服務(wù)時是必須的。

    Commons Codec(commons-codec-1.3.jar)

    Commons HttpClient(commons-httpclient-3.0.jar)

    如果缺少這兩個JAR文件,客戶端在調(diào)用WEB 服務(wù)時會出錯。

       所有的配置都已經(jīng)完成,最后就是編寫代碼完成調(diào)用。

     

    Tomcat5.0下正常發(fā)布,客戶端也能正常調(diào)用。然而在發(fā)布到WebSphere5.1(base)上面時,就出現(xiàn)了一些列問題,下面是問題簡單描述(只截取了LOG中部分信息)以及解決過程。

    [08-5-14 7:02:31:500 GMT] 2a29c7a6 XFireServlet  E org.codehaus.xfire.transport.http.XFireServlet  TRAS0014I: 下列異常已記錄 org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'xfire.typeMappingRegistry' defined in class path resource [org/codehaus/xfire/spring/xfire.xml]: Class that bean class [org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry] depends on not found; nested exception is java.lang.NoClassDefFoundError: org/codehaus/xfire/aegis/type/DefaultTypeMappingRegistry

    java.lang.NoClassDefFoundError: org/codehaus/xfire/aegis/type/DefaultTypeMappingRegistry

     

    [08-5-14 7:02:31:531 GMT] 2a29c7a6 ServletInstan E SRVE0100E: 未識別出由 servlet XFireServlet 拋出的 init() 異常:javax.servlet.ServletException: Error initializing XFireServlet.

           at org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:52)

    [08-5-14 7:02:31:531 GMT] 2a29c7a6 WebGroup      E SRVE0020E: Servlet 錯誤]-[XFireServlet]:無法裝入 servletorg.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'xfire.typeMappingRegistry' defined in class path resource [org/codehaus/xfire/spring/xfire.xml]: Class that bean class [org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry] depends on not found; nested exception is java.lang.NoClassDefFoundError: org/codehaus/xfire/aegis/type/DefaultTypeMappingRegistry

    java.lang.NoClassDefFoundError: org/codehaus/xfire/aegis/type/DefaultTypeMappingRegistry

     

    [08-5-14 7:02:31:547 GMT] 2a29c7a6 WebGroup      E SRVE0026E: Servlet 錯誤]-[XFireServlet]:org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'xfire.typeMappingRegistry' defined in class path resource [org/codehaus/xfire/spring/xfire.xml]: Class that bean class [org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry] depends on not found; nested exception is java.lang.NoClassDefFoundError: org/codehaus/xfire/aegis/type/DefaultTypeMappingRegistry

    java.lang.NoClassDefFoundError: org/codehaus/xfire/aegis/type/DefaultTypeMappingRegistry

     

    上述問題出現(xiàn)后開始在網(wǎng)上大肆查找資料,中間替換過WebSpherelib里面的幾個包,報的錯誤雖然有所變化,但仍然不能清除。最后覺得是否與JDK版本有關(guān),因為在WebSphere啟動日志里看到WebSphere用的JDK版本是1.4.1,而我所開發(fā)的XFire工程是JDK1.5,因此決定把XFire工程用JDK包換成1.4然后用1.4版本重新編譯,然后導(dǎo)出WAR包重新在WebSphere中發(fā)布。

     

    先將WebSphere下的lib包恢復(fù)到原來狀態(tài)(因為中間替換過幾個包)重新發(fā)布1.4版本后,錯誤依舊,好吧,開始替換WebSphere下的包:

    1、  先將WebSphere下的lib包中的qname.jar包替換為最新版本。

    2、  WebSphere下的lib包中的jdom.jar替換為jdom-1.0.jar.

    3、  WebSphere下的lib包中的wsdl4j.jar包替換為wsdl4j-1.5.1.jar(本來替換為xfire-1.2.6lib里面的wsdl4j-1.6.1.jar,但替換完之后服務(wù)起不來了,其他版本的沒試,在網(wǎng)上看到好像說wsdl4j-1.5.1解決了之前版本的什么BUG.)

    4、  WebSphere下的lib包中添加:stax-api-1.0.1.jarjaxen-1.1-beta-9.jar兩個包。(還有說需要添加stax-untils-20040917.jar,不過好像不添加也沒問題。這些包在xfire-1.2.6lib里面都有。)

    重新啟動服務(wù)器,我們終于可以看到盼望已久的wsdl描述頁面。

     

    然后就測試客戶端,注意XFire插件開發(fā)客戶端程序好像必須使用JDK1.5,低版本好像不支持。(記得在工程屬性里將JDK換成1.5后,然后在Java Compiler中選中“Enable project specific settings”,然后在下面的“Compiler compliance level選中5.0”,然后點Apply->ok,重新編譯一下),好,編寫一個測試類,運行就可以看到我們想要得到的HelloWorld了。

     

    總結(jié):注意JDK版本是否沖突。注意WebSphere下的lib中的包是否和項目中的包沖突以及包是否全。

    posted on 2008-05-14 16:36 阿偉 閱讀(3467) 評論(1)  編輯  收藏 所屬分類: Web Service

    FeedBack:
    # re: WebSphere5.1下發(fā)布XFire的問題解決
    2009-03-31 18:37 | liangkou
    非常感謝,用你的方法解決了問題,困擾好久了,找了很多都沒搞定:)
    打開wsdl時報錯:Error 500: Failed to load target servlet [XFireServlet]

    估計就是was5.1的一些庫比較老,不過,通過將這幾個jar包建共享庫的方法也可以解決這個問題。  回復(fù)  更多評論
      

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 暖暖免费日本在线中文| 国产成A人亚洲精V品无码性色| 国产日韩一区二区三免费高清| 学生妹亚洲一区二区| 亚洲ⅴ国产v天堂a无码二区| 免费在线观看毛片| 日韩欧美一区二区三区免费观看 | 免费爱爱的视频太爽了| 免费不卡在线观看AV| 亚欧国产一级在线免费| 亚洲一线产品二线产品| 亚洲综合久久1区2区3区| 国产成人麻豆亚洲综合无码精品| 四虎永久免费影院| 女性无套免费网站在线看| 最近最好最新2019中文字幕免费| 大妹子影视剧在线观看全集免费| 在线观看免费亚洲| 亚洲人成欧美中文字幕| 亚洲AV无码一区二区三区人| 亚洲第一区视频在线观看| 亚洲综合自拍成人| 久久国产亚洲高清观看| 亚洲V无码一区二区三区四区观看| 亚洲欧洲无码AV电影在线观看| 亚洲乱码中文字幕手机在线| yy6080久久亚洲精品| 免费人成视网站在线观看不卡| 国产又粗又猛又爽又黄的免费视频| 在线免费观看一级片| 免费看大美女大黄大色| 国产色爽免费视频| 免费乱理伦在线播放| 亚洲精品无码久久久| 国产亚洲精aa成人网站| 亚洲成在人线av| 亚洲精品国产第1页| 激情亚洲一区国产精品| 亚洲熟妇AV一区二区三区宅男| 亚洲狠狠婷婷综合久久| 国产AV无码专区亚洲AV蜜芽|