単純な問題ですが、私は一日中頭をぶつけました。サードパーティの WSDL から生成された JAX-WS Web サービス。内容は次のようなものです。
@javax.xml.bind.annotation.XmlSchema(namespace = "http://foo.it/bar",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package it.foo.bar.webservice.generated;
Web サービスは機能し、出力は次のようになります。
<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 を上書きするよりも良い方法があると確信しています。