ClientManagerWrapper.java

00001 
00027 package org.objectweb.jonas_client.deployment.lib.wrapper;
00028 
00029 import java.lang.reflect.InvocationTargetException;
00030 import java.lang.reflect.Method;
00031 import java.net.URL;
00032 import java.net.URLClassLoader;
00033 
00034 import org.objectweb.jonas_client.deployment.api.ClientContainerDeploymentDesc;
00035 import org.objectweb.jonas_client.deployment.api.ClientContainerDeploymentDescException;
00036 
00037 import org.objectweb.jonas.common.Log;
00038 import org.objectweb.jonas.server.LoaderManager;
00039 
00040 import org.objectweb.util.monolog.api.BasicLevel;
00041 import org.objectweb.util.monolog.api.Logger;
00042 
00049 public class ClientManagerWrapper {
00050 
00054     private static Logger logger = Log.getLogger(Log.JONAS_CLIENT_PREFIX);
00055 
00059     private ClientManagerWrapper() { }
00060 
00072     public static ClientContainerDeploymentDesc getDeploymentDesc(URL url, ClassLoader moduleCL, ClassLoader earCL)
00073             throws ClientContainerDeploymentDescException {
00074         LoaderManager lm = LoaderManager.getInstance();
00075         ClientContainerDeploymentDesc ccDD = null;
00076 
00077         try {
00078             ClassLoader tools = lm.getToolsLoader();
00079             Class manager = tools.loadClass("org.objectweb.jonas_client.deployment.lib.ClientDeploymentDescManager");
00080             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00081             Object instance = m.invoke(null, new Object[] {});
00082             m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {URL.class, ClassLoader.class,
00083                     ClassLoader.class});
00084             ccDD = (ClientContainerDeploymentDesc) m.invoke(instance, new Object[] {url, moduleCL, earCL});
00085         } catch (InvocationTargetException ite) {
00086             Throwable t = ite.getTargetException();
00087             if (ClientContainerDeploymentDescException.class.isInstance(t)) {
00088                 throw (ClientContainerDeploymentDescException) ite.getTargetException();
00089             } else {
00090                 throw new ClientContainerDeploymentDescException("ClientDeploymentDescManager.getDeploymentDesc fails", t);
00091             }
00092         } catch (Exception e) {
00093             e.printStackTrace();
00094             // TODO add i18n here
00095             throw new ClientContainerDeploymentDescException("Problems when using reflection on ClientDeploymentDescManager", e);
00096         }
00097 
00098         return ccDD;
00099     }
00100 
00108     public static void setAltDD(URLClassLoader earClassLoader, URL[] clientUrls, URL[] clientsAltDDs) {
00109         LoaderManager lm = LoaderManager.getInstance();
00110         try {
00111             ClassLoader tools = lm.getToolsLoader();
00112             Class manager = tools.loadClass("org.objectweb.jonas_client.deployment.lib.ClientDeploymentDescManager");
00113             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00114             Object instance = m.invoke(null, new Object[] {});
00115             m = manager.getDeclaredMethod("setAltDD", new Class[] {ClassLoader.class, URL[].class, URL[].class});
00116             m.invoke(instance, new Object[] {earClassLoader, clientUrls, clientsAltDDs});
00117         } catch (Exception e) {
00118             // Should never occurs
00119             logger.log(BasicLevel.ERROR, e);
00120         }
00121     }
00122 
00123 }

Generated on Tue Feb 15 15:05:36 2005 for JOnAS by  doxygen 1.3.9.1