【问题标题】:Grails and consume SOAP webserviceGrails 和使用 SOAP 网络服务
【发布时间】:2011-03-28 08:15:39
【问题描述】:

刚接触 Grails,我想知道人们在 Grails 项目中使用什么来使用 Web 服务。那么系统的客户端呢?有什么建议吗?我看到有人在使用 GroovyWS、Spring-WS 等。什么是好用且易于使用的?

【问题讨论】:

  • 我实际上创建了自己的项目 (github.com/jwagenleitner/groovy-wslite) 并将其与 Grails 一起使用。我想要更多地控制整个消息(而不是 wsdl 解析和 GroovyWS 代理)。不想把它作为一个实际的答案,以避免看起来像我自己的项目的无耻插件,而且它还太年轻,不能说它是否好用且易于使用。 :) 但想提一下作为替代方案。

标签: java web-services grails soap soap-client


【解决方案1】:

GroovyWS 非常易于使用,并且有很棒的文档,我绝对会推荐它。

【讨论】:

  • Groovy WS 是否与 CXF 处于同一级别?看起来确实很简单!
【解决方案2】:

在此处使用 Grails CXF 插件。需要:

  1. 类加载器解决方法 - DynamicClientFactoryit 更改了当前类加载器;
  2. 并手动编写 WS 调用代码。

除此之外,消费者代码非常精简。

编辑:抱歉,仅此而已,我不确定我是否还没有破坏和 NDA:

#1:

def arrayOfLong = objectFactory.createArrayOfLong(XXX, ids)
result = client.invoke(methodName, arrayOfLong as Object[])

#2:

def dcf = DynamicClientFactory.newInstance()
def classLoader = Thread.currentThread().getContextClassLoader()

// create a WS client
// and assign end point address to it
def client = dcf.createClient(WSDL_URL, classLoader)
client.conduit.target.address.setValue(endpointUrl)

// reacquire classloader because 'createClient' changes it
def changedClassLoader = Thread.currentThread().getContextClassLoader()
def objectFactory = changedClassLoader.
    loadClass(FACTORY_CLASS_NAME).newInstance()

【讨论】:

  • 我的印象是 cxf 用于提供 web 服务而不是消费。为什么需要类加载器解决方法?您能否还举一个小例子来说明如何编写 WS 调用?非常感谢!
  • 好吧,我们既提供又消费,并试图保持一种依赖关系。
  • 我正在尝试 Groovy WS 和 CXF 方法,我使用 wsdl2java 生成了我的客户端,将生成的代码放在 java 文件夹中,现在我偶然发现我不知道我有哪些 JAR 文件需要复制到我的 lib 文件夹中才能成功编译。
  • 抱歉,帮不了你 - 我没有看到你生成的代码的依赖关系。我们从未使用过 wsdl2java - 我们的代码都是动态的。我们使用的客户端是在dcf.createClient(WSDL_URL, classLoader)一行中创建的。
【解决方案3】:

使用 Grails 1.3.7 我正在使用 WS-Client Grails plugin 使用我自己的 Web 服务。它实际上基于 GroovyWS,而后者又使用 CXF。至少在我的简单场景中使用它非常容易,我只从后端 Web 服务获取字符串。不过,我还不知道它如何处理复杂的数据类型。

我以前从未使用或创建过 Web 服务,但是在前端使用该插件并在后端使用 Grails CXF plugin 后,我在两天内就在我的 grails 应用程序之间进行了 SOAP 讨论。您真的不需要通过非常好的 ws-client 插件直接使用 CXF 或 GroovyWS。速度(开发)和简单性。

【讨论】:

  • 当时,没有。但从那以后我就没有参与过这个项目,所以我真的不能说。据我所知,这个项目实际上从未像有时那样投入生产:)
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 2014-09-13
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多