// className is for example com.app.Provider.class private ResourceHandler getResourceHandler(String className){ ResourceHandler resourceHandler = null; try { log.debug("The is getResourceHandler. className [" + className + "]"); Class[] types = new Class[] {com.app.User.class}; //get the constructor object to create class from //ClassLoader loader = this.getClass().getClassLoader(); //Class class2 = Class.forName(className, false, loader); //Class class2 = Class.forName(className); //Class class2 = getClass().getClassLoader().loadClass(className); Class class2 = Thread.currentThread().getContextClassLoader().loadClass(className); Constructor cons = class2.getConstructor(types); Object[] args = new Object[]{this}; // create the connection instance resourceHandler = (ResourceHandler)cons.newInstance(args); log.debug("Successfully loaded the Resource Handler implementation [" + className + "]"); return resourceHandler; }catch(ClassNotFoundException cnfe){ log.debug(cnfe.getMessage(), cnfe); }catch (Exception ex) { log.debug("Failed to load the Resource Handler implementation [" + className + "]", ex); } return resourceHandler; }