我有一个NetBeans项目并尝试使用WSO2 ESB 4.6.0中的以下WSDL创建一个Web服务客户端,就像在此example中一样:
https://localhost:9443/services/AuthenticationAdmin?wsdl
但是当NetBeans尝试创建客户端时,我收到一个错误:
为什么会这样?我创建了其他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有错误?
答案 0 :(得分:1)
AuthenticationAdmin WSDL文件正确无误。
注销操作被定义为“One-way”操作。如果查看AuthenticationAdmin.java实现,可以看到logout方法具有以下签名。
public void logout() throws AuthenticationException
请注意,返回类型为“ void ”,表示没有输出。
WSO2使用Apache Axis2 ,使用Axis2生成客户端没有问题。
我刚尝试使用Eclipse&amp;创建客户端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生成客户端。