public static void clearThreadLocalProxies(Message message) { clearThreadLocalProxies(ServerProviderFactory.getInstance(message), message); } public static void clearThreadLocalProxies(ServerProviderFactory factory, Message message) {
public static void clearThreadLocalProxies(ServerProviderFactory factory, Message message) { factory.clearThreadLocalProxies(); ClassResourceInfo cri = (ClassResourceInfo)message.getExchange().get(JAXRSUtils.ROOT_RESOURCE_CLASS); if (cri != null) { cri.clearThreadLocalProxies(); } } public static void releaseRequestState(Message message) {
public static void releaseRequestState(ServerProviderFactory factory, Message message) { Object rootInstance = message.getExchange().remove(JAXRSUtils.ROOT_INSTANCE); if (rootInstance != null) { Object rootProvider = message.getExchange().remove(JAXRSUtils.ROOT_PROVIDER); if (rootProvider != null) { try { ((ResourceProvider)rootProvider).releaseInstance(message, rootInstance); } catch (Throwable tex) { // ignore } } } clearThreadLocalProxies(factory, message); }
private void convertExceptionToResponseIfPossible(Throwable ex, Message message) { Response excResponse = JAXRSUtils.convertFaultToResponse(ex, message); if (excResponse == null) { ServerProviderFactory.getInstance(message).clearThreadLocalProxies(); message.getExchange().put(Message.PROPOGATE_EXCEPTION, ExceptionUtils.propogateException(message)); throw ex instanceof RuntimeException ? (RuntimeException)ex : ExceptionUtils.toInternalServerErrorException(ex, null); } message.getExchange().put(Response.class, excResponse); message.getExchange().put(Throwable.class, ex); }
public void handleMessage(Message message) { final Exchange exchange = message.getExchange(); exchange.put(Message.REST_MESSAGE, Boolean.TRUE); Response response = exchange.get(Response.class); if (response == null) { try { processRequest(message, exchange); if (exchange.isOneWay()) { ServerProviderFactory.getInstance(message).clearThreadLocalProxies(); } } catch (Fault ex) { convertExceptionToResponseIfPossible(ex.getCause(), message); } catch (RuntimeException ex) { convertExceptionToResponseIfPossible(ex, message); } catch (IOException ex) { convertExceptionToResponseIfPossible(ex, message); } } response = exchange.get(Response.class); if (response != null) { createOutMessage(message, response); message.getInterceptorChain().doInterceptStartingAt(message, OutgoingChainInterceptor.class.getName()); } }
result = handleAsyncResponse(exchange, asyncResponse); } else { providerFactory.clearThreadLocalProxies();
boolean suspended = isSuspended(exchange); if (suspended || exchange.isOneWay() || inMessage.get(Message.THREAD_CONTEXT_SWITCHED) != null) { ServerProviderFactory.clearThreadLocalProxies(inMessage);