24

XML との間でマーシャリング/非マーシャリングされるいくつかのデータ オブジェクトを利用する REST (Jersey) Web サービスがあります。データ オブジェクトは、Web サービス戦争が依存する別のプロジェクト/jar にあります。

Glassfishにデプロイしているので、JAXB実装としてMOXyを使用していますが、それはすでに含まれています。次のエントリで JAXB 実装を MOXy に設定するには、jaxb.properties ファイルが必要です。

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

問題は、jaxb.properties ファイルをデータ オブジェクト jar に含めるか、Web サービス war に含めるか、またはその両方にするかです。

4

2 に答える 2

29

jaxb.properties を使用したくない、または使用できない場合 (多くのパッケージがあり、モデルが外部 jar にあり、Java のみが必要で構成ファイルが必要ない...)、 JaxbContextFactory を直接指定できます。

次を使用してコンテキストを作成しないでください。

JAXBContext jaxbContext = JAXBContext.newInstance(new Class[]{Person.class, ObjectFactory.class}, properties);

ただし、代わりに、使用するファクトリを指定します。

JAXBContext jaxbContext = JAXBContextFactory.createContext(new Class[]{Person.class, ObjectFactory.class}, properties);

工場は次のとおりです。

import org.eclipse.persistence.jaxb.JAXBContextFactory;

まったく同じですが、構成ファイルで暗黙的に指定されるのではなく、Java コードで明示的に指定されます。

于 2015-10-13T10:32:04.687 に答える
12

jaxb.propertiesファイルをモデルクラスと一緒にパッケージ化します。GlassFishにはまだMOXyバンドルが含まれていませんが、簡単に追加できます。詳細については、私のブログをチェックしてください。

于 2010-12-03T00:54:19.890 に答える