mcconnell 2003/09/08 19:15:28 Modified: merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl CLIKernelLoader.java DefaultKernel.java DefaultKernelContext.java merlin/kernel/spi/src/java/org/apache/avalon/merlin/kernel Controller.java Log: Updating to support the passing of a MBeanServer to the kernel. Revision Changes Path 1.15 +9 -8 avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/CLIKernelLoader.java Index: CLIKernelLoader.java =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/CLIKernelLoader.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- CLIKernelLoader.java 7 Sep 2003 11:34:14 -0000 1.14 +++ CLIKernelLoader.java 9 Sep 2003 02:15:27 -0000 1.15 @@ -167,7 +167,6 @@ try { //mx4j.log.Log.setDefaultPriority( mx4j.log.Logger.DEBUG ); - Logger logger = context.getKernelLogger().getChildLogger( "jmx" ); JRMPKernelAdaptor adapter = new JRMPKernelAdaptor( logger, server ); setShutdownHook( adapter ); @@ -186,14 +185,12 @@ Kernel kernel = null; try { - kernel = createKernel( context ); - ObjectName name = new ObjectName( "merlin.kernel:type=kernel" ); - server.registerMBean( kernel, name ); + kernel = createKernel( server, context ); } catch( Throwable e ) { final String error = - "Could not establish or registering the kernel."; + "Could not establish the kernel."; String message = ExceptionHelper.packException( error, e ); System.err.println( message ); return false; @@ -267,12 +264,16 @@ private Kernel createKernel( KernelContext context ) throws KernelException { - Kernel kernel = new DefaultKernel( context ); + return createKernel( null, context ); + } + + private Kernel createKernel( MBeanServer server, KernelContext context ) + throws KernelException + { + Kernel kernel = new DefaultKernel( server, context ); setShutdownHook( kernel ); return kernel; } - - //-------------------------------------------------------------------------- // implementation 1.13 +36 -2 avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.java Index: DefaultKernel.java =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernel.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- DefaultKernel.java 7 Sep 2003 11:34:14 -0000 1.12 +++ DefaultKernel.java 9 Sep 2003 02:15:27 -0000 1.13 @@ -55,11 +55,14 @@ import java.net.URL; import javax.management.NotificationBroadcasterSupport; import javax.management.AttributeChangeNotification; +import javax.management.MBeanServer; +import javax.management.ObjectName; import org.apache.avalon.merlin.kernel.Kernel; import org.apache.avalon.merlin.kernel.KernelContext; import org.apache.avalon.merlin.kernel.KernelException; import org.apache.avalon.merlin.kernel.KernelRuntimeException; +import org.apache.avalon.activation.appliance.Appliance; import org.apache.avalon.activation.appliance.Block; import org.apache.avalon.activation.appliance.Composite; import org.apache.avalon.activation.appliance.ServiceContext; @@ -135,6 +138,8 @@ private long m_stateChangeSequenceId = 0; + private final MBeanServer m_server; + //-------------------------------------------------------------- // constructor //-------------------------------------------------------------- @@ -147,9 +152,33 @@ public DefaultKernel( final KernelContext context ) throws KernelException { + this( null, context ); + } + + /** + * Creation of a new Merlin Kernel. + * @param context the kernel context + * @exception KernelException if a kernel creation error occurs + */ + public DefaultKernel( final MBeanServer server, final KernelContext context ) + throws KernelException + { if( context == null ) throw new NullPointerException( "context" ); m_context = context; + m_server = server; + + if( m_server != null ) try + { + ObjectName name = new ObjectName( "merlin.kernel:type=kernel" ); + m_server.registerMBean( this, name ); + } + catch( Throwable e ) + { + final String error = + "\nInternal error during kernel registration."; + throw new KernelException( error, e ); + } // // create the root block into which we install application blocks @@ -288,7 +317,8 @@ */ public int getMemoryVariableRatio() { - return (int) ((Runtime.getRuntime().freeMemory() * 100) / Runtime.getRuntime().totalMemory()); + return (int) ((Runtime.getRuntime().freeMemory() * 100) / + Runtime.getRuntime().totalMemory()); } /** @@ -441,6 +471,10 @@ DefaultServiceContext services = new DefaultServiceContext(); services.put( PoolManager.ROLE, m_context.getPoolManager() ); services.put( LoggingManager.KEY, m_context.getLoggingManager() ); + if( m_server != null ) + { + services.put( Appliance.MBEAN_SERVER_KEY, m_server ); + } m_block = DefaultBlock.createRootBlock( services, m_model ); } catch( Throwable e ) 1.24 +2 -2 avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernelContext.java Index: DefaultKernelContext.java =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/kernel/impl/src/java/org/apache/avalon/merlin/kernel/impl/DefaultKernelContext.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- DefaultKernelContext.java 7 Sep 2003 11:34:14 -0000 1.23 +++ DefaultKernelContext.java 9 Sep 2003 02:15:27 -0000 1.24 @@ -353,7 +353,7 @@ // // setup the pool manager // TODO: an implementation following more thinking (pools should - // probably be declared at the component direective level) + // probably be declared at the component directive level) m_pool = null; 1.3 +1 -5 avalon-sandbox/merlin/kernel/spi/src/java/org/apache/avalon/merlin/kernel/Controller.java Index: Controller.java =================================================================== RCS file: /home/cvs/avalon-sandbox/merlin/kernel/spi/src/java/org/apache/avalon/merlin/kernel/Controller.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Controller.java 7 Sep 2003 11:34:15 -0000 1.2 +++ Controller.java 9 Sep 2003 02:15:27 -0000 1.3 @@ -63,10 +63,6 @@ */ public interface Controller { - //======================================================================= - // static - //======================================================================= - /** * Initiate the establishment of the root container. */
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]