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
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 }