2016-08-16 3 views
1

Мой проект отлично работает с сервером tomcat, и теперь я пытаюсь запустить проект в WebSphere Liberty Profile (WLP), но он дает мне ниже ошибку для реализации staxXMLStreamException: URI пространства имен не привязан к префиксу, IBM jre

 javax.xml.stream.XMLStreamException: The namespace URI "http://www.example.com/ns1" has not bound to a prefix. 
    at com.ibm.xml.xlxp.api.stax.msg.StAXMessageProvider.throwXMLStreamException(StAXMessageProvider.java:59) 
    at com.ibm.xml.xlxp.api.stax.XMLStreamWriterBase.writeAttribute(XMLStreamWriterBase.java:464) 
    at com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl$XMLStreamWriterProxy.writeAttribute(XMLOutputFactoryImpl.java:157) 
    at org.apache.olingo.odata2.core.ep.producer.XmlMetadataProducer.writeAnnotationAttributes(XmlMetadataProducer.java:599) 
    at org.apache.olingo.odata2.core.ep.producer.XmlMetadataProducer.writeMetadata(XmlMetadataProducer.java:134) 

Я установил политику classloader в parent-last в WLP. Как реализовать stax в IBM jre

ответ

1

Проблема решена, спасибо за ваш ответ. Вот решение: я добавил stax2-апи и Woodstox-ядро-над уровнем море баночки в мой проект и установить ниже собственность в моем system.properties проекта

javax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory 
javax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory 
2

IBM JRE включает STAX, это требуется как часть Java SE.

Javadoc for writeAttribute предполагает, что это исключение ожидается, если вы пишете атрибут с пространством имен, которое еще не привязано к префиксу. Без дополнительной информации о документе, который вы собираетесь писать, я не могу подтвердить, так ли это.

Если это так, то вам необходимо либо исправить документ, который вы пишете так, чтобы он установил префикс пространства имен, прежде чем использовать пространство имен, или установите javax.xml.stream.isRepairingNamespaces свойство на выходном фабрике true перед созданием ваш XMLStreamWriter.

Следуя примеру в Javadoc:

xmlOutputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, new Boolean(true));

Я не знаю, почему это будет работать на TOMCAT, но не свободу. Более подробная информация о реализации IBM STAX доступна в Knowledge Center.