我需要将非常复杂的第三方Web服务合并到我的Grails应用程序中。我的计划是使用WSDL2Java从wsdl生成存根类,这是第三方文档中推荐的方法(完整的示例)。首先,我尝试使用Eclipse的Axis2 codegen插件,但最终遇到了InvocationTargetexception。我调试了插件,发现这是因为wsdl是用RPC编码定义的。
有些人建议使用Axis 1.4,所以我现在也安装了它,但遇到了IO异常 - 类型{http://xml.apache.org/xml-soap} DataHandler被引用但未定义。
有人可以建议一种从这个wsdl创建java类的方法,而不必破解wsdl吗?
答案 0 :(得分: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类。
希望这有帮助。