У меня есть следующий код:определение парсера StAX во время выполнения
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = inputFactory.createXMLStreamReader(inStream);
this.encoding = xmlStreamReader.getEncoding();
...
Этот код прекрасно работает как в JBoss и Websphere, однако в конкретном JBoss бросает следующее исключение:
java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136)
at es.gema.core.shared.dim.data.XFacturaE.detectVersion(XFacturaE.java:115)
at es.gema.core.shared.dim.data.XFacturaE.<init>(XFacturaE.java:67)
at es.gema.core.shared.dim.bc.InvoiceLoader.readXMLInvoice(InvoiceLoader.java:544)
at es.gema.core.shared.dim.bc.InvoiceLoader.loadInvoiceFACE(InvoiceLoader.java:137)
at es.gema.core.expenses.fac.bc.InvoiceServicesBC.execute(InvoiceServicesBC.java:127)
at es.gema.core.expenses.fac.bc.InvoiceServicesBC.execute(InvoiceServicesBC.java:92)
Проверка WstxInputFactory Я вижу, что он расширяет XMLInputFactory2 вместо XMLInputFactory.
Каков рекомендуемый подход в этом случае? Создайте экземпляр WstxInputFactory без использования фабрики или настройте контейнер Java для возврата парсера, который расширяет XMLInputFactory?
Не мог бы вы расширить свой ответ, добавив некоторые подробности о том, что вы имеете в виду под„Убедитесь, что javax.xml.stream.XMLInputFactory загружен тем же загрузчиком классами“? – malat