【问题标题】:Spring-ws and Stripes framework - a bad cocktail?Spring-ws 和 Stripes 框架 - 一个糟糕的鸡尾酒?
【发布时间】:2011-09-21 09:40:08
【问题描述】:

我正在使用 Spring 2.5.6、Spring-ws 1.5.9 和 Stripes 1.5.6。

我有一个使用 xml 解析等实现的工作 web 服务。我不会对此进行详细介绍,因为我认为这不是问题。

我正在开发一个新的 ws,发现这个页面非常有用:http://jeromebulanadi.wordpress.com/2010/02/25/basic-spring-web-service-tutorial-from-contract-to-security/

...所以使用上面的例子来实现一个新的ws(链接包含一个对对象进行编组/解组的例子,而不是自己做所有的xml)。

连接到 ws 时,我收到此错误消息(来自 web 服务模板 - 也在 Spring 中):

org.springframework.ws.client.WebServiceTransportException: Not Found [404]
        at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:627)
        at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:551)
        at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:502)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:351)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:345)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:337)

调用来自我的模板,我这样调用:

GetSignalsByCprRequest request = new GetSignalsByCprRequest();
request.setCpr(new BigInteger(cpr));
GetSignalsByCprResponse response = (GetSignalsByCprResponse) getWebServiceTemplate().marshalSendAndReceive(request);

更大的堆栈跟踪是:

21-09-2011 11:16:35 INFO  com.mydomain.ws.client.SignalsTemplateImpl  - Entering getSignals(..) in SignalsTemplateImpl
--- ENTER TEMPLATE ---
21-09-2011 11:16:35 TRACE net.sourceforge.stripes.controller.StripesFilter  - Intercepting request to URL: /salesoverview-ws-war/services
21-09-2011 11:16:35 DEBUG net.sourceforge.stripes.controller.StripesFilter  - LocalePicker selected locale: da_DK
21-09-2011 11:16:35 DEBUG net.sourceforge.stripes.controller.StripesFilter  - LocalePicker did not pick a character encoding, using default: UTF-8
21-09-2011 11:16:35 DEBUG net.sourceforge.stripes.controller.UrlBindingFactory  - No URL binding matches /salesoverview-ws-war/services
21-09-2011 11:16:35 DEBUG net.sourceforge.stripes.controller.UrlBindingFactory  - No URL binding matches /salesoverview-ws-war/services
org.springframework.ws.client.WebServiceTransportException: Not Found [404]
        at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:627)
        at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:551)
        at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:502)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:351)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:345)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:337)

"--- ENTER TEMPLATE ---" 打印在创建请求/响应的正上方。错误发生在 GetSignalsByCprResponse response = (GetSignalsByCprResponse) getWebServiceTemplate().marshalSendAndReceive(request); 我很空白-我不知道该去哪里。我有一个小小的想法,即肥皂消息不包含命名空间或 Stripes 捕获请求 - 基于堆栈跟踪... Stripes 正在使用 DynamicMappingFilter,因此将 url-pattern 映射到/* - 这可能是问题所在。

非常感谢任何想法或指示!

【问题讨论】:

    标签: spring-ws stripes


    【解决方案1】:

    似乎您的 Stripes servlet 正在处理您希望由 Spring-ws servlet 处理的 URL,该 Spring-ws servlet 将处理您的 Web 服务请求。您可能需要检查您的 web.xml 中的 <url-pattern>

    【讨论】:

    • 我的 url-pattern 映射到 /* ...但是为什么我的“旧”ws 工作而不是这个?
    • /* 将强制所有内容通过 servlet,您可能想尝试仅使用 /(将其设为默认值,当找不到完全匹配时)。
    • 这并没有改变任何东西......同时,我已经重写了部分网络服务,现在我不再有问题了。所以 Spring-ws 和 Stripes 之间没有冲突。我不明白为什么会这样,可能是由于一些奇怪的配置相关问题,但是... sigh
    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2013-12-23
    • 2017-01-20
    相关资源
    最近更新 更多