简单的问题,但我整天都在敲我的头。JAX-WS Web 服务,从第三方 WSDL 生成。内容是这样的:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://foo.it/bar",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package it.foo.bar.webservice.generated;
网络服务工作,输出产生如下:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<response xmlns="it.foo.bar.bean">
<result>
问题是使用 Web 服务的客户端,需要这样的响应:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns:response xmlns:ns="it.foo.bar.bean">
<ns:result>
如果我手动将XmlNs注释添加到 package-info :
@javax.xml.bind.annotation.XmlSchema(namespace = "http://foo.it/bar", xmlns = {
@javax.xml.bind.annotation.XmlNs(namespaceURI = "it.foo.bar.bean", prefix = "sms")
}, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package it.foo.bar.webservice.generated;
响应按预期生成。有没有办法只使用 wsimport 或一些 jaxb 绑定或其他方式来实现相同的结果?我很确定有比每次都覆盖 package-info.java 更好的方法。