スキーマにあるすべてのクラスのパッケージ名を変更したいと思います。残念ながら、WSDLとより多くのスキーマが含まれているため、jaxws-maven-pluginの要素を使用できません。
<definitions ...>
<types>
<s:schema ...>
</s:schema ...>
<s:schema ...>
</s:schema ...>
...
JAXBバインディングファイルを使用することにしましたが、パッケージ名を変更できません。これは私のバインディングファイルです:
<jaxb:bindings version="2.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<!--jaxws:bindings wsdlLocation="MYWSDL">
<jaxb:bindings node="wsdl:definitions/wsdl:types/xs:schema/xs:element[@name='reserveAppointment']">
<jaxb:package name="WWWWWWW"/>
</jaxws:bindings>
</jaxws:bindings-->
<jaxws:bindings wsdlLocation="MYWSDL" node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='http://www.openuri.org/']">
<jaxb:package name="WWWWWWW"/>
</jaxws:bindings>
<!--jaxws:bindings wsdlLocation="MYWSDL">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='http://www.openuri.org/']">
<jaxws:bindings node="//xs:element[@name='reserveAppointment']">
<jaxb:package name="aaaaa"/>
<jaxb:class name="WWWWWWWW"/>
</jaxws:bindings>
</jaxws:bindings>
</jaxws:bindings-->
</jaxb:bindings>
もっとバインディングを試していましたが、なんとかできませんでした。1つの要素のパッケージ名も変更してみました。これは私のWSDLです:
<definitions ...>
<types>
<s:schema ...>
<s:import namespace="XXX1"/>
<s:element name="reserveAppointment">
JAXBバインディングを使用してパッケージ名を変更するにはどうすればよいですか?
驚いたのは、JAXBバインディング宣言を埋め込んでパッケージ名を変更できたことです。
<s:schema .... xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0">
<s:annotation>
<s:appinfo>
<jaxb:schemaBindings>
<jaxb:package name="wwwwwwwwwww"/>
</jaxb:schemaBindings>
</s:appinfo>
</s:annotation>
<s:import namespace="http://www.bt.com/eai/hub/or/GenericCPWSHubService"/>
<s:element name="reserveAppointment">
...
ただし、サードパーティのサービスのWSDLを変更したくないのは、それを呼び出した場合に何が発生する可能性があるのかよくわからないためです。このannotation/appinfo要素はWSDLを変更しますか、それともJAXBコンパイラへの単なるヒントですか?ありがとう!