3

简单的问题,但我整天都在敲我的头。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 更好的方法。

4

1 回答 1

2

这是一个已知问题:http: //java.net/jira/browse/JAXB-818

随意投票、评论和/或提供修复。

于 2012-10-16T16:11:56.990 回答