JAXB,WSDL和RequestWrapper / ResponseWrapper

时间:2015-05-13 13:39:56

标签: java soap jaxb wsdl

我希望我生成的类使用"包装样式"像这样的元素(使用@RequestWrapper@ResponseWrapper

@WebMethod(action = "http://.../IsThatServiceAvailable")
@RequestWrapper(localName = "isThatServiceAvailable", targetNamespace = "http://...", className = "....IsThatServiceAvailable")
@ResponseWrapper(localName = "isThatServiceAvailableResponse", targetNamespace = "http://...", className = "....IsThatServiceAvailableResponse")
@WebResult(name = "isAvailable", targetNamespace = "")
public boolean isThatServiceAvailable(
    @WebParam(name = "context", targetNamespace = "")
    ...Context context
) throws WSException;

但我无法猜测是否找不到解释何时使用的文档。肯定有一些与操作命名和参数名称或类型相关的东西,因为当我使用小写驼峰驼峰或大写骆驼嗡嗡声时行为是不同的...但我无法弄清楚是什么(我试图重现我想到另一个操作的方案,但它不起作用。)

你能告诉我规则吗?

1 个答案:

答案 0 :(得分:0)

以下是我在JAX WS文档中发现的内容:https://jcp.org/aboutJava/communityprocess/pfd/jsr224/index.html(§2.3.1.2包装样式)

  

WSDL操作仅限于包装样式映射   符合以下条件:

     

(i)操作的输入和输出消息(如果存在)每个都只包含一个部分

     

(ii)输入消息部分引用一个全局元素声明,其localname等于操作名称

     

(iii)输出   消息部分引用全局元素声明

     

(iv)输入和输出消息部分(以下称为包装元素)引用的元素都是使用xsd:sequence compositor定义的复杂类型

     

(v)包装元素只包含子元素,它们不能包含其他结构,如通配符(元素或属性),xsd:choice,替换组(不允许元素引用)或属性;此外,他们一定不能收费。

注意:在我的情况下,(iv)规则未受到尊重