![](/img/trans.png)
[英]weblogic server Test page for web service is different from wsdl
[英]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)。
這次錯誤沒有出現並且可以正常工作。
我正在使用的工具
重現該錯誤的步驟:
使用此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.