You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2005/04/11 18:19:12 UTC
svn commit: r160920 -
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/servlet/CocoonServlet.java
Author: sylvain
Date: Mon Apr 11 09:19:10 2005
New Revision: 160920
URL: http://svn.apache.org/viewcvs?view=rev&rev=160920
Log:
Fix order of dispose and create when reloading Cocoon (there were some exceptions in Quartz and EHCacheStore)
Modified:
cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/servlet/CocoonServlet.java
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/servlet/CocoonServlet.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/servlet/CocoonServlet.java?view=diff&r1=160919&r2=160920
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/servlet/CocoonServlet.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/servlet/CocoonServlet.java Mon Apr 11 09:19:10 2005
@@ -1056,7 +1056,12 @@
}
// Get the cocoon engine instance
- getCocoon(request.getPathInfo(), request.getParameter(Constants.RELOAD_PARAM));
+
+ if (reloadCocoon(request.getPathInfo(), request.getParameter(Constants.RELOAD_PARAM))) {
+ disposeCocoon();
+ initLogger();
+ createCocoon();
+ }
// Check if cocoon was initialized
if (this.cocoon == null) {
@@ -1371,6 +1376,12 @@
*/
private synchronized void createCocoon()
throws ServletException {
+
+ // Recheck that we need to create the cocoon object. It can have been created by
+ // a concurrent invocation to this method.
+ if (this.cocoon != null) {
+ return;
+ }
/* HACK for reducing class loader problems. */
/* example: xalan extensions fail if someone adds xalan jars in tomcat3.2.1/lib */
@@ -1405,7 +1416,6 @@
ContainerUtil.initialize(c);
this.creationTime = System.currentTimeMillis();
- disposeCocoon();
this.cocoon = c;
} catch (Exception e) {
if (getLogger().isErrorEnabled()) {
@@ -1493,7 +1503,7 @@
* Gets the current cocoon object. Reload cocoon if configuration
* changed or we are reloading.
*/
- private void getCocoon(final String pathInfo, final String reloadParam)
+ private boolean reloadCocoon(final String pathInfo, final String reloadParam)
throws ServletException {
if (this.allowReload) {
boolean reload = false;
@@ -1516,11 +1526,10 @@
}
reload = true;
}
-
- if (reload) {
- initLogger();
- createCocoon();
- }
+
+ return reload;
+ } else {
+ return false;
}
}