我应该在Gralis上使用xfire插件还是有更好的方法?

时间:2009-08-08 12:45:27

标签: web-services grails xfire

我在Grails中有一个使用xfire插件发布的Web服务。这一切都很好,可以连接到没有问题。但我想修改请求和响应的格式。这可能吗?

示例结构是:

域类Person,有很多Sibling个。每个Sibling都有Child

我的网络服务方法目前看起来像这样:

Person updatePerson(Person person) {
  return Person.getById(person.id)
}

但是这产生了一个格式为:

的WSDL
Person
   Person fields
       Sibling
           Sibling fields
           Child
       Sibling
            Sibling fields

等等。

我不想接受此格式的数据,或以该格式返回。有没有办法指定哪些字段暴露给Web服务以及WSDL应该是什么样的,或者xfire是否是用于此的错误插件?

2 个答案:

答案 0 :(得分:1)

我会回答这个问题作为它的创造者。 要排除某些域属性,请添加:

static xmlTransients = ['your_property_goes_here']

到您的域类。

但是,该插件不允许您直接控制WSDL的创建。

答案 1 :(得分:0)

我建议您查看Spring WS插件。它是围绕“契约优先”Web服务开发而设计的,因此您可以完全控制生成的WSDL。 Xfire,Axis和Metro插件都很棒,但根据我的经验,它们都面向代码优先,不允许直接控制生成的接口/输出。