Soap Webservice响应不同于Tomcat 9和Java 11

问题描述 投票:1回答:1

我正在将我的应用程序从Java 8和Tomcat 7迁移到Java 11和Tomcat 9.通过一些版本更新,次要实现更改并添加少量maven依赖项,我已经能够成功编译并运行我的应用程序。但是,我编写的集成测试很少,以测试我的应用程序中基于Soap的Web服务是否失败。这是由于预期的肥皂反应和实际响应不匹配而发生的。

以下是两个回复:实际是:

<?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响应的元素顺序是否会受到干扰?如果是,那么这是由于一些过时的依赖性还是我们需要修改一些实现?

java xml soap java-11 tomcat9
1个回答
0
投票

虽然我不确定这是否是正确的解决方案,但以下对我有用:

在我的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 11之前的Java 8相同。

© www.soinside.com 2019 - 2024. All rights reserved.