2010-03-09 50 views
0

我需要將非常複雜的第三方Web服務合併到我的Grails應用程序中。我的計劃是使用WSDL2Java從wsdl生成存根類,這是第三方文檔中推薦的方法(附有示例)。首先,我嘗試使用Eclipse的Axis2 codegen插件,但最終遇到了InvocationTargetexception。我調試了插件,發現它是因爲wsdl是用RPC編碼定義的。爲第三方生成存根類WS

有些人推薦使用Axis 1.4,所以我現在也安裝了它,但遇到了IO異常 - 類型{http://xml.apache.org/xml-soap} DataHandler被引用但未定義。

任何人都可以提出一種方法來創建這個wsdl的java類,而不必破解wsdl呢?

+0

只要使用axis 1.x或Xfire來生成客戶端,如果不發生,您可以在WSDL上傳遞一些如何傳遞?讓我可以試試? – shivaspk 2010-03-17 20:08:43

回答

1

我結束了使用Axis2 wdsl2java並將所需的註釋代碼複製到服務中,並使用CXF插件。我也把我的服務下面的代碼

static expose=['cxfjax'] 

爲什麼我不得不這樣做,這是因爲有一個「複雜」(Grails的)原因構建我的方法看起來像

@WebMethod(operationName = "authenticate", action = "http://betterhidethis/authenticate") 
    @WebResult(name = "authenticateResult", targetNamespace = "http:/betterhidethis/") 
    public ArrayOfString authenticate(
     @WebParam(name = "strUserName", targetNamespace = "http://betterhidethis/") 
     String strUserName, 
     @WebParam(name = "strPassword", targetNamespace = "http://betterhidethis/") 
     String strPassword) { 

原因Geneerator還創建了我稍後使用的ArrayOfString類。

希望這會有所幫助。