利用CXF工具開發WebService

前提:JDK環境變量須配置

有的公司的員工win系統的分配的賬戶權限不夠,導致計算機右鍵時,沒有“屬性”菜單,也就無法更改環境變量,因此可以通過【控制面板\用戶帳戶\用戶帳戶】路徑更改環境變量

一、寫wsdl文件(自定義)

附上wsdl教程http://www.w3school.com.cn/wsdl/index.asp

根據需求配置相應的<portType><message><types><binding>,具體細節可以參考網上資料,我也不是特別清楚!下面是常用的查詢用戶信息簡單的demo:

<?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions name="QueryUserInfoService"
    targetNamespace="http://hr.soa.csg.cn" xmlns:ns1="http://cxf.apache.org/bindings/xformat"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://hr.soa.csg.cn"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <xs:schema attributeFormDefault="unqualified"
            elementFormDefault="qualified" targetNamespace="http://hr.soa.csg.cn"
            xmlns:tns="http://hr.soa.csg.cn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xs:element name="queryUserInfoRequest" type="tns:QueryUserInfoRequest" />
            <xs:complexType name="QueryUserInfoRequest">
                <xs:sequence>
                    <xsd:element minOccurs="0" name="userId" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
            <xs:element name="queryUserInfoResponse" type="tns:QueryUserInfoResponse" />
            <xs:complexType name="QueryUserInfoResponse">
                <xs:sequence>
                    <xs:element minOccurs="0" name="replyCode" type="xs:string" />
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="user"
                        nillable="true" type="tns:User" />
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="User">
                <xs:sequence>
                    <xs:element name="userId" type="xs:string" />
                    <xs:element name="age" type="xs:string" />
                    <xs:element name="name" type="xs:string" />
                    <xs:element name="email" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </wsdl:types>
    <!--查詢用戶信息-->
    <wsdl:message name="queryUserInfoRequest">
        <wsdl:part name="queryUserInfoRequest" element="tns:queryUserInfoRequest" />
    </wsdl:message>
    <wsdl:message name="queryUserInfoResponse">
        <wsdl:part name="queryUserInfoResponse" element="tns:queryUserInfoResponse" />
    </wsdl:message>
    <wsdl:portType name="SOAServicePort">
        <wsdl:operation name="queryUserInfo">
            <wsdl:input message="tns:queryUserInfoRequest" />
            <wsdl:output message="tns:queryUserInfoResponse" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="SOAServiceBinding" type="tns:SOAServicePort">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="queryUserInfo">
            <soap:operation style="document" soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="QueryUserInfoService">
        <wsdl:port name="SOAService" binding="tns:SOAServiceBinding">
            <soap:address location="http://localhost:8080/service/queryUserInfoService" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

二、使用CXF工具生成代碼

1、下載cxf工具(下載二進制的壓縮包,方便執行cmd命令)如圖
下載地址:http://cxf.apache.org/download.html

2、使用wsdl2java工具生成代碼

(1)解壓包,控制檯(cmd)進入bin目錄

(2)輸入命令,執行wsdl2java

wsdl2java -p com.cxf -d e:\cxftest -all e:\createWebservice.wsdl

【注:-p後面的參數是生成代碼所在的包名,-d後面的參數是生成代碼存放的路徑,-all後面的參數是wsdl文件所在的具體目錄】

3、簡單修改代碼

所有類中註解部分有紅色標註的這一行代碼刪掉,這個地址沒用!【不刪除啓動會報錯】

4、啓動server,訪問查看wsdl(url爲發佈地址)

即第一步配置的:<soap:address location="http://localhost:8080/service/queryUserInfoService" />

到此OK,沒時間進行接口測試,大家有時間可以自己玩玩!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章