EjbManagerWrapper.java

00001 
00025 package org.objectweb.jonas_ejb.deployment.lib.wrapper;
00026 
00027 import java.lang.reflect.InvocationTargetException;
00028 import java.lang.reflect.Method;
00029 import java.net.URL;
00030 import java.net.URLClassLoader;
00031 
00032 import org.objectweb.jonas_ejb.deployment.api.DeploymentDesc;
00033 
00034 import org.objectweb.jonas_lib.deployment.api.DeploymentDescException;
00035 
00036 import org.objectweb.jonas.common.Log;
00037 import org.objectweb.jonas.server.LoaderManager;
00038 
00039 import org.objectweb.util.monolog.api.BasicLevel;
00040 import org.objectweb.util.monolog.api.Logger;
00041 
00042 
00048 public class EjbManagerWrapper {
00049 
00053     private static final String EJB_MANAGER_CLASSNAME = "org.objectweb.jonas_ejb.deployment.lib.EjbDeploymentDescManager";
00054 
00058     private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX);
00059 
00063     private EjbManagerWrapper() { }
00064 
00076     public static DeploymentDesc getDeploymentDesc(URL url, ClassLoader moduleCL, ClassLoader earCL)
00077     throws DeploymentDescException {
00078         LoaderManager lm = LoaderManager.getInstance();
00079         DeploymentDesc dd = null;
00080 
00081         try {
00082             ClassLoader tools = lm.getToolsLoader();
00083             Class manager = tools.loadClass(EJB_MANAGER_CLASSNAME);
00084             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00085             Object instance = m.invoke(null, new Object[] {});
00086             m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {URL.class, ClassLoader.class, ClassLoader.class});
00087             dd = (DeploymentDesc) m.invoke(instance, new Object[] {url, moduleCL, earCL});
00088         } catch (InvocationTargetException ite) {
00089             Throwable t = ite.getTargetException();
00090             if (DeploymentDescException.class.isInstance(t)) {
00091                 throw (DeploymentDescException) ite.getTargetException();
00092             } else {
00093                 throw new DeploymentDescException("EjbDeploymentDescManager.getDeploymentDesc fails", t);
00094             }
00095         } catch (Exception e) {
00096             // TODO add i18n here
00097             throw new DeploymentDescException("Problems when using reflection on EjbDeploymentDescManager", e);
00098         }
00099 
00100         return dd;
00101     }
00102 
00110     public static void setAvailableEjbJarsAndAltDDs(URLClassLoader earClassLoader, URL[] jarUrls, URL[] ejbsAltDDs) {
00111         LoaderManager lm = LoaderManager.getInstance();
00112         try {
00113             ClassLoader tools = lm.getToolsLoader();
00114             Class manager = tools.loadClass(EJB_MANAGER_CLASSNAME);
00115             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00116             Object instance = m.invoke(null, new Object[] {});
00117             m = manager.getDeclaredMethod("setAvailableEjbJarsAndAltDDs", new Class[] {ClassLoader.class, URL[].class, URL[].class});
00118             m.invoke(instance, new Object[] {earClassLoader, jarUrls, ejbsAltDDs});
00119         } catch (Exception e) {
00120             // Should never occurs
00121             logger.log(BasicLevel.ERROR, e);
00122         }
00123     }
00124 
00130     public static void setParsingWithValidation(boolean b) {
00131         LoaderManager lm = LoaderManager.getInstance();
00132         try {
00133             ClassLoader tools = lm.getToolsLoader();
00134             Class manager = tools.loadClass(EJB_MANAGER_CLASSNAME);
00135             Method m = manager.getDeclaredMethod("setParsingWithValidation", new Class[] {boolean.class});
00136             m.invoke(null, new Object[] {new Boolean(b)});
00137         } catch (Exception e) {
00138             // Should never occurs
00139             logger.log(BasicLevel.ERROR, e);
00140         }
00141     }
00142 
00148     public static void removeCache(ClassLoader classLoader) {
00149         LoaderManager lm = LoaderManager.getInstance();
00150         try {
00151             ClassLoader tools = lm.getToolsLoader();
00152             Class manager = tools.loadClass(EJB_MANAGER_CLASSNAME);
00153             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00154             Object instance = m.invoke(null, new Object[] {});
00155             m = manager.getDeclaredMethod("removeCache", new Class[] {ClassLoader.class});
00156             m.invoke(instance, new Object[] {classLoader});
00157         } catch (Exception e) {
00158             // Should never occurs
00159             logger.log(BasicLevel.ERROR, e);
00160         }
00161     }
00162 
00163 }

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