Author: michiel
Date: 2010-04-13 18:50:39 +0200 (Tue, 13 Apr 2010)
New Revision: 41919
Modified:
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
mmbase/trunk/utils/src/main/java/org/mmbase/util/ThreadPools.java
Log:
introduces SystemEvent.shutdown
Modified:
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
===================================================================
--- mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
2010-04-13 16:28:56 UTC (rev 41918)
+++ mmbase/trunk/utils/src/main/java/org/mmbase/core/event/EventManager.java
2010-04-13 16:50:39 UTC (rev 41919)
@@ -83,6 +83,9 @@
if (se instanceof SystemEvent.MachineName) {
machineName = ((SystemEvent.MachineName) se).getName();
}
+ if (se instanceof SystemEvent.Shutdown) {
+ shutdown();
+ }
if (se instanceof SystemEvent.Collectable) {
receivedSystemEvents.add((SystemEvent.Collectable) se);
}
Modified:
mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
===================================================================
--- mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
2010-04-13 16:28:56 UTC (rev 41918)
+++ mmbase/trunk/utils/src/main/java/org/mmbase/core/event/SystemEvent.java
2010-04-13 16:50:39 UTC (rev 41919)
@@ -50,6 +50,9 @@
}
}
+ public static class Shutdown extends Collectable {
+ }
+
/**
* Notifies the first determination or change in the 'machinename'
*/
Modified: mmbase/trunk/utils/src/main/java/org/mmbase/util/ThreadPools.java
===================================================================
--- mmbase/trunk/utils/src/main/java/org/mmbase/util/ThreadPools.java
2010-04-13 16:28:56 UTC (rev 41918)
+++ mmbase/trunk/utils/src/main/java/org/mmbase/util/ThreadPools.java
2010-04-13 16:50:39 UTC (rev 41919)
@@ -11,6 +11,7 @@
import java.util.*;
import java.lang.ref.WeakReference;
import java.util.concurrent.*;
+import org.mmbase.core.event.*;
import org.mmbase.util.logging.*;
import org.mmbase.util.xml.UtilReader;
import org.mmbase.util.xml.Instantiator;
@@ -153,26 +154,30 @@
static {
scheduler.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
- // after some time the machine name will be known, use it for the
'nameless' threads.
- // Actually, getMachineName is starting to wait too, so I think the
scheduled delay here is
- // a bit silly, but otherwise I in some cases encountered an exception
('cannot be started
- // by this class').
- scheduler.schedule(new Runnable() {
- public void run() {
- String machineName = getMachineName();
- for (WeakReference<Thread> tr : nameLess) {
- Thread t = tr.get();
- if (t != null) {
- String stringBefore = "" + t;
- t.setName(machineName + t.getName());
- log.debug("Fixed name of " + stringBefore + " -> "
+ t);
+
+ EventManager.getInstance().addEventListener(new SystemEventListener() {
+ @Override
+ public void notify(SystemEvent systemEvent) {
+ if (systemEvent instanceof SystemEvent.MachineName) {
+
+ String machineName = ((SystemEvent.MachineName)
systemEvent).getName();
+ for (WeakReference<Thread> tr : nameLess) {
+ Thread t = tr.get();
+ if (t != null) {
+ String stringBefore = "" + t;
+ t.setName(machineName + t.getName());
+ log.debug("Fixed name of " + stringBefore + "
-> " + t);
+ }
}
+ nameLess.clear();
+ } else if (systemEvent instanceof SystemEvent.Shutdown) {
+ ThreadPools.shutdown();
}
- nameLess.clear();
}
- }, 60, TimeUnit.SECONDS);
+ });
}
+
private static final Map<String, ExecutorService> threadPools = new
ConcurrentHashMap<String, ExecutorService>();
static {
threadPools.put("jobs", jobsExecutor);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs