package org.jboss.management.j2ee;
import org.jboss.logging.Logger;
import org.jboss.management.j2ee.statistics.JMSStatsImpl;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.j2ee.statistics.Stats;
import java.util.Iterator;
import java.util.Map;
public class JMSResource
extends J2EEResource
implements JMSResourceMBean
{
private static Logger log = Logger.getLogger(JMSResource.class);
private ObjectName jmsServiceName;
private JMSStatsImpl stats;
public static ObjectName create(MBeanServer mbeanServer, String resName,
ObjectName jmsServiceName)
{
ObjectName j2eeServerName = J2EEDomain.getDomainServerName(mbeanServer);
ObjectName jsr77Name = null;
try
{
JMSResource jmsRes = new JMSResource(resName, j2eeServerName, jmsServiceName);
jsr77Name = jmsRes.getObjectName();
mbeanServer.registerMBean(jmsRes, jsr77Name);
log.debug("Created JSR-77 JMSResource: " + resName);
}
catch (Exception e)
{
log.debug("Could not create JSR-77 JMSResource: " + resName, e);
}
return jsr77Name;
}
public static void destroy(MBeanServer pServer, String pName)
{
try
{
J2EEManagedObject.removeObject(pServer,
J2EEDomain.getDomainName() + ":" +
J2EEManagedObject.TYPE + "=" + J2EETypeConstants.JMSResource + "," +
"name=" + pName + "," +
"*");
}
catch (Exception e)
{
log.error("Could not destroy JSR-77 JMSResource Resource", e);
}
}
public JMSResource(String resName, ObjectName j2eeServerName,
ObjectName jmsServiceName)
throws MalformedObjectNameException,
InvalidParentException
{
super(J2EETypeConstants.JMSResource, resName, j2eeServerName);
this.jmsServiceName = jmsServiceName;
stats = new JMSStatsImpl(null);
}
public Stats getstats()
{
try
{
Map clients = (Map) server.getAttribute(jmsServiceName, "Clients");
Iterator iter = clients.keySet().iterator();
}
catch (Exception e)
{
log.debug("Failed to obtain stats", e);
}
return stats;
}
public void resetStats()
{
stats.reset();
}
public String toString()
{
return "JMSResource { " + super.toString() + " } [ " +
" ]";
}
}