How to invoke method of MBean from EJB
bensench Jul 15, 2003 12:28 PMPlease help. I have spent several days trying to invoke the method of a custom MBean.
Can EJB invoke the method of custom standard MBean in Jboss?
I made a ConversionMBean and checked all the JBoss forum messages, but I still can't make
EJB to invoke the method of ConversionMBean.
After JBoss started up, I can use JMX Console to verify that ConversionMBean method is working.
However, when I tried to invoke the method of ConversionMBean from EJB, I got a ReflectionException
with null error message.
These are part of the messages logged in server.log:
[STDOUT] Conversion Class: com.mycom.Conversion
.....
[STDOUT] ReflectionException. ERROR=null
Can you please point me in the right direction to:
1. make it work in JBoss server
2. Other way portable to any J2EE server
I am appreciated of any help in advance.
Thanks,
Bensen
By the way, I am using jboss_3.0.6_tomcat_4.1.18
========= source code in EJB trying to invoke MBean method ======
try {
ArrayList svrs = MBeanServerFactory.findMBeanServer(null);
Iterator iter = svrs.iterator();
while (iter.hasNext()) {
MBeanServer svr = (MBeanServer)iter.next();
String domain = svr.getDefaultDomain();
if (domain.equals("jboss")) {
mbeanSvr = svr;
break;
}
}
ObjectName name = new ObjectName( "user:service=ConversionService" );
//testing - the following statement works.
MBeanInfo info = mbeanSvr.getMBeanInfo( name );
System.out.println( "Conversion Class: " + info.getClassName() );
//Invoke convertTo op
String opName = "convertTo";
String sig[] = { "String" };
Object opArgs[] = { "testString" };
//The following code throws ReflectionException
Object result = mbeanSvr.invoke( name, opName, opArgs, sig );
System.out.println( "invoked Conversion.convertTo()");
} catch (ReflectionException e) {
System.out.println("ReflectionException. ERROR=" + e.getMessage());
} catch (....
....
=============== Source code of ConversionMBean.java: ==========================
public interface ConversionMBean
{
public String convertTo( String orgString )
throws Exception;
public void start( )
throws Exception;
public void stop( )
throws Exception;
}
=========== Source code of Conversion.java ========================
public class Conversion
implements ConversionMBean
{
public static final String myService = "user:service=ConversionService";
public static boolean wasInitialized = false;
//Constructor
public Conversion() {
}
//Return null if not initialized
public String convertTo( String orgString )
throws Exception
{
String rtnString = null;
StringBuffer sb = new StringBuffer();
if ( !wasInitialized )
{
return ( rtnString );
}
//testing
sb.append(myService).append(" echo ").append(orgString);
rtnString = sb.toString();
return ( rtnString );
}
public void start( )
throws Exception
{
//do initialization here
wasInitialized = true;
}
public void stop( )
throws Exception
{
wasInitialized = false;
}
}
================== user-service.xml in deploy directory ==========
================ message logged when jboss starts up ========
Starting deployment of package: .... conversion.sar
Deployed package: ... conversion.sar