You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2008/12/15 19:40:48 UTC
svn commit: r726763 -
/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/JmxMBeanAgent.java
Author: schor
Date: Mon Dec 15 10:40:47 2008
New Revision: 726763
URL: http://svn.apache.org/viewvc?rev=726763&view=rev
Log:
[UIMA-1247] add synch for mbean registration
Modified:
incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/JmxMBeanAgent.java
Modified: incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/JmxMBeanAgent.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/JmxMBeanAgent.java?rev=726763&r1=726762&r2=726763&view=diff
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/JmxMBeanAgent.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/JmxMBeanAgent.java Mon Dec 15 10:40:47 2008
@@ -57,7 +57,7 @@
return;
}
}
-
+
try {
// Now register the MBean. But, check for name collisions first. It is possible
// that we are trying to register the same MBean twice (this happens for pools of AEs that
@@ -65,9 +65,12 @@
// MBean the first time and just skip the registration each subsequent time.
Object mbeanName = objectNameConstructor.newInstance(new Object[] { aMBean
.getUniqueMBeanName() });
- if (!(((Boolean) isRegistered.invoke(aMBeanServer, new Object[] { mbeanName }))
- .booleanValue())) {
- registerMBean.invoke(aMBeanServer, new Object[] { aMBean, mbeanName });
+ // synchronize to prevent multiple threads from initializing same thing UIMA-1247
+ synchronized (aMBeanServer) {
+ if (!(((Boolean) isRegistered.invoke(aMBeanServer, new Object[] { mbeanName }))
+ .booleanValue())) {
+ registerMBean.invoke(aMBeanServer, new Object[] { aMBean, mbeanName });
+ }
}
} catch (Exception e) {
// don't fail catastrophically if we can't register with JMX. Just log a warning and continue.