Tomcat6でホストされ、JAXB2を使用して結果をマーシャリングする単純なSpring3、Hibernate3 /(JPA2)、RESTfulサービスを構築しました。 (注釈付きのpojosを使用しています)特定の名前空間接頭辞を使用する必要があったので、カスタムcom.sun.xml.bind.marshaller.NamespacePrefixMapperを書きました。私はJAXB2 RIジャーを私のアプリケーションに組み込み、すべてうまく動作しました。Spring3、JAXB2、Java6、NamespacePrefixMapperの質問
誰かがそれが素晴らしいと言ったので、WebLogic 11g(10.3.3)でもそれをホストする必要があります。問題はありません。私は、アプリケーションjarを優先する特別なweblogicデプロイメント記述子を作成し、persistence.xmlの名前を変更し、WARをEARにJPA2 jarファイルでラップしました。それは素晴らしい、ほとんど仕事。
残念ながら、WebLogic ServerはJAXBも使用するカスタムセキュリティレルムを実行し、アプリケーションと競合します。だから私はJAXB jarをアプリケーションから落とし、WebLogicでうまく動作します。もちろん、TomcatにJAXB jarファイルを追加しない限り、Tomcatでは動作しません。私はそれを避けたいです。
私の質問...あなたのアプリケーションでRIをパッケージ化するのと比べて、太陽の "内部" JAXB2実装の使用に関する多くの意見や不一致を含むstackoverflowのかなりの記事を読んだことがあります。この問題にはまだ清潔な解決策はありませんか?私のスタックは、JAXB2 RIを含めずに自分のネームスペースプレフィックスをカスタムマップする別の方法をサポートしていますか? Java6の「内部」JAXB NamespacePrefixMapperを安全に使用できますか、それともJavaのさまざまなリリースで使用できますか? Spring3は別のソリューションを提供していますか? Java6 JAXB2実装の真実はどうですか? Sunの(Oracleの)内部使用のためだけに存在するのでしょうか?
ありがとうございました。
JAXB 2.1は、JDK 6更新4.以来、JDK 6に含まれていますを行いますあなたのアプリケーションにJAXB2 RI jarを追加する必要がありますか? –
@Chin:RIを使うときは、 'NamespacePrefixMapper'のように、それに付属の' com.sun.xml'クラスを安全に使うこともできます。組み込みJava6 JAXBを使用する場合は、 'com.sun.xml.internal'パッケージを使用する必要があります。これは非常にお勧めできません。 – skaffman
@ジョン:可能な解決策については、この質問に対する受け入れられた答えを参照してください。http:// stackoverflow。com/questions/1982977 /カスタマイズ可能な-namespace-prefix-that-jaxb-uses-marshalling – skaffman