Ответ Soap Webservice, различающийся на Tomcat 9 и Java 11 - PullRequest
0 голосов
/ 18 февраля 2019

Я перевожу свое приложение на Java 11 и Tomcat 9 с Java 8 и Tomcat 7. С некоторыми обновлениями версий, незначительными изменениями в реализации и добавлением нескольких зависимостей maven я смог успешно скомпилировать и запустить свое приложение.Однако у меня есть несколько интеграционных тестов, написанных для тестирования веб-сервисов на основе Soap в моем приложении, которые не работают.Это происходит из-за несоответствия в ожидаемом ответе Мыла и фактическом ответе.

Вот два ответа: Фактический:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<S:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">    
<SOAP-ENV:Header/>    
<S:Body
    xmlns:ns2="http://www.acd.org/cact/namespaces/StandardBusinessDocumentHeader"
    xmlns:ns3="urn:global:cpci-query:xsd:1"
    xmlns:ns4="urn:global:cpci-masterdata:xsd:1"
    xmlns:ns5="urn:global:cpci:xsd:1">        
    <ns3:GetResult>            
    <string>SimpleDataQuery</string>
    <string>SimpleQuery</string>                    
    </ns3:GetResult>    
</S:Body>
</S:Envelope>

Ожидаемый:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">    
<soapenv:Body>                
    <ns5:GetResult
        xmlns:ns5="urn:global:cpci-query:xsd:1">                        
        <string>SimpleQuery</string>                        
        <string>SimpleDataQuery</string>                    
    </ns5:GetResult>            
</soapenv:Body>    
</soapenv:Envelope>

У pom есть следующие обновленные записи:

 <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-ri</artifactId>
                <version>2.3.2</version>
                <type>pom</type>

            </dependency>

<dependency>
            <groupId>javax.activation</groupId>
            <artifactId>javax.activation-api</artifactId>
            <version>1.2.0</version>
        </dependency>

Может ли Java 11 повлиять на порядок элементов ответов WS?Если да, то это из-за устаревших зависимостей или нам нужно изменить некоторые реализации?

Ответы [ 2 ]

0 голосов
/ 26 августа 2019

Обновление: очевидно, проблема была в том, что в новых JDK отсутствуют rt.jar и jaxws-rt.jar.Добавление этих зависимостей не решает проблему полностью, так как их транзитивность недоступна из-за некомпиляции их pom.xml.Добавление всех необходимых транзитивных зависимостей в maven решило проблему.

0 голосов
/ 20 марта 2019

Хотя я не уверен, что это правильное решение, но мне помогло следующее:

Явно добавили следующие записи в мой файл pom.xml (это старые зависимости, так как более новые зависимости вызывают ответы xml наизменить):

   <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>rt</artifactId>
        <version>2.2.8</version>
    </dependency>
    <dependency>
       <groupId>com.sun.xml.ws</groupId>
       <artifactId>jaxws-rt</artifactId>
       <version>2.2.8</version>
       <type>pom</type>
    </dependency>
    <dependency>
       <groupId>com.sun.xml.bind</groupId>
       <artifactId>jaxb-core</artifactId>
       <version>2.2.7</version>
    </dependency>
    <dependency>
       <groupId>com.sun.xml.bind</groupId>
       <artifactId>jaxb-impl</artifactId>
       <version>2.2.7</version>
    </dependency>
    <dependency>
       <groupId>com.sun.xml.stream.buffer</groupId>
       <artifactId>streambuffer</artifactId>
       <version>1.5.7</version>
    </dependency>
    <dependency>
       <groupId>com.sun.org.apache.xml.internal</groupId>
       <artifactId>resolver</artifactId>
       <version>20050927</version>
    </dependency>
    <dependency>
       <groupId>org.glassfish.gmbal</groupId>
       <artifactId>gmbal</artifactId>
       <version>4.0.0</version>
    </dependency>

    <dependency>
       <groupId>com.sun.xml.ws</groupId>
       <artifactId>rt-ha</artifactId>
       <version>2.3.0.2</version>
    </dependency>

Опубликовать эти изменения, я получаю ответы XML, такие же, как на Java 8 до перехода на Java 11.

...