简体   繁体   English

[JAVA Spring SOAP WSDL]

[英][JAVA Spring SOAP WSDL]

I try to connect to a Web Service using spring/soap/wsdl. 我尝试使用spring / soap / wsdl连接到Web服务。 I'm receiving a stack trace like this: 我收到这样的堆栈跟踪:

Exception in thread "main" org.springframework.ws.soap.SoapMessageCreationException: Could not create message from InputStream: Unable to create envelope from given source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: 
    at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:216)
    at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:60)
    at org.springframework.ws.transport.AbstractWebServiceConnection.receive(AbstractWebServiceConnection.java:92)
    at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:608)
    at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:555)
    at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:390)
    at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:383)
    at com.arek.soapallegrotest.WsSearchClient.doLogin(WsSearchClient.java:60)
    at com.arek.soapallegrotest.WsSearchClient.doSearchResponse(WsSearchClient.java:81)
    at com.arek.soapallegrotest.SpringMain.main(SpringMain.java:24)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: 
    at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:117)
    at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:69)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:128)
    at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:189)
    ... 9 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source because the root element is not named "Envelope"
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.lookForEnvelope(SOAPPartImpl.java:154)
    at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:121)
    at com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory.createEnvelope(Envel

opeFactory.java:110)
    ... 12 more
2015-03-30 16:30:26.747  INFO 12079 --- [       Thread-1] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@3cb1ffe6: startup date [Mon Mar 30 16:30:24 CEST 2015]; root of context hierarchy

I've used this tutorial: https://spring.io/guides/gs/consuming-web-service/#initial to learn my self. 我使用了本教程: https : //spring.io/guides/gs/standing-web-service/#initial学习我的自我。

I found some info that I have something wrong with namespace ? 我发现一些有关命名空间的信息吗?

ps. ps。 sorry for my english 对不起我的英语不好

I had the same problem. 我有同样的问题。 I don't know exactly what is causing this in your sources because you didn't add any specific informatcion, but I can tell it began giving this error in my project when I added fop to my pom: 我不知道是什么在您的源中造成此错误,因为您没有添加任何特定的信息,但是当我将fop添加到pom时,我可以告诉它它开始在我的项目中出现此错误:

    <dependency>
        <groupId>org.apache.xmlgraphics</groupId>
        <artifactId>fop</artifactId>
        <version>1.1</version>
        <!-- some exclusions needed because of inexistent "avalon" packages in maven repositories -->
    </dependency>

It did happen with every version of fop I could find through maven. 我可以通过Maven找到的每个版本的Fop都确实发生了这种情况。

I found a solution here . 我在这里找到了解决方案 Apparently, the xalan and xerces included in fop needed to be upgraded. 显然,fop中包含的xalan和xerces需要进行升级。

I'm not happy with this solution, but it works. 我对这种解决方案不满意,但是它可以工作。 I left some exclusions I'm not sure are needed or could damage something else because a deadline is coming very fast (ha ha ha). 我留下了一些不确定性,因为不确定最后期限很快(哈哈哈),我不确定是否需要或可能会损坏其他东西。 I'll get into it later (or hope someone else can comment about them). 我稍后再讨论(或希望其他人可以对此发表评论)。

Here I add my pom fragment: 在这里,我添加了pom片段:

    <dependency>
        <groupId>org.apache.xmlgraphics</groupId>
        <artifactId>fop</artifactId>
        <version>1.1</version>
        <exclusions>
            <!-- 
                Following avalon-framework versions that come 
                as dependencies for fop 1.1 are not found 
                through maven:

                See: https://issues.apache.org/jira/browse/FOP-2151 
             -->
            <exclusion>
                <groupId>org.apache.avalon.framework</groupId>
                <artifactId>avalon-framework-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.avalon.framework</groupId>
                <artifactId>avalon-framework-impl</artifactId>
            </exclusion>
            <!-- 
                Without following exclusions I get the following 
                exception when trying to access another web service:
                2015-04-24 13:48:25,048 ERROR [http-nio-8084-exec-2] (CfdiController.java:152) - 
                Error while uploading. org.springframework.ws.soap.SoapMessageCreationException: 
                Could not create message from InputStream: Unable to create envelope from given 
                source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: 
                Unable to create envelope from given source: 
                at org.springframework.ws.soap.saaj.SaajSoapMessageFactory.createWebServiceMessage(SaajSoapMessageFactory.java:216) 
                ~[spring-ws-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]

                See: https://stackoverflow.com/a/13156775/2796922
            -->
            <exclusion>
                <artifactId>maven-cobertura-plugin</artifactId>
                <groupId>maven-plugins</groupId>
            </exclusion>
            <exclusion>
                <artifactId>maven-findbugs-plugin</artifactId>
                <groupId>maven-plugins</groupId>
            </exclusion>
            <exclusion>
                <artifactId>xalan</artifactId>
                <groupId>xalan</groupId>
            </exclusion>
            <exclusion>
                <artifactId>xercesImpl</artifactId>
                <groupId>xerces</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- 
        These avalon dependencies are found in maven:
    -->
    <dependency>
        <groupId>avalon-framework</groupId>
        <artifactId>avalon-framework-api</artifactId>
        <version>4.2.0</version>
    </dependency>
    <dependency>
        <groupId>avalon-framework</groupId>
        <artifactId>avalon-framework-impl</artifactId>
        <version>4.2.0</version>
    </dependency>

    <!--  
        With these versions is no longer raised the  
        "Unable to create envelope from given source"
        exception explained before
    -->
    <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>2.7.0</version>
        <type>jar</type>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>xml-apis</artifactId>
                <groupId>xml-apis</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.9.1</version>
        <type>jar</type>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>xml-apis</artifactId>
                <groupId>xml-apis</groupId>
            </exclusion>
        </exclusions>
    </dependency>

Hope it helps. 希望能帮助到你。

I had same problem and the cause was in line like this: 我遇到了同样的问题,原因如下:

WebServiceTemplate template = new WebServiceTemplate(messageFactory());
...    
template.setDefaultUri("http://host:2121/portal/service?wsdl");

solution was to remove ?wsdl 解决方案是删除?wsdl

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM