You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/11/29 18:22:43 UTC
svn commit: r1207979 -
/cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java
Author: dkulp
Date: Tue Nov 29 17:22:42 2011
New Revision: 1207979
URL: http://svn.apache.org/viewvc?rev=1207979&view=rev
Log:
[CXF-3915] Properly keep track of the number of shared users of hte
workqueue
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java?rev=1207979&r1=1207978&r2=1207979&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/workqueue/WorkQueueManagerImpl.java Tue Nov 29 17:22:42 2011
@@ -108,13 +108,21 @@ public class WorkQueueManagerImpl implem
for (AutomaticWorkQueue q : namedQueues.values()) {
if (q instanceof AutomaticWorkQueueImpl) {
AutomaticWorkQueueImpl impl = (AutomaticWorkQueueImpl)q;
- if (impl.isShared() && imanager != null
- && imanager.getMBeanServer() != null) {
+ if (impl.isShared()) {
synchronized (impl) {
impl.removeSharedUser();
+
+ if (impl.getShareCount() == 0
+ && imanager != null
+ && imanager.getMBeanServer() != null) {
+ try {
+ imanager.unregister(new WorkQueueImplMBeanWrapper(impl, this));
+ } catch (JMException jmex) {
+ LOG.log(Level.WARNING , jmex.getMessage(), jmex);
+ }
+ }
}
- }
- if (!impl.isShared()) {
+ } else {
q.shutdown(processRemainingTasks);
}
} else {
@@ -161,15 +169,16 @@ public class WorkQueueManagerImpl implem
AutomaticWorkQueueImpl impl = (AutomaticWorkQueueImpl)q;
if (impl.isShared()) {
synchronized (impl) {
- if (impl.getShareCount() == 0 && imanager != null
+ if (impl.getShareCount() == 0
+ && imanager != null
&& imanager.getMBeanServer() != null) {
try {
imanager.register(new WorkQueueImplMBeanWrapper((AutomaticWorkQueueImpl)q, this));
} catch (JMException jmex) {
LOG.log(Level.WARNING , jmex.getMessage(), jmex);
}
- impl.addSharedUser();
}
+ impl.addSharedUser();
}
} else if (imanager != null) {
try {