我的 java2WS CXF 工具有问题,我的 cproject 是用 Maven 构建的,我有两个模块,一个用于公开服务,另一个用于客户端。
暴露服务的模块结构如下:
- WS-服务
- com.oz.types
- PersonType.java
- com.oz.dto
-AddressDto.java
- UserDto.java
-PersonDto.java
- com.oz.ws.sei
- 用户管理器
- com.oz.ws.sei.impl
- UserManagerImpl
我用 ant 运行生成器任务,问题是 dto 包的描述符中的命名空间被放在与 SEI 相同的命名空间中,即http://sei.ws.oz.com而不是http://dto。盎司.com
真正的问题是当我使用相同的 dto 生成其他具有不同包的 WSDL 时,因为两者的客户端都会生成以下内容:
- com.oz.ws.sei
- PersonType.java
-AddressDto.java
- UserDto.java
-PersonDto.java
- 用户管理器.java
- ......
- com.oz.ws.sei2
- PersonType.java
-AddressDto.java
- UserDto.java
-PersonDto.java
- SeiTwo.java
- ......
如您所见,两个包中都重复了 dto,我尝试使用 @WebParam 注释在 SEI 中明确定义命名空间:
@WebMethod boolean updateUserInfo(@WebParam(name = "user", targetNamespace = " http://ws.oz.com/dto ") UserDto user);
但是生成的代码只创建了一个包和一个名为 ObjectFactory 的 util 类,而 DTO 仍然留在同一个包中。
怎么能说尊重我的包的生成器工具?
谢谢你的时间。