JAXB2を使用して結果をマーシャリングするTomcat6でホストされる単純なSpring3、Hibernate3 /(JPA2)、RESTfulサービスを構築しました。(注釈付きのpojoを使用します。)特定の名前空間プレフィックスを使用する必要があったため、カスタムのcom.sun.xml.bind.marshaller.NamespacePrefixMapperを作成しました。アプリケーションにJAXB2RIjarを含めましたが、すべて正常に機能しました。
次に、誰かがそれは素晴らしいと言いました。WebLogic11g(10.3.3)でもホストする必要があります。問題ありません。アプリケーションjarを優先するように特別なweblogicデプロイメント記述子を作成し、persistence.xmlの名前を変更し、JPA2jarを使用してWARをEARにラップしました。それはほとんどうまくいきました。
残念ながら、WebLogicサーバーは、JAXBも使用するカスタムセキュリティレルムを実行し、アプリケーションとの競合を引き起こします。そこで、アプリからJAXB jarを削除すると、WebLogicで正常に実行されます。もちろん、JAXB jarをTomcatに追加しない限り、Tomcatでは実行されなくなります。それは避けたいです。
だから私の質問...私は、太陽の「内部」JAXB2実装の使用とアプリでのRIのパッケージ化に関する多くの意見/意見の相違を含むstackoverflowに関するかなりの数の投稿を読みました。この問題に対する明確な解決策はまだありませんか?スタックは、JAXB2 RIを含めずに名前空間プレフィックスをカスタムマップする別の方法をサポートしていますか?Java6の「内部」JAXBNamespacePrefixMapperを安全に使用できますか、それともさまざまなJavaリリースで使用できますか?Spring3は別のソリューションを提供しますか?Java6 JAXB2実装の実話は何ですか?それはSun(Oracle)の内部使用のためだけにありますか?
ありがとう。