WSS4J выдает ошибки с Java 11 - PullRequest
       62

WSS4J выдает ошибки с Java 11

0 голосов
/ 16 января 2020

Я пытаюсь перенести проект Java / SOAP в Java 11. Этот проект использует WSS4j 1.6.7. Это сервлет, который пытается проверить входящие SOAP сообщения, но с Java 11 он не может проверить. InputStream - это сообщение SOAP, и оно работает под Java 8 с тем же сообщением, поэтому проблема не возникает.

MimeHeaders headers = new  MimeHeaders();
message = getMessageFactory().createMessage(headers, inputStream);

Когда я запускаю этот код, я вижу это:

SEVERE  - SAAJ0532: Absent Content-Type

Я думал, что смогу подделать заголовок и обойти это, используя это:

MimeHeaders headers = new  MimeHeaders();
headers.addHeader("Content-Type", "text/xml");
message = getMessageFactory().createMessage(headers, inputStream);

Но результат хуже:

    java.lang.ClassNotFoundException: org.apache.xerces.xni.NamespaceContext
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at com.sun.xml.messaging.saaj.soap.name.NameImpl.<init>(NameImpl.java:60)
    at com.sun.xml.messaging.saaj.soap.name.SOAP1_1Name.<init>(NameImpl.java:394)
    at com.sun.xml.messaging.saaj.soap.name.Envelope1_1Name.<init>(NameImpl.java:405)
    at com.sun.xml.messaging.saaj.soap.name.NameImpl.createEnvelope1_1Name(NameImpl.java:253)
    at com.sun.xml.messaging.saaj.soap.ver1_1.Envelope1_1Impl.<init>(Envelope1_1Impl.java:25)
    at com.sun.xml.messaging.saaj.soap.impl.ElementFactory.createNamedElement(ElementFactory.java:74)
    at com.sun.xml.messaging.saaj.soap.impl.ElementFactory.createElement(ElementFactory.java:51)
    at com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.createElementNS(SOAPDocumentImpl.java:133)
    at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.createElementNS(SOAPPartImpl.java:345)
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.startElement(SAX2DOM.java:159)
    at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:206)
    at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:526)
    at java.xml/org.xml.sax.helpers.XMLFilterImpl.characters(XMLFilterImpl.java:588)
    at org.apache.xerces.parsers.SAXParser.characters(SAXParser.java:1579)
    at org.apache.xerces.validators.common.XMLValidator.processWhitespace(XMLValidator.java:998)
    at org.apache.xerces.readers.UTF8Reader.scanContent(UTF8Reader.java:2248)
    at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1094)
    at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
    at java.xml/org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:687)
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:774)
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:370)
    at com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:63)
    at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34)
    at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:82)
    at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getDocumentElement(SOAPPartImpl.java:280)
    at org.apache.ws.security.util.WSSecurityUtil.getSecurityHeader(WSSecurityUtil.java:94)
    at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:249)
    at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:208)

Я новичок к этому проекту и не знаю, если версия WSS4j несовместима с Java 11, или я пропускаю .jars, которые мне нужно включить. Я пробовал много вариантов saaj-impl и xerces, но ничего не изменилось. Кто-нибудь сталкивался с этим? Есть ли список .jars с версиями, которые я могу использовать для Java 11, которые будут работать?

ОБНОВЛЕНИЕ Мне удалось устранить эти ошибки. Во-первых, я обновил библиотеку wssj4j с 1.6.7 до 1.6.19, из-за чего проверка Content-Type перестала работать. Кроме того, дальнейшие ошибки были смягчены путем использования Axis2, как обычно описано в этом вопросе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...