|
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 releaseMC4J 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.
|
![]() ![]() |
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 |


Comments (4)
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.
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.
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
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);