[jboss-cvs] JBossAS SVN: r111045 - projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Mar 28 09:43:10 EDT 2011
Author: jesper.pedersen
Date: 2011-03-28 09:43:10 -0400 (Mon, 28 Mar 2011)
New Revision: 111045
Modified:
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java
projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployment.java
Log:
[JBJCA-536] Create a JMX view of a datasource
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java 2011-03-28 13:11:04 UTC (rev 111044)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployer.java 2011-03-28 13:43:10 UTC (rev 111045)
@@ -35,14 +35,21 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import javax.management.DynamicMBean;
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
import org.jboss.logging.Logger;
import org.jboss.security.SubjectFactory;
import com.github.fungal.api.Kernel;
import com.github.fungal.api.util.Injection;
+import com.github.fungal.api.util.JMX;
import com.github.fungal.spi.deployers.DeployException;
import com.github.fungal.spi.deployers.Deployer;
import com.github.fungal.spi.deployers.Deployment;
@@ -181,10 +188,13 @@
uniqueJdbcLocalId, uniqueJdbcXAId,
dataSources, parent);
+ List<ObjectName> onames = registerManagementView(c.getDataSources(), kernel.getMBeanServer());
+
return new DsXmlDeployment(c.getURL(), c.getDeploymentName(),
c.getCfs(), c.getCfJndiNames(),
c.getRecovery(), getXAResourceRecoveryRegistry(),
c.getDataSources(), getManagementRepository(),
+ onames, kernel.getMBeanServer(),
c.getCl());
}
catch (DeployException de)
@@ -324,4 +334,59 @@
securityDomain, t);
}
}
+
+ /**
+ * Register management view of datasources in JMX
+ * @param mgtDses The management view of the datasources
+ * @param server The MBeanServer instance
+ * @return The ObjectName's generated for these datasources
+ * @exception JMException Thrown in case of an error
+ */
+ private List<ObjectName> registerManagementView(org.jboss.jca.core.api.management.DataSource[] mgtDses,
+ MBeanServer server)
+ throws JMException
+ {
+ if (server == null)
+ throw new IllegalArgumentException("MBeanServer is null");
+
+ List<ObjectName> ons = new ArrayList<ObjectName>();
+
+ if (mgtDses != null)
+ {
+ for (org.jboss.jca.core.api.management.DataSource mgtDs : mgtDses)
+ {
+ String jndiName = mgtDs.getJndiName();
+ if (jndiName.indexOf("/") != -1)
+ jndiName = jndiName.substring(jndiName.lastIndexOf("/") + 1);
+
+ String baseName = server.getDefaultDomain() + ":deployment=" + jndiName;
+
+ if (mgtDs.getPoolConfiguration() != null)
+ {
+ String dsPCName = baseName + ",type=PoolConfigutation";
+
+ DynamicMBean dsPCDMB = JMX.createMBean(mgtDs.getPoolConfiguration(), "Pool configuration");
+ ObjectName dsPCON = new ObjectName(dsPCName);
+
+ server.registerMBean(dsPCDMB, dsPCON);
+
+ ons.add(dsPCON);
+ }
+
+ if (mgtDs.getPool() != null)
+ {
+ String dsPName = baseName + ",type=Pool";
+
+ DynamicMBean dsPDMB = JMX.createMBean(mgtDs.getPool(), "Pool");
+ ObjectName dsPON = new ObjectName(dsPName);
+
+ server.registerMBean(dsPDMB, dsPON);
+
+ ons.add(dsPON);
+ }
+ }
+ }
+
+ return ons;
+ }
}
Modified: projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployment.java
===================================================================
--- projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployment.java 2011-03-28 13:11:04 UTC (rev 111044)
+++ projects/jboss-jca/trunk/deployers/src/main/java/org/jboss/jca/deployers/fungal/DsXmlDeployment.java 2011-03-28 13:43:10 UTC (rev 111045)
@@ -32,7 +32,11 @@
import java.io.Closeable;
import java.io.IOException;
import java.net.URL;
+import java.util.List;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
import org.jboss.logging.Logger;
import com.github.fungal.spi.deployers.Deployment;
@@ -70,6 +74,12 @@
/** The management repository */
private ManagementRepository managementRepository;
+ /** JMX MBean's */
+ private List<ObjectName> objectNames;
+
+ /** The MBean server */
+ private MBeanServer mbeanServer;
+
/** The classloader */
private ClassLoader cl;
@@ -83,6 +93,8 @@
* @param recoveryRegistry The recovery registry
* @param dataSources The management view of the datasources
* @param managementRepository The management repository
+ * @param onames The object names for the JMX MBeans
+ * @param mbeanServer The MBeanServer
* @param cl The classloader
*/
public DsXmlDeployment(URL deployment,
@@ -90,6 +102,7 @@
Object[] cfs, String[] jndis,
XAResourceRecovery[] recoveryModules, XAResourceRecoveryRegistry recoveryRegistry,
DataSource[] dataSources, ManagementRepository managementRepository,
+ List<ObjectName> onames, MBeanServer mbeanServer,
ClassLoader cl)
{
this.deployment = deployment;
@@ -100,6 +113,8 @@
this.recoveryRegistry = recoveryRegistry;
this.dataSources = dataSources;
this.managementRepository = managementRepository;
+ this.objectNames = onames;
+ this.mbeanServer = mbeanServer;
this.cl = cl;
}
@@ -130,6 +145,21 @@
{
log.debug("Undeploying: " + deployment.toExternalForm());
+ if (objectNames != null && mbeanServer != null)
+ {
+ for (ObjectName on : objectNames)
+ {
+ try
+ {
+ mbeanServer.unregisterMBean(on);
+ }
+ catch (Throwable t)
+ {
+ log.warn("Exception during JMX unregistering", t);
+ }
+ }
+ }
+
if (dataSources != null && managementRepository != null)
{
for (DataSource mgtDs : dataSources)
More information about the jboss-cvs-commits
mailing list