0

我需要实现一个 Web 应用程序,但我需要使用不同的 SOAP Web 服务作为后端,而不是使用关系数据库。应用程序的一个重要部分只调用 Web 服务并显示结果。由于 Web 服务以 Operation: In parameters 和 Return Type 的形式明确定义,因此在我看来,基本 GUI 可以像基于域实体的脚手架一样轻松构建。

例如,在 SearchProducts Web 服务操作的情况下,我需要输入搜索参数作为输入,这样才能构建搜索页面。操作将返回一个产品列表,所以我需要一个在某种表格中显示该列表的页面。

grails 中是否已经有一些库可以让您实现这一目标。如果没有,您将如何创建一个?

4

2 回答 2

1

可能最简单的方法是在 WSDL 文件上使用 wsimport 来生成客户端存根。然后,您可以从 Groovy 调用存根中的方法,就像在 Java 中调用它们一样。

例如,考虑 Microsoft 的 TerraServer 的 WSDL 文件,该文件位于http://terraservice.net/TerraService.asmx?wsdl。然后你运行类似的东西

wsimport -d src -keep http://terraservice.net/TerraService.asmx?WSDL

它将所有已编译的存根放在 src 目录中。然后你可以编写像这样的 Groovy 代码

import com.terraserver_usa.terraserver.*;

TerraServiceSoap sei = new TerraService().getTerraServiceSoap()
Place home = new Place(city:'Boston',state:'MA',country:'US')
def pt = sei.convertPlaceToLonLatPt(home)
println "$pt.lat, $pt.lon"
assert Math.abs(pt.lat - 42.360000) < 0.001
assert Math.abs(pt.lon - -71.05000) < 0.001

如果您想访问大量 Web 服务,请为所有这些服务生成存根。或者您可以改用动态代理。

不过,底线是让 Java 做它已经做得很好的事情,并在它使您的生活更轻松的地方使用 Groovy。

于 2009-11-17T02:15:31.213 回答
0

您应该能够使用XFireCXF插件。对于自动脚手架,请修改脚手架模板中的 Controller.groovy 模板,以便它自动生成您需要的方法。

于 2009-11-16T23:00:36.087 回答