我们有一堆首先设计为契约的Web服务。各种WSDL文件中都包含来自同一XML模式定义的通用XML片段。但是,结果是为各种Web服务(wsimport)创建了类似Address
的同一类。
是否可以先使用合同,然后首先定义在各种WSDL文件中引用的一堆或少数Java类?
这将使前端和后端的编程都更加容易。
最佳答案
我建议切换到cxf-codegen-plugin。它允许对代码生成过程进行更多的自定义。
使用cxf-codegen-plugin可以将类型名称空间映射到具体包。只需为您的共享类指定通用包即可:
<wsdlOption>
<wsdl>${basedir}/src/main/resources/service1/Service1.wsdl</wsdl>
<extraargs>
<extraarg>-p</extraarg>
<extraarg>http://yournamespace.com/types=com.namespace.types</extraarg>
<extraarg>-p</extraarg>
<extraarg>http://yournamespace.com/service1=com.namespace.service1</extraarg>
</extraargs>
</wsdlOption>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/service2/Service2.wsdl</wsdl>
<extraargs>
<extraarg>-p</extraarg>
<extraarg>http://yournamespace.com/types=com.namespace.types</extraarg>
<extraarg>-p</extraarg>
<extraarg>http://yournamespace.com/service2=com.namespace.service2</extraarg>
</extraargs>
</wsdlOption>