modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanComponent.java
| 64 ++++++++++
modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanDiscoveryComponent.java
| 20 ++-
modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/FileConfiguredMBeanResourceComponent.java
| 6
modules/plugins/mod-cluster/src/main/resources/META-INF/rhq-plugin.xml
| 26 ++--
4 files changed, 99 insertions(+), 17 deletions(-)
New commits:
commit a98c893d118b6375bd429986ec177a9be576fbaa
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Sun Aug 28 13:29:12 2011 -0500
BZ733775 - Update the plugin configuration file to have correct descriptions for each
service available. Also added a new class to verify the availability of a className mbean
resource.
diff --git
a/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanComponent.java
b/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanComponent.java
new file mode 100644
index 0000000..fc8b818
--- /dev/null
+++
b/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanComponent.java
@@ -0,0 +1,64 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2009 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.plugins.modcluster;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.mc4j.ems.connection.bean.EmsBean;
+
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.plugins.jmx.JMXComponent;
+import org.rhq.plugins.jmx.MBeanResourceComponent;
+
+/**
+ * @author Stefan Negrea
+ *
+ */
+@SuppressWarnings({ "rawtypes", "deprecation" })
+public class ClassNameMBeanComponent extends MBeanResourceComponent<JMXComponent>
{
+ private static final Log log = LogFactory.getLog(WebappContextComponent.class);
+
+ private static final String CLASS_NAME = "className";
+
+ @Override
+ public AvailabilityType getAvailability() {
+ AvailabilityType beanAvailability = super.getAvailability();
+
+ if (beanAvailability.equals(AvailabilityType.UP)) {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ try {
+
Thread.currentThread().setContextClassLoader(getEmsBean().getClass().getClassLoader());
+
+ String className =
this.resourceContext.getPluginConfiguration().getSimple(CLASS_NAME).getStringValue();
+ EmsBean emsBean = getEmsBean();
+
+ if (className.equals(emsBean.getClassTypeName())) {
+ return AvailabilityType.UP;
+ }
+ } catch (Exception e) {
+ log.info(e);
+ return AvailabilityType.DOWN;
+ } finally {
+ Thread.currentThread().setContextClassLoader(cl);
+ }
+ }
+
+ return AvailabilityType.DOWN;
+ }
+}
diff --git
a/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanDiscoveryComponent.java
b/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanDiscoveryComponent.java
index b854398..686642a 100644
---
a/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanDiscoveryComponent.java
+++
b/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/ClassNameMBeanDiscoveryComponent.java
@@ -20,6 +20,8 @@ package org.rhq.plugins.modcluster;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.mc4j.ems.connection.EmsConnection;
import org.mc4j.ems.connection.bean.EmsBean;
@@ -36,6 +38,8 @@ import org.rhq.plugins.jmx.MBeanResourceDiscoveryComponent;
@SuppressWarnings("rawtypes")
public class ClassNameMBeanDiscoveryComponent<T extends JMXComponent> extends
MBeanResourceDiscoveryComponent<T> {
+ private static final Log log =
LogFactory.getLog(FileConfiguredMBeanResourceComponent.class);
+
private static final String CLASS_NAME = "className";
/* (non-Javadoc)
@@ -62,12 +66,22 @@ public class ClassNameMBeanDiscoveryComponent<T extends
JMXComponent> extends MB
* @return
*/
public boolean isBeanConfiguredClassName(ResourceDiscoveryContext<T> context,
String objectName) {
- String className =
context.getDefaultPluginConfiguration().getSimple(CLASS_NAME).getStringValue();
-
EmsConnection connection =
context.getParentResourceComponent().getEmsConnection();
EmsBean emsBean = loadBean(connection, objectName);
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+
+ try {
+
Thread.currentThread().setContextClassLoader(emsBean.getClass().getClassLoader());
- return className.equals(emsBean.getClassTypeName());
+ String className =
context.getDefaultPluginConfiguration().getSimple(CLASS_NAME).getStringValue();
+
+ return className.equals(emsBean.getClassTypeName());
+ } catch (Exception e) {
+ log.info(e);
+ return false;
+ } finally {
+ Thread.currentThread().setContextClassLoader(cl);
+ }
}
/**
diff --git
a/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/FileConfiguredMBeanResourceComponent.java
b/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/FileConfiguredMBeanResourceComponent.java
index cc7ea37..046b1fb 100644
---
a/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/FileConfiguredMBeanResourceComponent.java
+++
b/modules/plugins/mod-cluster/src/main/java/org/rhq/plugins/modcluster/FileConfiguredMBeanResourceComponent.java
@@ -30,16 +30,14 @@ import
org.rhq.core.domain.configuration.definition.PropertyDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
import org.rhq.core.util.exception.ThrowableUtil;
-import org.rhq.plugins.jmx.JMXComponent;
-import org.rhq.plugins.jmx.MBeanResourceComponent;
import org.rhq.plugins.modcluster.config.ModClusterBeanFile;
/**
* @author Stefan Negrea
*
*/
-@SuppressWarnings({ "deprecation", "rawtypes" })
-public class FileConfiguredMBeanResourceComponent extends
MBeanResourceComponent<JMXComponent> {
+@SuppressWarnings({ "deprecation" })
+public class FileConfiguredMBeanResourceComponent extends ClassNameMBeanComponent {
private static final Log log =
LogFactory.getLog(FileConfiguredMBeanResourceComponent.class);
diff --git a/modules/plugins/mod-cluster/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/mod-cluster/src/main/resources/META-INF/rhq-plugin.xml
index dafb18f..b0ad1f2 100644
--- a/modules/plugins/mod-cluster/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/mod-cluster/src/main/resources/META-INF/rhq-plugin.xml
@@ -29,7 +29,7 @@
<service name="HA Service"
discovery="ClassNameMBeanDiscoveryComponent"
class="ModClusterServiceComponent"
supportsManualAdd="true"
- description="HA Service Listener" singleton="true">
+ description="HA Service" singleton="true">
<plugin-configuration>
<c:simple-property name="objectName" readOnly="true"
default="jboss.web:service=ModCluster" />
@@ -150,7 +150,8 @@
</resource-configuration>
</service>
- <service name="HA Service Configuration"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
description="HA Service Configuration" singleton="true">
+ <service name="HA Service Configuration"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
+ description="HA Service Configuration"
singleton="true">
<plugin-configuration>
<c:simple-property name="objectName" readOnly="true"
default="jboss.web:service=ModCluster" />
@@ -199,11 +200,12 @@
<!-- End - Configuration for HAModClusterService -->
<!-- Start - Configuration for ModClusterService -->
- <service name="Service"
discovery="ClassNameMBeanDiscoveryComponent"
class="ModClusterServiceComponent" supportsManualAdd="true"
description="HA Service Listener" singleton="true">
+ <service name="Service"
discovery="ClassNameMBeanDiscoveryComponent"
class="ModClusterServiceComponent" supportsManualAdd="true"
+ description="Service" singleton="true">
<plugin-configuration>
<c:simple-property name="objectName" readOnly="true"
default="jboss.web:service=ModCluster" />
- <c:simple-property name="nameTemplate" default="HA
Service" />
+ <c:simple-property name="nameTemplate"
default="Service" />
<c:simple-property name="className" readOnly="true"
default="org.jboss.modcluster.ModClusterService" />
<c:simple-property name="proxyInfoProperty"
readOnly="true" default="ProxyInfo" />
</plugin-configuration>
@@ -280,11 +282,12 @@
<metric property="ProxyInfo" displayName="Proxy Info"
displayType="summary" dataType="trait" />
</service>
- <service name="Service Configuration"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
description="HA Service Configuration" singleton="true">
+ <service name="Service Configuration"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
+ description="Service Configuration" singleton="true">
<plugin-configuration>
<c:simple-property name="objectName" readOnly="true"
default="jboss.web:service=ModCluster" />
- <c:simple-property name="nameTemplate" default="HA Service
Configuration" />
+ <c:simple-property name="nameTemplate" default="Service
Configuration" />
<c:simple-property name="className" readOnly="true"
default="org.jboss.modcluster.ModClusterService" />
<c:simple-property name="dependencyClassName"
readOnly="true" default="org.jboss.modcluster.config.ModClusterConfig"
/>
<c:simple-property name="proxyInfoProperty"
readOnly="true" default="ProxyInfo" />
@@ -325,11 +328,12 @@
</service>
<!-- End - Configuration for ModClusterService -->
- <service name="Catalina Service"
discovery="org.rhq.plugins.jmx.MBeanResourceDiscoveryComponent"
class="CatalinaServiceComponent" supportsManualAdd="true"
description="Catalina Service Listener" singleton="true">
+ <service name="Catalina Service"
discovery="org.rhq.plugins.jmx.MBeanResourceDiscoveryComponent"
class="CatalinaServiceComponent" supportsManualAdd="true"
+ description="Catalina Service" singleton="true">
<plugin-configuration>
<c:simple-property name="objectName" readOnly="true"
default="Catalina:type=ModClusterListener,*" />
- <c:simple-property name="nameTemplate" default="mod_cluster
Catalina Listener" />
+ <c:simple-property name="nameTemplate" default="Catalina
Service" />
</plugin-configuration>
<operation name="addProxy" displayName="Add a proxy"
description="Add a proxy.">
@@ -397,7 +401,8 @@
</resource-configuration>
</service>
- <service name="Dynamic Load Balancer Factor"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
description="Dynamic Load balancer factor for mod_cluster"
singleton="true">
+ <service name="Dynamic Load Balancer Factor"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
+ description="Dynamic Load balancer factor for mod_cluster"
singleton="true">
<plugin-configuration>
<c:simple-property name="objectName" readOnly="true"
default="jboss.web:provider=LoadBalanceFactor,service=ModCluster,*" />
@@ -411,7 +416,8 @@
</resource-configuration>
</service>
- <service name="Simple Load Balancer Factor"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
description="Simple load balancer factor for mod_cluster"
singleton="true">
+ <service name="Simple Load Balancer Factor"
discovery="ClassNameMBeanDiscoveryComponent"
class="FileConfiguredMBeanResourceComponent" supportsManualAdd="true"
+ description="Simple load balancer factor for mod_cluster"
singleton="true">
<plugin-configuration>
<c:simple-property name="objectName" readOnly="true"
default="jboss.web:provider=LoadBalanceFactor,service=ModCluster,*" />
Show replies by date