Как настроить JAXB для использования Woodstox на JBoss 6? - PullRequest
3 голосов
/ 06 мая 2011

Я развертываю веб-сервис JAX-RS Java EE 6 на JBoss 6, и я хотел бы использовать Woodstox вместо того, какой парсер SAX / StAX используется в настоящее время.Поскольку некоторые стеки отслеживают списки классов в (среди других пакетов):

  • org.apache.xerces.parsers
  • org.apache.xerces.impl
  • org.apache.xerces.jaxp

... Я предполагаю, что он использует Xerces .

Я пытался добавить необходимых JAR (woodstox-core-asl-4.1.1.jar и stax2-api-3.1.1.jar) вEAR (развернутый в каталоге /lib), а также в WAR (в WEB-INF/lib), но это, похоже, ни на что не повлияло, поскольку трассировка стека от исключений в синтаксическом анализе XML по-прежнему ссылается на пакеты Xerces.Я уже прочитал этот вопрос , но я думаю, что я уже попробовал опцию "добавить его в ваш путь к классу", как указано выше.Я также уже пытался добавить следующие аргументы VM согласно этой теме :

-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory
-Djavax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory
-Djavax.xml.stream.XMLEventFactory=com.ctc.wstx.stax.WstxEventFactory
-Dcom.sun.xml.ws.api.streaming.XMLStreamReaderFactory.woodstox=true
-Dcom.sun.xml.ws.api.streaming.XMLStreamWriterFactory.woodstox=true

Что я делаю не так?Как заставить JAXB использовать Woodstox вместо (я думаю) Xerces?

1 Ответ

0 голосов
/ 07 мая 2011

Когда EclipseLink JAXB (MOXy) создает XMLStreamReader, он делает это с использованием стандартных API, поэтому он должен получить тот, который соответствует вашей среде:

xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(reader);

С учетом сказанного, это предполагает, что реализация JBoss JAX-RS вызывает путь кода MOXy, который позволяет ему создавать свой собственный XMLStreamReader (такой как демаршаллинг InputStream), а не передавать ему фактический XMLStreamReader (по выбору JBoss).

...