2013-07-21 210 views
0

我有一個NetBeans項目,並試圖創造一個Web服務客戶端與WSO2 ESB下面的WSDL在這example 4.6.0,如:WSO2 ESB使用AuthenticationAdmin

https://localhost:9443/services/AuthenticationAdmin?wsdl 

但當NetBeans的嘗試創建客戶端我收到一個錯誤: NetBeans Error adding Web Service Client

爲什麼會發生這種情況?我創建了其它Web服務客戶端,他們的工作,但這不是工作,我不知道爲什麼......

如果我嘗試用eclipse我也得到一個錯誤:

IWAB0399E Error in generating Java from WSDL: java.io.IOException: ERROR: Missing <soap:fault> element inFault "AuthenticationAdminAuthenticationException" in operation "AuthenticationAdminAuthenticationException", in binding logout 
    java.io.IOException: ERROR: Missing <soap:fault> element inFault "AuthenticationAdminAuthenticationException" in operation "AuthenticationAdminAuthenticationException", in binding logout 
    at org.apache.axis.wsdl.symbolTable.SymbolTable.faultsFromSOAPFault(SymbolTable.java:2858) 
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2549) 
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744) 
    at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543) 
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) 
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) 
    at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361) 
    at java.lang.Thread.run(Thread.java:722) 

也許WSDL有錯誤?

回答

1

AuthenticationAdmin WSDL文件是正確的。

註銷操作定義爲「One-way」操作。如果你看看AuthenticationAdmin.java的實現,你可以看到註銷方法有以下簽名。

public void logout() throws AuthenticationException

注意,返回類型爲「空隙」,這意味着沒有輸出。

WSO2使用Apache Axis2並且使用Axis2生成客戶端時沒有問題。

我剛剛嘗試使用Eclipse創建客戶端& Apache Axis2。我可以成功創建存根。

WSO2還使用使用AuthenticationAdmin WSDL創建的服務存根。有關生成客戶端的更多信息,請參閱pom.xml

<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true"> 
    <arg line="-uri src/main/resources/AuthenticationAdmin.wsdl 
    -u -uw -o target/generated-code 
    -ns2p http://common.core.carbon.wso2.org/xsd=org.wso2.carbon.authenticator.stub.authentication,http://authentication.services.core.carbon.wso2.org=org.wso2.carbon.authenticator.stub,http://authentication.services.core.carbon.wso2.org/xsd=org.wso2.carbon.authenticator.stub"/> 
    <classpath refid="wsdl2java.classpath"/> 
</java> 

我得到了同樣的錯誤,你已經證明,當我嘗試使用生成Apache Axis的客戶端。因此,請確保使用Apache Axis2作爲Web服務運行時。另外請確保您在Eclipse Preferences -> Web Services -> Axis2 Preferences中指向Axis2目錄。

我也看到NetBeans嘗試使用wsimport實用程序。可能是它不支持單向操作。

我建議您使用Apache Axis2來生成客戶端。