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

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

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

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
    最近項目中需要用到CXF,但是本人使用的MyEclipse Blue Edition 6.1居然沒有集成CXF的支持。因此抽時間研究了下將Eclipse SOA Tools Platform插件集成到其中。

          MyEclipse Blue Edition 6.1中使用的Eclipse Platform為3.3.2。因此本人下載了多個Eclipse 3.3.2版本的STP插件進行測試。最后發現STP R200710161054版可以和MyEclipse Blue Edition 6.1版完美集成。

          此處可以下載STP R200710161054 all in one版

          具體安裝其實超簡單,將下載的ZIP包解壓到MyEclipse安裝目錄下的myeclipse目錄中。此處需要特別小心,注 意:eclipse,feature和plugins目錄可以覆蓋;但是feature和plugins中的同名目錄不能覆蓋。

          此外,由于STP插件中的文件的目錄和文件名比較長,解壓后可能會發生超過系統目錄文件長度的錯誤。解決方法是將MyEclipse安裝到磁盤根目錄下的 一個短名稱的目錄中,比如C:"Blue等。

          這次來講下如何利用該工具快速開發一個簡單的WebService。

          本文中使用的CXF為apache-cxf-2.0.5-incubator

    一、對STP插件進行設置:

          啟動MyEclipse Blue Edition 6.1。選擇菜單Window->Preferences, 在對話框左側的SOA Tools分支下,可以進行STP插件的設置。

          1. 添加CXF Runtime

          選中分支中的Installed Runtimes,點擊Add;

    添加CXF Runtime

          選擇Apache CXF 2.0,然后Next;

    Apache cxf 2.0

          瀏覽至apache-cxf-2.0.5-incubator的解壓目錄,點擊Finish。注意此處的JRE是插件運行的JRE,最好選擇Sun的 JRE1.5(我選IBM JRE的時候插件出錯)。

    choose

          2. 其他設置

          選中JAX-WS,選擇使用向導;

    wizard

          設定生成WSDL文件的Soap協議版本;

          點擊OK,完成插件的設置。

    二、開發WebService

          使用CXF開發WebService有兩種模式:從Java接口開始;從WSDL文件開始。

          這里介紹從Java接口開始開發(從WSDL文件開始開發的方法,看完本文自然可以領悟了。)

          1. 新建項目

          選擇菜單File->New->Project...,選 擇SOA Tools下的JAX-WS Java First Project;

          輸入項目名稱,JavaFirst;

          選擇Runtime;

          點擊Finish即可建立項目。

          新建的項目最好手動建一個lib目錄,然后將所有的cxf庫文件都拷貝進來,然后刪除項目build path中由向導添加的庫,自己手動將lib中的庫添加進項目的build path中。此外,JRE最好也換一下。

          2. 創建包

          選擇菜單File->New->Package,創建一個叫com.javafirst.pk的包。

          3. 創建接口

          在剛剛創建的包下面,通過File->New->Interface,創建一個叫Hello的接口。

          接口中代碼如下:

    public interface Hello {
        
    public String echo(String msg);
    }

           4. 添加WebService annotation

          在Package Explorer中,選中剛剛定義的接口,通過菜單SOA->JAX-WS->Create Web Service來添加;

          或者右鍵點擊接口,在右鍵菜單中的JAX-WS Tools->Create Web Service來添加。

          保留向導的缺省參數,生成WebService Annotaion。

    添加annotation后的代碼如下:

    @WebService(targetNamespace="http://pk.javafirst.com/", name="Hello")
    public interface Hello {
        
    public String echo(String msg);
    }

          5. Save(此處需要預先選擇Project->Build Automaticly)之后,插件會自動生成wsdl文件和一堆垃圾src。

    此時,需要對wsdl文件進行編輯。需要修改的地方有3處:

    a. 為了便于發布以及便于編程人員理解,下面代碼中的arg0可以修改為接口中定義的msg;注意,一旦修改,則不能 通過后面生成的Client來測試了 。

    <xs:complexType name="echo">
        
    <xs:sequence>
            
    <xs:element minOccurs="0" name="arg0" type="xs:string" />
        
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="echo">
        
    <xs:sequence>
            
    <xs:element minOccurs="0" name="msg" type="xs:string" />
        
    </xs:sequence>
    </xs:complexType>

    b. 為了兼容.net需要將parameters等替換。

    <wsdl:message name="echoResponse">
        
    <wsdl:part name="parameters" element="tns:echoResponse">
        
    </wsdl:part>
    </wsdl:message>
    <wsdl:message name="echo">
        
    <wsdl:part name="parameters" element="tns:echo"></wsdl:part>
    </wsdl:message>
    <wsdl:message name="echoResponse">
        
    <wsdl:part name="echoOutput" element="tns:echoResponse">
        
    </wsdl:part>
    </wsdl:message>
    <wsdl:message name="echo">
        
    <wsdl:part name="echoInput" element="tns:echo"></wsdl:part>
    </wsdl:message>

    c. wsdl發布的端口

    修改格式為 http://<服務器URL>:<服務器端口>/<項目名>

    <wsdl:service name="HelloService">
        
    <wsdl:port name="HelloPort" binding="tns:HelloServiceSoapBinding">
        
    <soap12:address location="http://localhost:9090/hello" />
        
    </wsdl:port>
    </wsdl:service>
    <wsdl:service name="HelloService">
        
    <wsdl:port name="HelloPort" binding="tns:HelloServiceSoapBinding">
            
    <soap12:address location="http://localhost:8088/JavaFirst" />
        
    </wsdl:port>
    </wsdl:service>

          6. 刪除所有的垃圾src。

          7. 右鍵點擊wsdl文件,通過JAX-WS Tools->Generate Code生成新的接口和實現代碼。

    其中的Client和Server是用于脫離容器測試WebService的,一般都選上。

    最后生成的文件列表如圖所示:

            8. 編輯HelloImpl.java文件

    簡單的返回輸入值:

    public class HelloImpl implements Hello {

        
    private static final Logger LOG = Logger.getLogger(HelloImpl.class.getName());

        
    /* (non-Javadoc)
         * @see com.javafirst.pk.Hello#echo(java.lang.String  msg )*
         
    */

        
    public java.lang.String echo(java.lang.String msg) 
            LOG.info(
    "Executing operation echo");
            System.out.println(msg);
            
    try {
                java.lang.String _return 
    = msg;
                
    return _return;
            }
     catch (Exception ex) {
                ex.printStackTrace();
                
    throw new RuntimeException(ex);
            }

        }


    }

          9. 發布

          右鍵點擊wsdl文件,選擇菜單Build Package...即可生成war包。

          注意此war包中沒有包含任何的庫文件,因此需要手動打包(比如用winrar之類),將lib目錄添加到war包中的WEB-INF目錄下。

          將此war包發布到應用服務器,即可。

          此時,發布的wsdl的端口是http://<server>:<port>/<context root>/services/<項目名>

          這里所謂context root在WAS中就是發布WAR包時的上下文根,在tomcat中默認就是項目名。

          因此,可以將wsdl文件中的地址和端口做相應的改動,注意修改了此處,如果用生成的Client來測試的話,Client中的相應地址也要改為和此處一 致。

    <wsdl:service name="HelloService">
        
    <wsdl:port name="HelloPort" binding="tns:HelloServiceSoapBinding">
            
    <soap12:address location="http://localhost:8088/Hello/services/Hello" />
        
    </wsdl:port>
    </wsdl:service>

    然后再重新打包,發布一次。

    至此,一個簡單的WebSerive已經發布成功。

    posted on 2010-03-18 17:33 rogerfan 閱讀(1580) 評論(0)  編輯  收藏 所屬分類: 【開源技術】
    主站蜘蛛池模板: 亚洲美女中文字幕| a级亚洲片精品久久久久久久 | 91在线视频免费91| 亚洲国产av高清无码| 成年人网站免费视频| 精品久久久久久亚洲精品| 免费电视剧在线观看| 久久亚洲中文无码咪咪爱| 午夜dj在线观看免费视频| 成人亚洲国产精品久久| 亚洲性在线看高清h片| 可以免费观看的毛片| 自怕偷自怕亚洲精品| 91免费精品国自产拍在线不卡| 亚洲香蕉久久一区二区| 大陆一级毛片免费视频观看 | 亚洲国产精品无码久久久| 男女免费观看在线爽爽爽视频 | gogo免费在线观看| 久久精品国产精品亚洲艾| 日本h在线精品免费观看| 亚洲天然素人无码专区| 亚洲国产电影av在线网址| 国产一区二区免费| 亚洲中文字幕久久久一区| 国产99视频精品免费视频7| 中文字幕在线免费看| 亚洲制服丝袜在线播放| 国产免费怕怕免费视频观看| 特黄aa级毛片免费视频播放| 国产亚洲一区二区精品| 成年女人毛片免费播放人| 亚美影视免费在线观看| 亚洲三级中文字幕| 午夜亚洲av永久无码精品| 精品一区二区三区免费| 亚洲.国产.欧美一区二区三区| 亚洲午夜国产精品无码| 成熟女人特级毛片www免费| 成人精品一区二区三区不卡免费看 | 日本免费一区二区久久人人澡|