簡體   English   中英

WSDL自動生成的WebLogic Web Service導致錯誤

[英]Auto generated WebLogic Web Service from WSDL causing errors

我正在使用Eclipse通過預先存在的WSDL自動創建WebLogic Web服務(而不是客戶端)。 它接收3個請求參數(字符串,字符串,字節[]),並以1個參數(字節[])響應。 但是,自動生成的類包含的代碼會產生以下錯誤:

端點接口方法“ public byte [] sign(java.lang.String,java.lang.String,byte [])”必須在Web Service中實現。

但是符號方法顯然存在於代碼中。

因此,我嘗試創建一個非常簡單的WSDL來測試Web服務的自動生成。 這次WSDL定義了2個請求參數(int,int)和1個響應(int)。

這次錯誤沒有出現並且可以正常工作。

我正在使用的工具

  • Eclipse-3.7.1
  • 適用於Eclipse 11.1.1.8.0的Oracle Enterprise Pack
  • Oracle WebLogic Server 11gR1(10.3.6)
  • 由Oracle JAX-WS 2.1.5完成的類自動生成
  • Windows 7-32位,帶有1.6 JDK / JRE

重現該錯誤的步驟:

  1. 啟動Eclipse
  2. 文件→新建→Web服務項目
  3. 將此WSDL導入到WEB-INF / wsdl目錄。
  4. 右鍵單擊WSDL文件名,然后單擊WebLogic Web服務→生成Web服務。
  5. 注意生成的dss_DSSPortImpl類文件中的錯誤。

使用此WSDL重復上述步驟,並且產生的類文件可以正常工作。

任何幫助都非常感謝。 謝謝!


(由於隱私原因,WSDL文件上的名稱空間已從我的測試中更改。)

我的筆記本電腦上目前沒有安裝OEPE,因此無法重現您的確切步驟,但這可能很有用:

如果仔細查看問題wsdl,您將在SignResponse中看到兩個元素:“簽名”和“狀態”。 由於響應消息中包含多個元素,因此wsimport會在每個輸出參數中生成一個Holder參數,作為方法簽名的一部分,以提供用於返回每個參數的存儲桶。 當直接針對問題wsdl運行wsimport時,我在服務接口(Adapter.java)中獲得以下(預期)簽名:

public void sign(
    @WebParam(name = "userId", targetNamespace = "")
    String userId,
    @WebParam(name = "fileType", targetNamespace = "")
    String fileType,
    @WebParam(name = "fileContent", targetNamespace = "")
    byte[] fileContent,
    @WebParam(name = "signature", targetNamespace = "", mode = WebParam.Mode.OUT)
    Holder<byte[]> signature,
    @WebParam(name = "status", targetNamespace = "", mode = WebParam.Mode.OUT)
    Holder<String> status);

我懷疑如果您通過wsimport針對第一個wsdl生成存根(我確實知道這種生成方式可以很好地部署到WLS,因為這是我的典型方法,而WebLogic是我們的部署環境),您將成功。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM