Использовать Moxy в качестве реализации JAXB по умолчанию

Чтобы использовать Moxy в качестве реализации JAXB, необходимо добавить файл с именем jaxb.properties в папку с доменными классами приложения и включить следующую строку.

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

Можно ли сделать moxy по умолчанию для проекта? В случае, если у меня есть много разных папок с аннотированными классами предметной области, в какую папку я должен поместить этот файл?


person Edmondo1984    schedule 06.11.2012    source источник
comment
Нет, если Moxy не будет связан с JDK.   -  person Aravind Yarram    schedule 06.11.2012
comment
@Pangea - это не совсем так: stackoverflow.com/a/13254722/383861   -  person bdoughan    schedule 06.11.2012
comment
@BlaiseDoughan - Я пытаюсь подчеркнуть, что это невозможно без каких-либо изменений. Если не этот вариант, то есть другой. вы не можете избежать конфигурации.   -  person Aravind Yarram    schedule 06.11.2012
comment
@Pangea - True, за исключением WebLogic, где MOXy является реализацией JAXB по умолчанию, и для использования RI в качестве поставщика JAXB необходима конфигурация.   -  person bdoughan    schedule 06.11.2012
comment
@BlaiseDoughan - точка зрения принята. Но это только для сервера приложений, хотя правильно. Это также верно для их jdk? jrockit или что-то в этом роде.   -  person Aravind Yarram    schedule 06.11.2012
comment
@Pangea - в настоящее время JDK содержит пакет, переименованный в версию JAXB RI.   -  person bdoughan    schedule 06.11.2012


Ответы (1)


Примечание. Я EclipseLink JAXB (MOXy) руководитель и член экспертной группы JAXB (JSR-222) .

MOXy уже является реализацией JAXB по умолчанию в WebLogic 12.1.1:

В других средах вы также можете использовать механизм META-INF/services, чтобы указать MOXy в качестве поставщика JAXB по умолчанию:

  1. Создайте JAR, содержащий файл с именем javax.xml.bind.JAXBContext в каталоге META-INF/services
  2. Содержимое файла javax.xml.bind.JAXBContext должно быть org.eclipse.persistence.jaxb.JAXBContextFactory
  3. Добавьте эту банку в свой путь к классам.
person bdoughan    schedule 06.11.2012
comment
Это должно быть в другой банке? Разве мне не разрешено делать это в моем текущем проекте? Это очень раздражает... должен ли я создавать новую банку только для этой цели? - person Edmondo1984; 06.11.2012
comment
@ Edmondo1984 - Это не обязательно должно быть в отдельной банке. Обратите внимание, что как только вы поместите META-INF/services/javax.xml.bind.JAXBContext в путь к классу, MOXy станет реализацией JAXB по умолчанию для всех приложений, использующих этот путь к классу. - person bdoughan; 06.11.2012
comment
Спасибо. Я считаю, что было бы полезно добавить это на страницу ссылок eclipse в вики. - person Edmondo1984; 06.11.2012
comment
Я добавил файл внутри META-INF/services с именем javax.xml.bindJAXBContext внутри своего проекта и установил содержимое этого файла в org.eclipse.persistence.jaxb.JAXBContextFactory, но все же я не использую moxy - person Edmondo1984; 06.11.2012
comment
Убедитесь, что файл называется javax.xml.bind.JAXBContext, а не javax.xml.bindJAXBContext. В вашем комментарии отсутствует . между bind и JAXBContext. Я только что повторил эти шаги в Eclipse и получил MOXy в качестве поставщика JAXBContext. - person bdoughan; 06.11.2012
comment
Это решено, однако это не решает того факта, что он жалуется на отсутствие конструктора без аргументов для элемента @XmlTransient :) - person Edmondo1984; 06.11.2012
comment
@Edmondo1984. Не могли бы вы указать ошибку для той проблемы, которую вы видите (bugs.eclipse .org/bugs/enter_bug.cgi?product=EclipseLink)? Также какую версию EclipseLink вы используете (текущая версия 2.4.1). - person bdoughan; 06.11.2012
comment
@BlaiseDoughan Я не могу обновить неработающую ссылку на MOXy, так как это не изменение как минимум 6 символов. eclipse.org/eclipselink/#moxy - person rjdkolb; 21.04.2016