
Originally Posted by
jaalex
Hi,
How do i bring up the Mbeans in Websphere console and manage them? - It'll be great if the steps for doing that can be posted as well. As i understand, the code snippet creates and registers Mbeans. I'm totally new to JMX, and am using RAD 7 (WAS 6.1)
Thanks,
Joseph
I use mx4j as a console in WebSphere 6.0. Took a tip till I found a class called org.springframework.jmx.support.WebSphereMBeanServ erFactoryBean. Apparently this bean is not needed if you work with WebSphere 6.1.
My configuration is:
Code:
<bean id="adminService" class="com.ibm.websphere.management.AdminServiceFactory" factory-method="getAdminService"/>
<bean id="adminService.defaultDomain" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
<bean id="adminService.cellName" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
<bean id="adminService.nodeName" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
<bean id="adminService.processName" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
<bean id="websphereNamingStrategy" class="example.WebsphereNamingStrategy">
<property name="domainName" ref="adminService.defaultDomain"/>
<property name="cellName" ref="adminService.cellName"/>
<property name="nodeName" ref="adminService.nodeName"/>
<property name="processName" ref="adminService.processName"/>
</bean>
<bean id="mbeanServer" class="org.springframework.jmx.support.WebSphereMBeanServerFactoryBean" />
<bean id="processor" class="mx4j.tools.adaptor.http.XSLTProcessor" />
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="server" ref="mbeanServer" />
<property name="namingStrategy" ref="websphereNamingStrategy"/>
<property name="beans">
<map>
<entry key="MyBean" value-ref="MyBean"/>
<entry key="HttpAdaptor">
<bean class="mx4j.tools.adaptor.http.HttpAdaptor">
<property name="port" value="8000"/>
<property name="host" value="0.0.0.0"/>
<property name="processor" ref="processor"/>
</bean>
</entry>
</map>
</property>
<property name="assembler">
<bean class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
<property name="interfaceMappings">
<map>
<entry key="MyBean" value="example.MyBeanInterface"/>
</map>
</property>
</bean>
</property>
<property name="listeners">
<list>
<!-- let the HttpAdapter be started after it is registered in the MBeanServer -->
<bean class="example.HttpAdapterManager">
<property name="mbeanServer" ref="mbeanServer" />
</bean>
</list>
</property>
<property name="exposeManagedResourceClassLoader" value="true" />
</bean>
I'm not sure whether the property exposeManagedResourceClassLoader is needed in the configuration.
The code for the AdapterManager (has to be rewritten to use the namingstrategy for WebSphere but this is the idea). The code starts the HttpAdaptor:
Code:
package example;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.springframework.jmx.export.MBeanExporterListener;
public class HttpAdapterManager implements MBeanExporterListener {
private MBeanServer mbeanServer;
private String adaptorName = "Server:name=HttpAdaptor";
public void mbeanRegistered(ObjectName objectName) {
if (adaptorName.equals(objectName.getCanonicalName())) {
try {
mbeanServer.invoke(objectName, "start", null, null);
} catch (Exception e) {
System.err.println("Can't start HttpAdaptor: " + e);
}
}
}
public void mbeanUnregistered(ObjectName objectName) {
if (adaptorName.equals(objectName.getCanonicalName())) {
try {
mbeanServer.invoke(objectName, "stop", null, null);
} catch (Exception e) {
System.err.println("Can't stop HttpAdaptor: " + e);
}
}
}
public void setMbeanServer(MBeanServer mbeanServer) {
this.mbeanServer = mbeanServer;
}
public void setAdaptorName(String adaptorName) {
this.adaptorName = adaptorName;
}
}