metadata.addMetaData(JMSAdvisor.JMS, JMSAdvisor.CONNECTION_FACTORY_ID, connFactoryID, PayloadKey.AS_IS);
   private Object createProxy() throws Exception   {      Serializable oid = connFactoryAdvisor.getName();      String stackName = "ConnectionFactoryStack";      AdviceStack stack = AspectManager.instance().getAdviceStack(stackName);      // TODO why do I need an advisor to create an interceptor stack?      Interceptor[] interceptors = stack.createInterceptors(connFactoryAdvisor, null);      JMSInvocationHandler h = new JMSInvocationHandler(interceptors);      SimpleMetaData metadata = new SimpleMetaData();      // TODO: The ConnectionFactoryDelegate and ConnectionDelegate share the same locator (TCP/IP connection?). Performance?      metadata.addMetaData(Dispatcher.DISPATCHER, Dispatcher.OID, oid, PayloadKey.AS_IS);      metadata.addMetaData(InvokerInterceptor.REMOTING,                           InvokerInterceptor.INVOKER_LOCATOR,                           locator,                           PayloadKey.AS_IS);      metadata.addMetaData(InvokerInterceptor.REMOTING,                           InvokerInterceptor.SUBSYSTEM,                           "JMS",                           PayloadKey.AS_IS);      h.getMetaData().mergeIn(metadata);      // TODO       ClassLoader loader = getClass().getClassLoader();      Class[] interfaces = new Class[] { ConnectionFactoryDelegate.class };      return Proxy.newProxyInstance(loader, interfaces, h);   }