Как создать JAXBContext в EclipseLink? - PullRequest
3 голосов
/ 11 марта 2011

JAXBContext.newInstance() метод получает Map со свойствами в качестве параметра.

Какие свойства и как мне указать, чтобы экземпляр JAXBContext информировался о нескольких файлах с xml-сопоставлениями?

Пример показывает, как указать только один файл способом, который неприемлем в реальных системах (то есть с new File(address)).Вместо этого мне нужно использовать classLoader.getResource(), который возвращает URL объект.

Спасибо!

UPD:

Когда я пытаюсь создать экземпляр JAXBContext, я получаю следующее исключение:

javax.xml.bind.JAXBException: property "eclipselink-oxm-xml" is not supported
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:118)
    ...

Очевидно, что файл jaxb.propertiesне найден при запуске.Где я должен положить это?(Я использую maven, и на самом деле я пытался установить его в /target/jaxb.properties, /target/classes/jaxb.properties, /target/classes/META-INF/definitions/jaxb.properties - это рядом с файлом сопоставления xml, а /target/classes/com/myproject/experiment/jaxb.properties - это рядом с классом, который пытается создать экземпляр JAXBContext).

1 Ответ

2 голосов
/ 11 марта 2011

Файл внешних привязок E clipseLink JAXB (MOXy) может иметь любой (или список) следующих форматов:

  • java.io.File
  • java.io.InputStream
  • java.io.Reader
  • java.net.URL
  • javax.xml.stream.XMLEventReader
  • javax.xml.stream.XMLStreamReader
  • javax.xml.transform.Source
  • org.w3c.dom.Node
  • org.xml.sax.InputSource

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

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