/** * Creates a WorkContext for the request. * <p/> * client that is wired to it. Otherwise, it is null. * * @param header the serialized work context header * @return the work context */ @SuppressWarnings({"unchecked"}) protected WorkContext setWorkContext(byte[] header) { try { WorkContext workContext = WorkContextCache.getAndResetThreadWorkContext(); if (header == null || header.length == 0) { return workContext; } List<CallbackReference> stack = CallbackReferenceSerializer.deserialize(header); // add the last callback twice as it will be needed when the callback is made back through the binding if (!stack.isEmpty()) { stack.add(stack.get(stack.size() - 1)); } workContext.addCallbackReferences(stack); return workContext; } catch (IOException e) { throw new ServiceRuntimeException("Error deserializing callback references", e); } }
public void run() { WorkContext workContext = WorkContextCache.getAndResetThreadWorkContext(); try { workContext.setSubject(subject); workContext.addHeaders(headers); workContext.addCallbackReferences(stack); delegate.run(); } finally { workContext.reset(); } } }
public T call() throws Exception { WorkContext workContext = WorkContextCache.getAndResetThreadWorkContext(); try { workContext.setSubject(subject); workContext.addHeaders(headers); workContext.addCallbackReferences(stack); return delegate.call(); } finally { workContext.reset(); } } }
public void run() { WorkContext workContext = WorkContextCache.getAndResetThreadWorkContext(); workContext.addCallbackReferences(stack); workContext.addHeaders(headers); workContext.setSubject(subject); Message message = MessageCache.getAndResetMessage(); message.setBody(payload); message.setWorkContext(workContext); Message response = next.invoke(message); if (response.isFault()) { // log the exception monitor.onError((Throwable) response.getBody()); } message.reset(); workContext.reset(); }