JServiceFactoryFinder.java

00001 
00027 package org.objectweb.jonas.ws;
00028 
00029 import org.objectweb.jonas.common.JProp;
00030 
00037 public class JServiceFactoryFinder {
00041     private static JProp props = null;
00042 
00046     private static ClassLoader jonasCL =
00047         Thread.currentThread().getContextClassLoader();
00048 
00052     private static final String JONAS_SERVICE_FACTORY =
00053         "jonas.service.ws.factory.class";
00054 
00058     private JServiceFactoryFinder() { }
00059 
00063     private static String factoryClassName = null;
00064 
00072     public static JServiceFactory getJOnASServiceFactory()
00073         throws WSServiceException {
00074         JServiceFactory factory = null;
00075 
00076         if (props == null) {
00077             try {
00078                 props = JProp.getInstance();
00079                 factoryClassName = props.getValue(JONAS_SERVICE_FACTORY);
00080             } catch (Exception e) {
00081                 String err =
00082                     "Error when trying to get jonas property '"
00083                     + JONAS_SERVICE_FACTORY + "'";
00084                 throw new WSServiceException(err, e);
00085             }
00086         }
00087 
00088         if (factoryClassName == null) {
00089             String err =
00090                 "jonas property '" + JONAS_SERVICE_FACTORY + "' must be set!";
00091             throw new WSServiceException(err);
00092         }
00093 
00094         // instanciation
00095         try {
00096             factory =
00097                 (JServiceFactory) jonasCL.loadClass(factoryClassName)
00098                                          .newInstance();
00099         } catch (ClassNotFoundException cnfe) {
00100             String err =
00101                 "ClassNotFound '" + factoryClassName + "' in JOnAS ClassLoader";
00102             throw new WSServiceException(err);
00103         } catch (InstantiationException ie) {
00104             String err =
00105                 "Instantiation error for new '" + factoryClassName + "'";
00106             throw new WSServiceException(err);
00107         } catch (IllegalAccessException ie) {
00108             String err = "Illegal Access for new '" + factoryClassName + "'";
00109             throw new WSServiceException(err);
00110         }
00111 
00112         return factory;
00113 
00114     }
00115 }

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