public void attach(PhysicalSourceDefinition source, WebTargetDefinition target, Wire wire)
     throws WiringException {
   WebCallbackInterceptor interceptor = new WebCallbackInterceptor(broadcasterManager);
   for (InvocationChain chain : wire.getInvocationChains()) {
     chain.addInterceptor(interceptor);
   }
 }
 public Object intercept(Object object, Method method, Object[] args, MethodProxy proxy)
     throws Throwable {
   WorkContext context = WorkContextTunnel.getThreadWorkContext();
   authenticate(context);
   Message message = new MessageImpl(args, false, context);
   InvocationChain invocationChain = invocationChains.get(method.getName());
   if (invocationChain != null) {
     Interceptor headInterceptor = invocationChain.getHeadInterceptor();
     Message ret = headInterceptor.invoke(message);
     if (ret.isFault()) {
       throw (Throwable) ret.getBody();
     } else {
       return ret.getBody();
     }
   } else {
     return null;
   }
 }