Spring Beans構成ファイルでjaxb2Marshallerを構成しようとしていますが、SpringとJAXBはかなり新しいので、間違った方法で実行している可能性があります。
私が達成したいのは、2つの異なるスキーマに基づく2つの異なるクラスをマーシャリング/アンマーシャリングする同じBeanです。テストを構成して実行すると、構成の2番目のクラス(AccountResponse)で失敗するため、おそらくそれは不可能です。
これはXML構成です。
<bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="marshallerProperties">
<map>
<entry key="com.sun.xml.bind.namespacePrefixMapper">
<bean id="NamespacePrefixMapperImpl" class="org.lp.soa.controller.xml.LpsNamespacePrefixMapper" />
</entry>
</map>
</property>
<property name="classesToBeBound">
<list>
<value>org.lp.soa.controller.data.request.AccountRequest</value>
<value>org.lp.soa.controller.data.response.AccountResponse</value>
</list>
</property>
<property name="schemas">
<list>
<value>classpath:schema/AccountRequest.xsd</value>
<value>classpath:schema/AccountResponse.xsd</value>
</list>
</property>
</bean>
構成からAccountRequest.xsd値をコメントアウトしてから、2番目のクラス(AccountResponse)のマーシャル/アンマーシャルを再度実行すると、すべて合格します。コメントを外すと、エラーが発生します:org.xml.sax.SAXParseException :cvc-elt.1:要素'accountResponse'の宣言が見つかりません。
私はそれについて間違った方法で行っていますか?2つのスキーマで2つのクラスを処理することはできないはずですか?
ありがとう、Yoav。