2010-03-09 66 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类。

希望这会有所帮助。