如果您从旧服务的WSDL开始,并使用生成了所有各种JAXB批注的请求和响应包装器类
wsimport,那么在生成的包中,您应该找到
package-info.java诸如
@javax.xml.bind.annotation.XmlSchema(namespace = "http://test/")package com.example.test;
JAXB提供了一种机制,可在
@XmlSchema注释上建议前缀映射,因此您可以尝试修改
package-info.java以读取
@javax.xml.bind.annotation.XmlSchema(namespace = "http://test/", xmlns = { @javax.xml.bind.annotation.XmlNs(prefix = "customns", namespaceURI="http://test/") })package com.example.test;看看这对生成的消息是否有任何影响。这也具有纯JAXB规范的优点(即不依赖于RI特定的自定义上下文工厂)。
如果需要重新运行
wsimport,可以
package-info通过将
-npa选项传递给来防止它覆盖修改的内容
xjc(这告诉它不生成a
package-info.java而是将所有必要的
namespace设置放在类级注释上)。确切地,这取决于您的运行方式
wsimport。
命令行:
wsimport -B-npa ....
蚂蚁:
<wsimport wsdl="..." destdir="..." .... > <xjcarg value="-npa" /></wsimport>
Maven:
<plugin> <groupId>org.jvnet.jax-ws-commons</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <goals> <goal>wsimport</goal> </goals> <configuration> <xjcArgs> <xjcArg>-npa</xjcArg> </xjcArgs> </configuration> </execution> </executions></plugin>



