You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2007/06/21 15:22:09 UTC
svn commit: r549469 - in
/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet:
ReloadingClassloaderManager.java ReloadingSpringFilter.java
Author: reinhard
Date: Thu Jun 21 06:22:09 2007
New Revision: 549469
URL: http://svn.apache.org/viewvc?view=rev&rev=549469
Log:
- formatting
- exception handling
Modified:
cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java
cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java
Modified: cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java?view=diff&rev=549469&r1=549468&r2=549469
==============================================================================
--- cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java (original)
+++ cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingClassloaderManager.java Thu Jun 21 06:22:09 2007
@@ -35,21 +35,21 @@
private static final String FILE_PROTOCOL = "file:";
private static final String WEB_INF_RCL_URLCL_CONF = "/WEB-INF/cocoon/rclwrapper.urlcl.conf";
-
- private static final String WEB_INF_RCLWRAPPER_RCL_CONF = "/WEB-INF/cocoon/rclwrapper.rcl.conf";
-
+
+ private static final String WEB_INF_RCLWRAPPER_RCL_CONF = "/WEB-INF/cocoon/rclwrapper.rcl.conf";
+
private static ReloadingClassLoader reloadingClassloader = null;
private ReloadingClassloaderManager() {
// only allow static usage
}
-
+
public static synchronized ClassLoader getClassLoader(ServletContext context) {
if (ReloadingClassloaderManager.reloadingClassloader == null) {
final ClassLoader urlClassloader = createURLClassLoader(context);
final ReloadingClassLoader classloader = new ReloadingClassLoader(urlClassloader);
- final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
-
+ final FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
+
List lines = null;
try {
lines = IOUtils.readLines(context.getResourceAsStream(WEB_INF_RCLWRAPPER_RCL_CONF));
@@ -76,8 +76,8 @@
ReloadingClassloaderManager.reloadingClassloader = classloader;
}
return ReloadingClassloaderManager.reloadingClassloader;
- }
-
+ }
+
protected static ClassLoader createURLClassLoader(ServletContext context) {
try {
List urlsList = new ArrayList();
@@ -93,5 +93,5 @@
+ WEB_INF_RCL_URLCL_CONF, e);
}
}
-
+
}
Modified: cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java?view=diff&rev=549469&r1=549468&r2=549469
==============================================================================
--- cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java (original)
+++ cocoon/trunk/tools/cocoon-rcl/cocoon-rcl-webapp-wrapper/src/main/java/org/apache/cocoon/tools/rcl/wrapper/servlet/ReloadingSpringFilter.java Thu Jun 21 06:22:09 2007
@@ -33,42 +33,40 @@
/**
* This servlet filter reloads the Spring application context whenever a relevant change in the
- * classpath occurs.
- *
+ * classpath occurs. It uses the Spring reloader, which has to be loaded by the same classloader
+ * as the Spring application context. In order to get access to it without having to pull all
+ * dependencies into the this module, the Java reflection API is used.
+ *
* @version $Id$
*/
public class ReloadingSpringFilter implements Filter {
-
- private final Log log = LogFactory.getLog(ReloadingSpringFilter.class);
-
- private static final String WEB_INF_RCLWRAPPER_PROPERTIES = "/WEB-INF/cocoon/rclwrapper.properties";
+
+ private final Log log = LogFactory.getLog(ReloadingSpringFilter.class);
+
+ private static final String WEB_INF_RCLWRAPPER_PROPERTIES = "/WEB-INF/cocoon/rclwrapper.properties";
private FilterConfig config;
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException,
ServletException {
-
+
if(isReloadingEnabled() && CocoonReloadingListener.isReload()) {
- synchronized (this) {
+ synchronized (this) {
log.info("Performing a reload of the Spring application context.");
// load the spring context loader from the reloading classloader
ClassLoader cl = ReloadingClassloaderManager.getClassLoader(config.getServletContext());
Object reloader = null;
try {
reloader = cl.loadClass("org.apache.cocoon.tools.rcl.springreloader.SpringReloader").newInstance();
- } catch (Exception e) {
- throw new ServletException("Can't create SpringReloader.", e);
- }
- try {
- Method reloadMethod = reloader.getClass().getMethod("reload", new Class[]{ServletContext.class} );
+ Method reloadMethod = reloader.getClass().getMethod("reload", new Class[]{ServletContext.class} );
reloadMethod.invoke(reloader, new Object[]{config.getServletContext()});
- } catch(Exception e) {
- new ServletException("Problems occurred, while invoking the SpringReloader reload method.", e);
+ } catch (Exception e) {
+ throw new ServletException("Can't use SpringReloader.", e);
}
}
}
// continue processing the request
- filterChain.doFilter(req, res);
+ filterChain.doFilter(req, res);
}
public void destroy() {
@@ -77,12 +75,12 @@
public void init(FilterConfig filterConfig) throws ServletException {
this.config = filterConfig;
}
-
+
private boolean isReloadingEnabled() throws IOException {
Properties rclProps = new Properties();
rclProps.load(this.config.getServletContext().getResourceAsStream(WEB_INF_RCLWRAPPER_PROPERTIES));
String reloadingEnabled = rclProps.getProperty("reloading.spring.enabled", "true");
return reloadingEnabled.trim().toLowerCase().equals("true");
}
-
+
}