当前位置: 首页 > 知识库问答 >
问题:

Spring集成ws出站网关抛出webservicetransport异常未找到404错误

戴霖
2023-03-14

我们使用ws-outbound-gateway以下面的方式调用webservice。

<ws:outbound-gateway uri="http://localhost:8080/test" message-factory="messageFactory" message-sender="messageSender" ignore-empty-responses="false" requires-reply="true" />

<bean name="messageSender" class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
</bean>

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="soapVersion">
 <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_11"/>
 </property>
 </bean>

如果请求xml采用以下方式,则工作正常。

 <?xml version="1.0" encoding="UTF-8"?>
 <m:processRequest xmlns:m="http://ws.test.com">
  <request>
  <dealerId>999852</dealerId>
              .......
              .......
   </request>
 </m:processRequest>

如果我在请求xml中添加SOAP-ENV:Envelope xmlns:SOAP-ENV = " http://schemas . xmlsoap . org/SOAP/Envelope/"和SOAP-ENV:Body,它将抛出如下错误:

org.springframework.ws.client.WebServiceTransportException: Not Found [404]

堆栈跟踪:

org.springframework.ws.client.WebServiceTransportException: Not Found [404]
        at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:590)
        at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:514)
        at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:465)
        at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:420)
        at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:366)
        at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:351)
        at com.railinc.notifserv.services.findusrail.impl.FindUsRailContactServiceImpl.getFindUsRailContacts(FindUsRailContactServiceImpl.java:31)
        at com.railinc.notifserv.services.findusrail.impl.FindUsRailContactServiceImplTest.testGetFindUsRailContacts(FindUsRailContactServiceImplTest.java:9)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

失败错误xml:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:processRequest xmlns:m="http://ws.test.com">
    <request>
        <dealerId>999852</dealerId>
          .......
          .......
    </request>
</m:processRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

有没有办法使用 ws 出站网关将请求 xml 与 soap 信封一起发送?

共有1个答案

施景同
2023-03-14

在你提出的问题中,我给了你一个答案:https://github.com/spring-projects/spring-integration-samples/issues/231。所以,让我在这里重复一遍!

您的问题是,您不必将一个完整的SOAP信封发送到WS出站网关。您确实需要像最初一样,只发送SOAP请求体的XML。

如果您真的需要发送整个SOAP信封,您需要考虑使用MimeMessage作为请求负载:https://docs . spring . io/spring-integration/docs/5 . 0 . 6 . release/reference/html/ws . html # mtom-support

 类似资料:
  • 我正在开发一个关于Spring集成的POC,使用如下。 从远程JMS队列订阅输入消息(A) 将输入消息(A)转换为(B) 使用(B)调用远程Web服务并接收响应 我的spring int-config-xml有以下内容 在我的Spring集成proj工作区中拥有所有jaxb生成的源代码。 在STS 3.8中执行此操作时。3,将抛出以下错误。 不确定我的代码中有什么错误。任何解决这一问题的帮助都是高

  • 我正在尝试调用一个 webservice(spring-ws),它使用 ws:outbound-gateway 从 spring 集成中调用。我使用jaxb2marshaller进行oxm映射。最初,我使用 jms:inbound-channel-adapter 来接收输入对象,将其转换为 JAXBElement(Sample),其中 Sample 由 JAXB 从 WS-XSD 模式生成。对象工

  • 我有一个 FileUpload 事件,应该将其发送到 http:outbound upload URL。为此,我必须首先对登录 URL 进行身份验证并获取响应,并设置要执行的出站上传 URL 的会话 ID。在我的情况下,我有一个事件侦听器,它侦听应用程序以发布文件上传事件。发布后,我的侦听器可以拾取并执行流。我正在尝试了解如何实现这一点,因为文件上传对象需要保留,直到登录响应返回。谢谢!

  • 我正在尝试将spring集成配置为向队列发送消息,然后接收消息,即非常简单的事情: 我认为解耦所必需的是在流程的两端都有一个消息网关。因此,我的第一次尝试(有效)如下所示: 其中MessageReceiverHandler()是扩展AbstractMessageHandler的bean。 所以上面我们有一个用于出站消息的消息网关。我假设我们也应该有一个用于入站消息的网关,允许我们将传入消息处理与应

  • 我有下一个配置: 入境 出站: 链条1: 链2: 错误: Java Transformer: 当出站的Web服务关闭时,错误进入错误通道转换器,但要响应,我们有下一个错误: o、 s.m.c.GenericMessageTemplate$TemporaryReplyChannel#242已收到回复消息,但由于发送请求消息时出现异常,接收线程已退出:GenericMessage[payload=[#

  • 在带有Java配置的ftp出站网关的Spring集成文档示例(16.8.1)中,如何将应答通道的有效负载记录到控制台?