Я провел некоторое исследование на кончике от nadirsaghar, и я нашел, что это решение для очистки. Использование message.getExchange() в JAX-WS - полная боль, так как вам нужно настроить канал и заполнить ответное сообщение самостоятельно ...
Так лучше сделайте это, используя HttpServletResponse. - На вашем пути должен быть Java-сервлет-api.jar. Если вы разрабатываете без maven, просто связывайте его с каталогом веб-сервера (например, tomcat), но исключайте его из развертывания.
<!-- With Maven add the following dependency -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<!-- The version should match your WebService version e.g. 3.0 for JDK7-->
<version>2.5</version>
<scope>provided</scope>
</dependency>
С объемом при условии, что не будет развернут и просто доступно, так что вы можете получить доступ к классу HttpServletResponse.
Ваш Handler Код:
@Override
public void handleMessage(final Message message) throws Fault
{
if(shouldBlockMessage(message))
{
message.getInterceptorChain().abort();
final HttpServletResponse response = (HttpServletResponse)message.get(AbstractHTTPDestination.HTTP_RESPONSE);
// To redirect a user to a different Page
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "http://www.bla.blubb/redirectPage");
// Other possibility if a User provides faulty login data
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
}
}
Я попытался это, но он полностью останавливает перехватчик цепь без возврата ответа. Есть ли способ передать пользовательский ответ после остановки цепи перехватчика? – Sumit
@Sumit: Я думаю, что вы можете напрямую манипулировать HttpServletResponse, получая ссылку из 'message.get (AbstractHttpDestination.HTTP_RESPONSE)' – nadirsaghar