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]