带有webServiceTemplate.marshalSendAndReceive的Spring WS返回请求的已接收错误,服务不可用:未找到[404]

时间:2011-07-25 12:27:03

标签: jaxb spring-ws webservicetemplate

我正在尝试修改在Tomcat上使用Spring-WS和JAXB的现有SOAP Web服务。我已经使用我的更改创建了新的WAR文件,并将其部署在Tomcat安装下的webapps foder中。

在调用服务的原始(已存在)方法时,服务SOAP请求和响应很好。但是当在新方法上调用服务时,我得到的服务SOAP响应服务不可用而没有找到[404]

2011-07-25 12:58:23,365 DEBUG [org.springframework.ws.client.core.WebServiceTemplate] - Opening [org.springframework.ws.transport.http.HttpUrlConnection@12b9f14] to [http://<service URL>]
2011-07-25 12:58:23,521 DEBUG [org.springframework.ws.soap.saaj.support.SaajUtils] - SOAPElement [com.sun.xml.internal.messaging.saaj.soap.ver1_1.Envelope1_1Impl] implements SAAJ 1.3
2011-07-25 12:58:23,552 DEBUG [org.springframework.ws.soap.saaj.support.SaajUtils] - SOAPElement [com.sun.xml.internal.messaging.saaj.soap.ver1_1.Body1_1Impl] implements SAAJ 1.3
2011-07-25 12:58:23,896 DEBUG [org.springframework.ws.client.MessageTracing.sent] - Sent request [<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns2:DelRequest xmlns:ns2="http://<changed_address>"><ns2:userId>ncc1@%</ns2:userId><ns2:dateFromMillis>1308956400000</ns2:dateFromMillis><ns2:dateToMillis>1311634800000</ns2:dateToMillis></ns2:DelRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>]
2011-07-25 12:58:25,318 DEBUG [org.springframework.ws.client.core.WebServiceTemplate] - Received error for request [SaajSoapMessage {http://<changed_address>}DelRequest]

2011-07-25 12:58:25,318 ERROR [net.msgplugin.controller.DeleteController] - 对话服务不可用于:http://,Not Found [404],null

我已将项目导入Eclipse,并对项目属性进行了以下更改:

1)在Project Facets中,我检查了“Dynamic Web Module”和“Java”Facets。 2)在Java EE模块依赖项中,我检查了Maven依赖项。

这里要注意的两件事是:

a)开发人员在开发Web服务时使用JBoss,但最近该项目被查封到Tomcat。 b)项目具有MAVEN文件夹结构,因此web.xml文件位于src / main / webapp / WEB-INF文件夹而不是WebContent / WEB-INF,当我选择“动态Web模块”方面时创建了taht。

任何建议都会受到高度赞赏吗?

由于

=============================================== =========================

HI

我设法修复了Not Found [404]错误,但现在又出现了另一个错误。 在进一步调查并调试到WebServiceTemplate和MessageDispatcher类之后,我发现控制台上的输出如下:

DEBUG [org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter] - Accepting incoming [org.springframework.ws.transport.http.HttpServletConnection@11f05a1] to [http://<Service_URL>]

TRACE [org.springframework.ws.server.MessageTracing.received] - Received request [<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns2:DelRequest xmlns:ns2="http://<changed_address>"><ns2:userId>ncc1@%</ns2:userId><ns2:dateFromMillis>1309042800000</ns2:dateFromMillis><ns2:dateToMillis>1311721200000</ns2:dateToMillis></ns2:DelRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>]

DEBUG [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping] - Looking up endpoint for [{<changed_address>}DelRequest]

DEBUG [org.springframework.ws.soap.server.SoapMessageDispatcher] - Endpoint mapping [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping@6ee035] maps request to endpoint [public final net.org.messagehistory.schema.GetDelResponse net.org.messagehistory.service.endpoint.MessageHistoryEndpoint.delHistory(net.org.messagehistory.schema.GetListRequest) throws javax.xml.datatype.DatatypeConfigurationException]

DEBUG [org.springframework.ws.soap.server.SoapMessageDispatcher] - Testing endpoint adapter [org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter@1a23f67]

DEBUG [org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter] - Unmarshalled payload request to [net.org.messagehistory.schema.DelRequest@c76003]

结束错误消息现在是'Argument type Mismatch',我发现它是从WebServiceTemplate.class中的一个方法生成的

有人可以建议这里有什么问题吗?

1 个答案:

答案 0 :(得分:0)

管理以对此进行排序。所以,只是想分享某人可能会发现有用的解决方案。

确保使用以下方法注释Endpoint方法 @PayloadRoot(localPart = MESSAGES_TO_DELETE,namespace = MESSAGE_NAMESPACE) 其中localpart与schema.xsd

中的有效负载请求相同

由于