2014-10-24 4 views
1

Вот JAX-RS CXF (библиотека версия 3.0.1) перехватчик:прерывания executiong из CXF JAX-RS-перехватчика

public class CustomInInterceptor extends AbstractInDatabindingInterceptor { 

    public CustomInInterceptor() { 
     super(Phase.PRE_INVOKE); 
    } 

    public void handleMessage(Message message) { 
     // do something... 
    } 
} 

Если я просто выбросить RuntimeException, я буду получать следующий вывод: <ns1:XMLFault xmlns:ns1="http://cxf.apache.org/bindings/xformat"><ns1:faultstring xmlns:ns1="http://cxf.apache.org/bindings/xformat">java.lang.RuntimeException: 111</ns1:faultstring></ns1:XMLFault>

Вопрос в том, как я могу прерывать выполнение этого перехватчика с помощью сообщения клиента (например, некорректного json) для клиента?

UPDATE Я нашел способ, чтобы остановить перехватчики цепи:

InterceptorChain chain = message.getInterceptorChain(); 
chain.abort(); 

Но как установить текст пользовательских сообщений?

ответ

1

Единственный способ, которым я нашел, чтобы бросить WebApplicationException:

final Response response=Response.status(Status.NOT_FOUND).entity("Some Text").build(); 
throw new WebApplicationException(response);