/** * Load Listeners the given in parameter with the given classloader * * @param listenerList the list of listeners to load * @param classLoader the classloader to load the listeners with * @return true if all the listeners have been successfully loaded, false otherwise */ public boolean loadListeners(String[] listeners, ClassLoader classLoader) { // Instantiate all the listeners for (String className : listeners) { try { Class listenerClass = Class.forName(className, false, classLoader); EventListener listener = (EventListener) listenerClass.newInstance(); ((SipContext) sipContext).getAnnotationProcessor().processAnnotations(listener); SipServletImpl sipServletImpl = (SipServletImpl) sipContext.findChildrenByClassName(className); if (sipServletImpl != null) { listener = (EventListener) sipServletImpl.allocate(); listenerServlets.put(listener, sipServletImpl); } else { SipServlet servlet = (SipServlet) listenerClass.getAnnotation(SipServlet.class); if (servlet != null) { sipServletImpl = (SipServletImpl) sipContext.findChildrenByName(servlet.name()); if (sipServletImpl != null) { listener = (EventListener) sipServletImpl.allocate(); listenerServlets.put(listener, sipServletImpl); } } } addListenerToBunch(listener); } catch (Exception e) { logger.fatal("Cannot instantiate listener class " + className, e); return false; } } return true; }