You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2010/04/08 20:56:17 UTC
svn commit: r932063 - in /portals/jetspeed-2/portal/trunk:
components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/
components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/
components/jetspeed-page-manager/src/main/java/org/ap...
Author: rwatler
Date: Thu Apr 8 18:56:16 2010
New Revision: 932063
URL: http://svn.apache.org/viewvc?rev=932063&view=rev
Log:
JS2-1183: shutdown PageManagerNodeReapingThread during Spring bean lifecycle
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring.xml
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/PageManagerTestShared.java
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/database-page-manager.xml
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-database-page-manager.xml
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-permissions-database-page-manager.xml
portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/page-manager.xml
portals/jetspeed-2/portal/trunk/etc/import/assembly/import-page-manager.xml
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/importer-page-manager.xml
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/page-manager.xml
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring.xml (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/test/java/JETSPEED-INF/spring/test-spring.xml Thu Apr 8 18:56:16 2010
@@ -155,7 +155,7 @@ limitations under the License.
<!-- PageManager -->
<bean id="org.apache.jetspeed.page.PageManager"
name="pageManager"
- class="org.apache.jetspeed.page.psml.CastorXmlPageManager">
+ class="org.apache.jetspeed.page.psml.CastorXmlPageManager" init-method="init" destroy-method="destroy">
<constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
<constructor-arg index="1"><ref bean="DocumentHandlerFactory"/></constructor-arg>
<constructor-arg index="2"><ref bean="FolderHandler"/></constructor-arg>
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java Thu Apr 8 18:56:16 2010
@@ -115,39 +115,73 @@ public abstract class AbstractPageManage
private List listeners = new LinkedList();
private long nodeReapingInterval = DEFAULT_NODE_REAPING_INTERVAL;
+
+ private volatile Thread nodeReapingThread;
public AbstractPageManager(IdGenerator generator, boolean permissionsEnabled, boolean constraintsEnabled)
{
this.generator = generator;
this.permissionsEnabled = permissionsEnabled;
this.constraintsEnabled = constraintsEnabled;
+ }
+
+ /**
+ * Initialize PageManager component.
+ */
+ public void init()
+ {
// start node reaping deamon thread
- if (this.nodeReapingInterval > 0)
+ if ((nodeReapingInterval > 0) && (nodeReapingThread == null))
{
- Thread nodeReapingThread = new Thread(new Runnable()
+ nodeReapingThread = new Thread(new Runnable()
{
public void run()
{
- while (true)
+ // run while running and reaping thread match
+ Thread runningThread = Thread.currentThread();
+ synchronized (runningThread)
{
- try
- {
- // wait for reap interval and invoke reaping
- // notification on page manager event listeners
- Thread.sleep(nodeReapingInterval);
- notifyReapNodes();
- }
- catch (InterruptedException ie)
+ while (nodeReapingThread == runningThread)
{
+ try
+ {
+ // wait for reap interval or interrupt and invoke
+ // reaping notification on page manager event listeners
+ runningThread.wait(nodeReapingInterval);
+ if (nodeReapingThread == runningThread)
+ {
+ notifyReapNodes();
+ }
+ }
+ catch (InterruptedException ie)
+ {
+ }
}
- }
- }
+ }
+ }
}, "PageManagerNodeReapingThread");
nodeReapingThread.setDaemon(true);
nodeReapingThread.start();
}
}
+ /**
+ * Destroy PageManager component.
+ */
+ public void destroy()
+ {
+ // stop node reaping deamon thread
+ Thread destroyReapingThread = nodeReapingThread;
+ if (destroyReapingThread != null)
+ {
+ nodeReapingThread = null;
+ synchronized (destroyReapingThread)
+ {
+ destroyReapingThread.notifyAll();
+ }
+ }
+ }
+
public AbstractPageManager(IdGenerator generator, boolean permissionsEnabled, boolean constraintsEnabled, Map modelClasses)
{
this(generator, permissionsEnabled, constraintsEnabled);
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java Thu Apr 8 18:56:16 2010
@@ -181,6 +181,26 @@ public class DatabasePageManager extends
}
/**
+ * Initialize PageManager component.
+ */
+ public void init() throws Exception
+ {
+ // initialize persistence broker support
+ super.init();
+ // initialize PageManager delegate
+ delegator.init();
+ }
+
+ /**
+ * Destroy PageManager component.
+ */
+ public void destroy()
+ {
+ // destroy PageManager delegate
+ delegator.destroy();
+ }
+
+ /**
* getPageManagerProxy
*
* @return proxied page manager interface used to
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/PageManagerTestShared.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/PageManagerTestShared.java?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/PageManagerTestShared.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/PageManagerTestShared.java Thu Apr 8 18:56:16 2010
@@ -163,7 +163,9 @@ public interface PageManagerTestShared
handlerFactory.registerDocumentHandler(pageSecurityHandler);
FolderHandler folderHandler = new FileSystemFolderHandler(idGen, baseDir+"target/testdata/" + pagesDirName, handlerFactory, cache);
- return new CastorXmlPageManager(idGen, handlerFactory, folderHandler, cache, permissionsEnabled, constraintsEnabled);
+ CastorXmlPageManager pageManager = new CastorXmlPageManager(idGen, handlerFactory, folderHandler, cache, permissionsEnabled, constraintsEnabled);
+ pageManager.init();
+ return pageManager;
}
/**
@@ -177,6 +179,8 @@ public interface PageManagerTestShared
pageManager.reset();
// shutdown page manager and handlers
pageManager.shutdown();
+ // destroy page manager
+ pageManager.destroy();
}
/**
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/database-page-manager.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/database-page-manager.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/database-page-manager.xml (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/database-page-manager.xml Thu Apr 8 18:56:16 2010
@@ -22,7 +22,7 @@ limitations under the License.
<import resource="database-page-manager-base.xml"/>
<!-- Page Manager -->
- <bean id="pageManagerImpl" init-method="init" class="org.apache.jetspeed.page.impl.DatabasePageManager">
+ <bean id="pageManagerImpl" class="org.apache.jetspeed.page.impl.DatabasePageManager" init-method="init" destroy-method="destroy">
<!-- OJB configuration file resource path -->
<constructor-arg index="0"><value>JETSPEED-INF/ojb/page-manager-repository.xml</value></constructor-arg>
<!-- fragment id generator -->
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-database-page-manager.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-database-page-manager.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-database-page-manager.xml (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-database-page-manager.xml Thu Apr 8 18:56:16 2010
@@ -22,7 +22,7 @@ limitations under the License.
<import resource="database-page-manager-base.xml"/>
<!-- Page Manager -->
- <bean id="pageManagerImpl" init-method="init" class="org.apache.jetspeed.page.impl.DatabasePageManager">
+ <bean id="pageManagerImpl" class="org.apache.jetspeed.page.impl.DatabasePageManager" init-method="init" destroy-method="destroy">
<!-- OJB configuration file resource path -->
<constructor-arg index="0"><value>JETSPEED-INF/ojb/page-manager-repository.xml</value></constructor-arg>
<!-- fragment id generator -->
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-permissions-database-page-manager.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-permissions-database-page-manager.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-permissions-database-page-manager.xml (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/resources/secure-permissions-database-page-manager.xml Thu Apr 8 18:56:16 2010
@@ -22,7 +22,7 @@ limitations under the License.
<import resource="database-page-manager-base.xml"/>
<!-- Page Manager -->
- <bean name="pageManagerImpl" init-method="init" class="org.apache.jetspeed.page.impl.DatabasePageManager">
+ <bean name="pageManagerImpl" class="org.apache.jetspeed.page.impl.DatabasePageManager" init-method="init" destroy-method="destroy">
<!-- OJB configuration file resource path -->
<constructor-arg index="0"><value>JETSPEED-INF/ojb/page-manager-repository.xml</value></constructor-arg>
<!-- fragment id generator -->
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal-site/src/test/java/JETSPEED-INF/spring/test-spring.xml Thu Apr 8 18:56:16 2010
@@ -155,7 +155,7 @@ limitations under the License.
<!-- PageManager -->
<bean id="org.apache.jetspeed.page.PageManager"
name="pageManager"
- class="org.apache.jetspeed.page.psml.CastorXmlPageManager">
+ class="org.apache.jetspeed.page.psml.CastorXmlPageManager" init-method="init" destroy-method="destroy">
<constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
<constructor-arg index="1"><ref bean="DocumentHandlerFactory"/></constructor-arg>
<constructor-arg index="2"><ref bean="FolderHandler"/></constructor-arg>
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/page-manager.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/page-manager.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/page-manager.xml (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/assembly/page-manager.xml Thu Apr 8 18:56:16 2010
@@ -129,7 +129,7 @@ limitations under the License.
<bean id="org.apache.jetspeed.page.PageManager"
name="pageManager"
- class="org.apache.jetspeed.page.psml.CastorXmlPageManager">
+ class="org.apache.jetspeed.page.psml.CastorXmlPageManager" init-method="init" destroy-method="destroy">
<constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
<constructor-arg index="1"><ref bean="DocumentHandlerFactory"/></constructor-arg>
<constructor-arg index="2"><ref bean="FolderHandler"/></constructor-arg>
Modified: portals/jetspeed-2/portal/trunk/etc/import/assembly/import-page-manager.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/etc/import/assembly/import-page-manager.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/etc/import/assembly/import-page-manager.xml (original)
+++ portals/jetspeed-2/portal/trunk/etc/import/assembly/import-page-manager.xml Thu Apr 8 18:56:16 2010
@@ -21,8 +21,7 @@ limitations under the License.
<bean id="org.apache.jetspeed.page.PageManagerImpl"
name="pageManagerImpl"
- init-method="init"
- class="org.apache.jetspeed.page.impl.DatabasePageManager">
+ class="org.apache.jetspeed.page.impl.DatabasePageManager" init-method="init" destroy-method="destroy">
<!-- OJB configuration file resource path -->
<constructor-arg index="0"><value>JETSPEED-INF/ojb/page-manager-repository.xml</value></constructor-arg>
<!-- fragment id generator -->
@@ -193,7 +192,7 @@ limitations under the License.
<bean id="org.apache.jetspeed.page.CastorPageManager"
name="castorPageManager"
- class="org.apache.jetspeed.page.psml.CastorXmlPageManager">
+ class="org.apache.jetspeed.page.psml.CastorXmlPageManager" init-method="init" destroy-method="destroy">
<constructor-arg index="0"><ref bean="IdGenerator"/></constructor-arg>
<constructor-arg index="1"><ref bean="DocumentHandlerFactory"/></constructor-arg>
<constructor-arg index="2"><ref bean="FolderHandler"/></constructor-arg>
Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/importer-page-manager.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/importer-page-manager.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/importer-page-manager.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/importer-page-manager.xml Thu Apr 8 18:56:16 2010
@@ -221,7 +221,7 @@
</bean>
<bean id="org.apache.jetspeed.page.CastorPageManager" name="importerCastorPageManager"
- class="org.apache.jetspeed.page.psml.CastorXmlPageManager">
+ class="org.apache.jetspeed.page.psml.CastorXmlPageManager" init-method="init" destroy-method="destroy">
<meta key="j2:cat" value="default" />
<constructor-arg index="0">
<ref bean="ImportIdGenerator" />
Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/page-manager.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/page-manager.xml?rev=932063&r1=932062&r2=932063&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/page-manager.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/page-manager.xml Thu Apr 8 18:56:16 2010
@@ -198,7 +198,7 @@
</constructor-arg>
</bean>
- <bean name="xmlPageManager" class="org.apache.jetspeed.page.psml.CastorXmlPageManager">
+ <bean name="xmlPageManager" class="org.apache.jetspeed.page.psml.CastorXmlPageManager" init-method="init" destroy-method="destroy">
<meta key="j2:cat" value="xmlPageManager or pageSerializer" />
<constructor-arg index="0">
<ref bean="IdGenerator" />
@@ -226,7 +226,7 @@
<!-- Database PageManager -->
- <bean id="dbPageManagerImpl" class="org.apache.jetspeed.page.impl.DatabasePageManager" init-method="init">
+ <bean id="dbPageManagerImpl" class="org.apache.jetspeed.page.impl.DatabasePageManager" init-method="init" destroy-method="destroy">
<meta key="j2:cat" value="dbPageManager or pageSerializer" />
<!-- OJB configuration file resource path -->
<constructor-arg index="0">
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org