記一次在Eclipse中用Axis生成webservice服務端的過程中出現的問題


問題一、

Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.wsdd

 找不到這個.wsdd的配置文件,沒有自動生成!

原因是使用Eclipse自動生成axis服務端時沒有執行的最后一步!如圖:

當進行的這一步時,需要接着點擊啟動服務的按鈕,之后Next按鈕就會可用,點擊Next按鈕后就會自動生成這個.wsdd文件!

問題二、

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString: makeTypeElement() was told to create a type......

這個是在發布服務后點擊wsdl鏈接查看http://127....?wsdl文檔時發生的錯誤,但是訪問時不輸入?wsdl就是一切正常!

出現這個錯誤是因為接口方法中的參數是一個復雜類型且這個參數的構造函數中還有復雜類型! eq:

<xs:element name="OrderList" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Order" type="tns:OrderType" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

上面代碼中OrderList是接口方法中的參數且是一個復雜類型,Order也是一個復雜類型。

這個問題不影響Axis的服務端與客戶端的調用,這個據說是Axis的一個bug,而且好像不是每次都會出現!不知道什么時候出現,也可能與瀏覽器有關!......

 為了正常顯示,也可以對此進行修改, 提取出復雜類型,並給OrderList添加type參數。 eg:

<xs:element name="OrderList" minOccurs="0" type="tns:OrderListType"></xs:element>
<xs:complexType name="OrderListType">
        <xs:sequence>
            <xs:element name="Order" type="tns:OrderType" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

2:)wsdl無法正常顯示會影響cxf的一般調用,因cxf的客戶端是以wsdl為基礎生成的!一般調用方法如下:

  Service ss = new Service (wsdlURL, SERVICE_NAME);
  PortType port = ss.getPort();
  port.getInfo();  

其中wsdl為重點,wsdl的顯示會影響調用。

為了避開這個影響,CXF客戶端調用服務端時可以適應另一種方法:eq:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 
factory.setServiceClass(PortType.class);
factory.setAddress(studioTaskUrl);
port = (PortType)factory.create();

UP.

問題三、

 忘記了,想起了再說。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM