web-dev-qa-db-ja.com

jaxb.propertiesファイルをどこに含めるか?

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サービス戦争に含めるか、またはその両方にする必要があるかということです。

18
sdoca

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

12
bdoughan

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コードで明示的に指定されます。

22
GaspardP