Home

MC4J is a project to create management software for J2EE application servers and other Java applications. It is designed to utilize the JMX specification to connect to and introspect information within supported servers and applications. It provides the ability to browse existing managed beans (MBeans), update configurations, monitor operation and execute tasks.

Current release

MC4J EMS 1.2.2 Released (5/9/08)

EMS is the connection library behind MC4J. It is an adapter layer to allow simultaneous access to any number of MBean servers from different AS vendors and different versions of those. It uses classloading isolation per connection to avoid the typical serialization problems and can load the correct libraries from installations of the target app servers. It also provides a cached, object form of the MBeanInfo metadata that eases writing tools that connect to many MBean Servers.

Download from here

MC4J 2.0 Alpha 1 Released (6/18/06) 

This is a fairly major rewrite to separate the communications and connectivity code from the interface code. I'll be releasing the communications code as another project. This release also includes a rewrite of the dashboard model to make it more flexible and powerful. I've included the latest of my HTML swing layout system and there are a bunch of dashboards that use this functionality. Next steps are to document the new dashboard system and finish testing server compatibility.

The current release, MC4J 2.0 alpha 1 is available for Download.

Features
Can connect to ten different server types from a single interface
Multiple live connections to any combination of the supported servers
Full MBean tree to view all the exposed information in a server
View server configurations and statistics remotely
Perform operations on a server
Register and track notifications
Monitor performance information from the JVM itself using JDK 5
Dynamic charting for all numeric information
Custom dashboards for specific features in a server
Query the server to find specific MBeans by name or by their attributes



Future releases

The future of MC4J is now being refactored and developed, see our Road Map for more information.

JMX Wiki

Also visit the JMX Wiki for more general knowledge sharing on the JMX specification and its uses.

MC4J Supported Servers

Let us know if you have more information on compatibility

Server Versions
JBoss 3.2.x, 4.0
JMX Remoting 1.0.1
MX4J 1.1.1, 2.x
OC4J 10.0.3
Tomcat 4.1.29, 5.0.x, 5.5.x
Bea Weblogic 6.1, 7.0, 8.1, 9
IBM WebSphere 5.0, 5.1, 6.0
Apache Geronimo M1, M2, M3
Sun JSAS 8, 8.1
Pramati 3.5.3, 4.0 preview
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Aug 23, 2005

    Subbaraj Jeganathan says:

    Hi I have created a DynmiacMBean and downloaded the attributes,operations ...

    Hi
    I have created a DynmiacMBean and downloaded the attributes,operations from the properties file.
    Also i have method which will get the filePath as attribute to load the attributes at runtime.

    By using MC4J console after specifying the filePath parameter click on runAction which will load the attributes from the file.

    But the MC4J console is not listing the newly added attributes.

    It would be great if you could help on this issue.Is ther any option in MC4J to reload the MBeans?

    Regards
    Subbaraj jeganathan,
    Design Analyst,
    Wipro Technologies Ltd,
    Bangalore.

    1. Aug 23, 2005

      Greg Hinkle says:

      There is no way to reload the mbean info on a current connection in mc4j today...



      There is no way to reload the mbean info on a current connection in mc4j today. You can disconnect and reconnect to the server and that will refresh the attributes, but dynamic metadata support is not yet built. Feel free to post a feature request and I'll look into adding it.

  2. Jun 27, 2006

    Brennan Spies says:

    Greg,  I am having some trouble connecting to Websphere 5.1. I can progra...

    Greg,

     I am having some trouble connecting to Websphere 5.1. I can programatically create my own working client (using the admin.jar and other libs from Websphere), but cannot seem to do the same using either RMI or SOAP adapters with MC4J. The core of the problem might be the fact that I do not have a full-blown Websphere installation on the PC on which I am running MC4J (I have the embedded version for RAD 6, but this does not work). Is this an absolute requirement? There is no way my company will pay for a licensed version of WAS on my PC just to have JMX monitoring...I could write my own Swing client, but would rather save myself the effort

    The exception stack trace I get when I connect is:

     javax.naming.CommunicationException: Cannot connect to ORB [Root exception is org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No]

        at com.sun.jndi.cosnaming.CNCtx.setOrbAndRootContext(CNCtx.java:362)
        at com.sun.jndi.cosnaming.CNCtx.initUsingCorbanameUrl(CNCtx.java:321)
        at com.sun.jndi.cosnaming.CNCtx.initUsingUrl(CNCtx.java:247)
        at com.sun.jndi.cosnaming.CNCtx.initOrbAndRootContext(CNCtx.java:209)
        at com.sun.jndi.cosnaming.CNCtx.<init>(CNCtx.java:69)
        at com.sun.jndi.cosnaming.CNCtxFactory.getInitialContext(CNCtxFactory.java:32)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
        at javax.naming.InitialContext.init(InitialContext.java:223)
        at javax.naming.InitialContext.<init>(InitialContext.java:197)
        at org.mc4j.console.connection.WebsphereConnectionNode.connect(WebsphereConnectionNode.java:93)
        at org.mc4j.console.connection.ReconnectAction.performAction(ReconnectAction.java:47)
        at org.openide.util.actions.NodeAction.performAction(NodeAction.java:193)
        at org.openide.util.actions.CallableSystemAction$1.run(CallableSystemAction.java:78)
        at org.openide.util.actions.CallableSystemAction$ActionRunnable.actionPerformed(CallableSystemAction.java:247)
        at org.netbeans.core.ModuleActions.invokeAction(ModuleActions.java:74)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.openide.util.actions.CallableSystemAction.invokeAction(CallableSystemAction.java:179)
        at org.openide.util.actions.CallableSystemAction.access$000(CallableSystemAction.java:31)
        at org.openide.util.actions.CallableSystemAction$ActionRunnable.doRun(CallableSystemAction.java:241)
        at org.openide.util.actions.CallableSystemAction$2.run(CallableSystemAction.java:111)
        at org.openide.util.Task.run(Task.java:136)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:330)
        at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:686)

    ...

    Caused by: java.net.ConnectException: Connection refused: connect

        at sun.nio.ch.Net.connect(Native Method)
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
        at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
        at com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl.createSocket(DefaultSocketFactoryImpl.java:60)
        at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:188)

    ...

     My credentials are an administrative login for Websphere, and I have added the properties specified in IBM's documentation for the AdminClient and the server jars just for good measure. But I think that MC4J is hard-coded to try and find the jars from the WAS installation specified in the connection setup.

    Thanks,

     Brennan

    1. Jun 28, 2006

      Brennan Spies says:

      Ah, I see the problem in the WebsphereConnectionProvider class. You assume that ...

      Ah, I see the problem in the WebsphereConnectionProvider class. You assume that security is turned off. You should allow the user to specify the AdminClient properties on the MC4J connection properties.

       From the Websphere docs:

      An exmample to make a secure SOAP based AdminClient: Properties props = new Properties();
      props.setProperty(AdminClient.CONNECTOR_HOST, "localhost");
      props.setProperty(AdminClient.CONNECTOR_PORT, "8880");
      props.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
      props.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "true");
      props.setProperty(AdminClient.USERNAME, "test2");
      props.setProperty(AdminClient.PASSWORD, "user24test");
      props.setProperty("javax.net.ssl.trustStore", "C:/WebSphere/AppServer/etc/DummyClientTrustFile.jks");
      props.setProperty("javax.net.ssl.keyStore", "C:/WebSphere/AppServer/etc/DummyClientKeyFile.jks");
      props.setProperty("javax.net.ssl.trustStorePassword", "WebAS");
      props.setProperty("javax.net.ssl.keyStorePassword", "WebAS");
      AdminClient client = AdminClientFactory.createAdminClient(props);