java - 更改 WSDL xsd :complexType name with Apache CXF

标签 java web-services soap wsdl cxf

我使用 Apache CXF 发布网络服务,“即时”生成 WSDL。这很好用,但我想更改生成类型的命名约定。由于服务客户端 (C#) 基于 WSDL 生成代码,默认的 xsd:complexType 命名导致类型名称以小写字母开头。

这是生成的 WSDL 的摘录:

<xs:complexType name="protocolItem">
<xs:sequence>
  <xs:element minOccurs="0" name="data" type="tns:protocolItemData"/>
  <xs:element maxOccurs="unbounded" minOccurs="0" name="elements" nillable="true" type="tns:protocolElement"/>
  <xs:element minOccurs="0" name="meta" type="tns:protocolItemMeta"/>
</xs:sequence>
</xs:complexType>

这是生成上述 WSDL 片段的 Java 代码:

@RooJavaBean
public class ProtocolItem {

    private ProtocolItemData data;
    private ProtocolItemMeta meta;
    private List<ProtocolElement> elements;

}

如何更改生成的 WSDL 以使用类似 <xs:complexType name="ProtocolItem"> 的内容?

希望我没有遗漏明显的注释...谢谢!

编辑:感谢第一个回答!所以有一种方法可以“按类”执行此操作——我可以配置 CXF 命名约定吗?如果我不需要注释所有类,那就太好了。

最佳答案

试试这个:

@XmlType(name="ProtocolItem")
public class ProtocolItem {
   ...
}

希望这对您有所帮助。

关于java - 更改 WSDL xsd :complexType name with Apache CXF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18556816/

相关文章:

java - 如何配置 Maven cargo 下载部署 Wildfly 10 并添加测试用户?

java - Java中阿拉伯标点符号的匹配

web-services - WSDL 文档和 WSDL 契约之间的区别

unit-testing - 为 SOAP 服务编写 JUnit 测试的最佳方式

xml - 使用 Alamofire 发送 xml 参数的 Swift 2.0 soap 请求

api - SugarCRM:不推荐使用 SOAP API 调用?

java - 查询从庞大的数据表中批量获取数据

java - 当等待一个线程的 Future 时,线程执行是否会继续

c# - 如何通过 Web 服务获取当前天气

java - 如何在 url 中为 rest 服务的 get 方法传递逗号分隔的参数