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サービス戦争に含めるか、またはその両方にする必要があるかということです。
Jaxb.propertiesファイルをモデルクラスと一緒にパッケージ化します。 GlassFishにはまだMOXyバンドルが含まれていませんが、簡単に追加できます。詳細については、私のブログをチェックしてください。
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コードで明示的に指定されます。