我遇到java2WS CXF工具的问题,我的cproject是用Maven构建的,我有两个模块,一个用于公开服务,另一个用于客户端。
公开服务的模块结构如下所示:
- WS-Service - com.oz.types - PersonType.java - com.oz.dto - AddressDto.java - UserDto.java - PersonDto.java - com.oz.ws.sei - UserManager - com.oz.ws.sei.impl - UserManagerImpl
我用ant运行生成器任务,问题不在于dto包描述符中的命名空间放在SEI的同一名称空间中,即http://sei.ws.oz.com而不是http://dto.oz.com。
真正的问题是当我使用不同的包生成其他使用相同dto的WSDL时,因为两者的客户端都生成以下内容:
- com.oz.ws.sei - PersonType.java - AddressDto.java - UserDto.java - PersonDto.java - UserManager.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用户 );
但是生成的代码只创建了一个包和一个名为ObjectFactory的util类,而DTO仍然在同一个包中。
怎么能说尊重我的包的生成器工具?
感谢您的时间。