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