gpt4 book ai didi

java - CXF/JAXB 代码优先服务 : modify XMLSchemaType of inputs

转载 作者:行者123 更新时间:2023-11-30 09:44:06 27 4
gpt4 key购买 nike

我正在开发 CXF/JAXB 代码优先 Web 服务。我希望能够修改某些输入的 WSDL 定义。

例如,给定以下界面片段:

@WebMethod
public void Something(@WebParam(name="date") Date date);

WSDL 将为输入“date”生成 XMLSchema,使其成为“datetime”xml 元素。我希望它只是一个“日期”元素。

如果能够指定一些其他输入属性,例如 minOccurs 等,那也很好。

对于自定义对象,子元素可以通过 XmlElement 和 XmlSchemaType 等注释来定义所有这些东西。但是,这些注释在输入参数上是不合法的。

我知道早期版本的 CXF 没有处理这个问题,但我不确定以后的版本。我目前正在运行 CXF 2.3.5。

最佳答案

这是我从 cxf-users 列表中得到的答案:

1) 通过 JDK 认可机制之一认可 JAXB 2.2 API jar。然后可以在参数上使用 XmlElement 和 XmlSchemaType 注释。

(这不太正确——我认可的 2.2 jaxb 确实允许在参数上使用 @XmlElement 注释,但它不允许使用 @XmlSchemaType 注释)

2) 创建包装器类型 bean(您可以使用 java2ws -warpperBeans 作为起点)并将 @RequestWrapper/@ResponseWrapper 注释添加到指向它们的方法。您可以精细地控制外观通过 bean 中的注释包装模式。

3) 您可以将 AbstractServiceConfiguration 的额外子类配置到工厂中,您可以在工厂中覆盖一些方法来设置各种minOccurs/maxOccurs/等.. 类型的东西。非常好的控制水平,但非常做起来很复杂。

关于java - CXF/JAXB 代码优先服务 : modify XMLSchemaType of inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com