Фреймворк Spring-WS и Stripes - плохой коктейль?

Я использую Spring 2.5.6, Spring-ws 1.5.9 и Stripes 1.5.6.

У меня есть работающий веб-сервис, который реализовывался с использованием синтаксического анализа XML и т. Д. Я не буду вдаваться в подробности об этом, так как не думаю, что это проблема.

Я работаю над новым ws и нашел эту страницу весьма полезной: http://jeromebulanadi.wordpress.com/2010/02/25/basic-spring-web-service-tutorial-from-contract-to-security/

... так что используя приведенный выше пример в качестве примера для реализации нового ws (ссылка содержит пример с маршалингом / демаршалингом объектов вместо того, чтобы делать все xml самостоятельно).

При подключении к ws я получаю это сообщение об ошибке (из шаблона веб-сервиса - также в 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-адреса с / * - что может быть проблемой.

Любые идеи или указатели приветствуются!


person sunlock    schedule 21.09.2011    source источник


Ответы (1)


Похоже, ваш сервлет Stripes обрабатывает URL-адреса, которые вы хотите обрабатывать сервлетом Spring-ws, который будет обрабатывать ваши запросы веб-службы. Возможно, вы захотите проверить свой <url-pattern> в своем web.xml.

person Kdeveloper    schedule 25.09.2011
comment
Мой URL-шаблон отображается на / * ... но почему мой старый ws работает, а не этот? - person sunlock; 26.09.2011
comment
/ * Заставит все проходить через сервлет, вы можете попробовать использовать только / (сделав его значением по умолчанию, если точное совпадение не найдено). - person Kdeveloper; 26.09.2011
comment
Это ничего не изменило ... Тем временем я переписал части веб-сервиса, и теперь у меня больше нет проблемы. Так что конфликта между Spring-ws и Stripes нет. Я не понимаю, почему это произошло, возможно, из-за какой-то странной проблемы, связанной с конфигурацией, но ... вздох - person sunlock; 26.09.2011