Author: drobiazko
Date: Fri May 28 20:10:27 2010
New Revision: 949275
URL: http://svn.apache.org/viewvc?rev=949275&view=rev
Log:
Rename ObjectName of PagePool's ObjectName and use OneShotLock inside
MBeanSupportImpl
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java?rev=949275&r1=949274&r2=949275&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
Fri May 28 20:10:27 2010
@@ -192,7 +192,7 @@ public class InternalModule
updateListenerHub.addUpdateListener(service);
- final ObjectName objectName =
buildObjectName("org.apache.tapestry5:type=PagePool");
+ final ObjectName objectName =
buildObjectName("org.apache.tapestry5:service=PagePool");
managedBeanSupport.register(service, objectName);
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java?rev=949275&r1=949274&r2=949275&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MBeanSupportImpl.java
Fri May 28 20:10:27 2010
@@ -22,10 +22,10 @@ import java.util.Set;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
-import javax.management.ObjectInstance;
import javax.management.ObjectName;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.ioc.internal.util.OneShotLock;
import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
import org.slf4j.Logger;
@@ -34,6 +34,8 @@ public class MBeanSupportImpl implements
private Logger logger;
private MBeanServer server;
+
+ private final OneShotLock lock = new OneShotLock();
private final Set<ObjectName> registeredBeans = CollectionFactory.newSet();
@@ -57,6 +59,8 @@ public class MBeanSupportImpl implements
public void register(final Object object, final ObjectName objectName)
{
+ lock.check();
+
try
{
this.server.registerMBean(object, objectName);
@@ -73,6 +77,8 @@ public class MBeanSupportImpl implements
public void unregister(final ObjectName objectName)
{
+ lock.check();
+
if (this.server.isRegistered(objectName))
{
try
@@ -80,6 +86,9 @@ public class MBeanSupportImpl implements
this.server.unregisterMBean(objectName);
this.logger.info(format("Unegistered MBean '%s' from server",
objectName));
+
+ if(registeredBeans.contains(objectName))
+ registeredBeans.remove(objectName);
}
catch (final Exception e)
{
@@ -90,6 +99,8 @@ public class MBeanSupportImpl implements
public void registryDidShutdown()
{
+ lock.lock();
+
for (final ObjectName name : this.registeredBeans)
{
unregister(name);
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java?rev=949275&r1=949274&r2=949275&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RemotePoolManagement.java
Fri May 28 20:10:27 2010
@@ -25,7 +25,7 @@ public class RemotePoolManagement
{
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
- return server.getAttribute(new
ObjectName("org.apache.tapestry5:type=PagePool"), "SoftWait");
+ return server.getAttribute(new
ObjectName("org.apache.tapestry5:service=PagePool"), "SoftWait");
}
}