我正在创建一个Grails应用程序,该应用程序对返回XML的Web服务具有只读访问权限。除了用户名/密码外,此应用程序的全部数据将来自此外部Web服务。Grails:将域类变量映射到Web API XML数据源
将我的域类中的变量映射到此数据源的最佳方法是什么?我发现了很多自定义ORM与数据库的例子,但没有XML例子。我在哪里编写逻辑来进行HTTP调用并提取字段?
任何和所有的帮助,非常感谢。
我正在创建一个Grails应用程序,该应用程序对返回XML的Web服务具有只读访问权限。除了用户名/密码外,此应用程序的全部数据将来自此外部Web服务。Grails:将域类变量映射到Web API XML数据源
将我的域类中的变量映射到此数据源的最佳方法是什么?我发现了很多自定义ORM与数据库的例子,但没有XML例子。我在哪里编写逻辑来进行HTTP调用并提取字段?
任何和所有的帮助,非常感谢。
我们非常成功地使用Spring web服务和MarkupBuilder/XmlSlurper。您可以使用WebServiceTemplate为给定的Uri创建一个Web服务客户端,并通过使用MarkupBuilder构建的XML发送您的请求。
这对于我们保留WSDL作为接口的中心描述,作为文档工件,没有代码生成和生成代码来维护,没有为jaxb绑定添加注释,没有数据对象具有很大的优势。
我们不使用域类,我们使用GPathResult直接获取通过Web服务调用的XML结果获得的GPathResult,因为以鸭子打字的方式,它相当于客户端到Java对象。但是,我们没有Web界面。如果你有一个web界面,我会创建一个
def toXml(MarkupBuilder b) {
}
方法命令对象,或者也许
myCommandObject as XML
会的工作,这取决于您的WSDL的XSD架构。这样你就可以利用Grails数据绑定和验证。
对于视图的数据模型,可能传递一个duck-type的命令对象(兼容的XML对象)就足够了,所以你不必两种方法都编组。
另一个需要注意的是,当前版本的grails spring-ws插件已过期。我不认为它会因为老式的spring-security-core类别而在Grails 2.0中表现出色。好消息是,如果你只是建立一个客户端,你几乎不需要插件。只需包含最新的Spring Web服务jar并使用WebServiceTemplate.sendToEndpoint方法即可。
谢谢。我在啜饮XML,但没有调查过使用Command Objects。我会放弃它。 – BadgerBadgerBadger 2012-05-02 01:45:43
所以我想它的工作?感谢您接受答案! – loteq 2014-05-19 12:45:04
对不起,花了这么长时间。仍然在学习礼仪。 – BadgerBadgerBadger 2014-05-19 20:40:36