User: schaefera Date: 01/06/04 15:55:15 Modified: src/main/org/jboss/mgt Application.java EJB.java ServerDataCollector.java ServerDataCollectorMBean.java Log: Adjusted the Server Data Collector to work with the Container-MBeans to get its management information. Revision Changes Path 1.3 +11 -0 jboss/src/main/org/jboss/mgt/Application.java Index: Application.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/mgt/Application.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Application.java 2001/05/22 05:08:00 1.2 +++ Application.java 2001/06/04 22:55:15 1.3 @@ -88,6 +88,17 @@ } /** + * Returns the requested module if found + * + * @param pModuleId Id of the Module to be saved. Please use the + * constants provided in here. + * @return Module if found and otherwise null + **/ + public Module getModule( int pModuleId ) { + return (Module) mModules.get( new Integer( pModuleId ) ); + } + + /** * @return Collection of Modules deployed with this application. Each * item is of type {@link org.jboss.mgt.Module Module}. **/ 1.4 +9 -17 jboss/src/main/org/jboss/mgt/EJB.java Index: EJB.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/mgt/EJB.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- EJB.java 2001/05/22 05:08:00 1.3 +++ EJB.java 2001/06/04 22:55:15 1.4 @@ -18,11 +18,9 @@ // Constants // ------------------------------------------------------------------------- - public static final int STATELESS_SESSION = 1; - public static final int STATEFUL_SESSION = 2; - public static final int ENTITY_BMP = 3; - public static final int ENTITY_CMP = 4; - public static final int MESSAGE = 5; + public static final int SESSION = 1; + public static final int ENTITY = 2; + public static final int MESSAGE_DRIVEN = 3; // ------------------------------------------------------------------------- // Members @@ -95,20 +93,14 @@ public String toString() { String lType = null; switch( getType() ) { - case STATELESS_SESSION: - lType = "Stateless Session"; + case SESSION: + lType = "Session"; break; - case STATEFUL_SESSION: - lType = "Statefull Session"; + case ENTITY: + lType = "Entity"; break; - case ENTITY_BMP: - lType = "Entity BMP"; - break; - case ENTITY_CMP: - lType = "Entity CMP"; - break; - case MESSAGE: - lType = "Message"; + case MESSAGE_DRIVEN: + lType = "MessageDriven"; } return "EJB [ " + getName() + 1.3 +103 -1 jboss/src/main/org/jboss/mgt/ServerDataCollector.java Index: ServerDataCollector.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/mgt/ServerDataCollector.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ServerDataCollector.java 2001/05/22 05:08:00 1.2 +++ ServerDataCollector.java 2001/06/04 22:55:15 1.3 @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; +import java.util.Iterator; import java.util.Map; import javax.management.MalformedObjectNameException; @@ -22,6 +23,7 @@ import javax.naming.Reference; import javax.naming.StringRefAddr; +import org.jboss.ejb.Container; import org.jboss.logging.Log; import org.jboss.naming.NonSerializableFactory; import org.jboss.util.ServiceMBeanSupport; @@ -50,6 +52,9 @@ private MBeanServer mServer; private String mName; private Map mApplications = new Hashtable(); + private Boolean mRefresh = new Boolean( true ); + private Thread mWorker; + private int mRefreshSleep = 2000; // ------------------------------------------------------------------------- // Constructors @@ -79,6 +84,23 @@ // Methods // ------------------------------------------------------------------------- + public int getRefreshSleep() { + return mRefreshSleep; + } + + public void setRefreshSleep( int pSleep ) { + if( pSleep > 0 ) { + mRefreshSleep = pSleep; + } + } + + public void refresh() { + // Mark it to be refreshed + synchronized( mRefresh ) { + mRefresh = new Boolean( true ); + } + } + public ObjectName getObjectName( MBeanServer server, ObjectName name @@ -175,10 +197,12 @@ throws Exception { bind( this ); -// refresh(); + mWorker = new RefreshWorker( log ); + mWorker.start(); } protected void stopService() { + mWorker.stop(); try { unbind(); } @@ -236,5 +260,83 @@ NonSerializableFactory.unbind( lJNDIName ); log.log("JBoss Management service '" + lJNDIName + "' removed from JNDI" ); } + + /** + * Worker class to perform the refresh of the data + **/ + private class RefreshWorker + extends Thread + { + private Log mLog; + + public RefreshWorker( Log pLog ) { + mLog = pLog; + } + + public void run() { + while( true ) { + try { + synchronized( mRefresh ) { + if( mRefresh.booleanValue() ) { + doRefresh(); + mRefresh = new Boolean( false ); + } + } + Thread.sleep( mRefreshSleep ); + } + catch( InterruptedException e ) { + } + } + } + + private void doRefresh() { + try { + // Drop the actual info + mApplications = new Hashtable(); + // Look up all the registered Containers for the EJB Module and loop through + Iterator i = mServer.queryNames( new ObjectName( "Management:*" ), null ).iterator(); + while( i.hasNext() ) { + ObjectName lName = (ObjectName) i.next(); + if( lName.getKeyProperty( "container" ) == null ) { + continue; + } + Container lContainer = (Container) mServer.getAttribute( lName, "Container" ); + // Check if application name already exists + String lApplicationName = lContainer.getApplication().getName(); + Application lApplication = null; + if( mApplications.containsKey( lApplicationName ) ) { + lApplication = (Application) mApplications.get( lApplicationName ); + } + else { + lApplication = new Application( lApplicationName, "DD:Fix it later" ); + mApplications.put( lApplicationName, lApplication ); + } + // Check if the EJB module is there + Module lModule = lApplication.getModule( Application.EJBS ); + if( lModule == null ) { + lModule = new Module( "EJB", "DD:Fix it later" ); + lApplication.saveModule( Application.EJBS, lModule ); + } + // Add EJB Info + int lType = 0; + if( lContainer.getBeanMetaData().isSession() ) { + lType = EJB.SESSION; + } + if( lContainer.getBeanMetaData().isEntity() ) { + lType = EJB.ENTITY; + } + if( lContainer.getBeanMetaData().isMessageDriven() ) { + lType = EJB.MESSAGE_DRIVEN; + } + String lEjbName = lContainer.getBeanMetaData().getEjbName(); + EJB lEjb = new EJB( lEjbName, lType, true ); + lModule.addItem( lEjb ); + } + } + catch( Exception e ) { + e.printStackTrace(); + } + } + } } 1.3 +15 -0 jboss/src/main/org/jboss/mgt/ServerDataCollectorMBean.java Index: ServerDataCollectorMBean.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/mgt/ServerDataCollectorMBean.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ServerDataCollectorMBean.java 2001/05/22 05:08:00 1.2 +++ ServerDataCollectorMBean.java 2001/06/04 22:55:15 1.3 @@ -29,6 +29,21 @@ // Methods // ------------------------------------------------------------------------- + /** @return Sleep period in milliseconds between to refresh cycles **/ + public int getRefreshSleep(); + /** + * Sets the Sleep time (in milliseconds) between two refresh cycles + * + * @param pSleep Sleep period in milliseconds + **/ + public void setRefreshSleep( int pSleep ); + + /** + * Informs this intance the environment changes and he should update its + * data + **/ + public void refresh(); + /** * Returns an application if found with the given key. * _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-development