MBean deployment - EJB3 and call
redcar May 2, 2008 4:07 AMHallo,
I try to deploy a MBean with EJB3 annotation on the server and call it from a sessionBean. The MBean looks like:
package trail.jmx;
import org.jboss.annotation.ejb.Service;
import org.jboss.annotation.ejb.Management;
@Service (objectName="trail:service=calculator")
@Management(Calculator.class)
public class CalculatorMBean implements Calculator {
public double calculate (int start, int end, double saving) {
double tmp = Math.pow(1. + growthrate / 12., 12. * (end - start) + 1);
return saving * 12. * (tmp - 1) / growthrate;
}
....
In My SessionBean I want to call it with:
private Object callXMB_Calculator(String operationName, Object[] params)
{
Object result = null;
try
{
MBeanServer mbs = (MBeanServer) MBeanServerFactory.findMBeanServer(null).iterator().next();
ObjectName oName = new ObjectName("jboss.j2ee:jar=CalcMBean.jar,name=CalculatorMBean,service=EJB3");
String[] signature = null;
if (params != null)
{
signature = new String[params.length];
for (int i = 0; i < params.length; ++i)
{
signature = params.getClass().getName();
}
}
result = mbs.invoke(oName, operationName, params, signature);
I call the function like this:
callXMB_Calculator("calculate", new Object[]{1,2,4d});
But when I call the service-Method, I get a ReflectionException
Caused by: java.lang.IllegalArgumentException: Unable to find operation calculate(java.lang.Integer,java.lang.Integer,java.lang.Double)
When the server ist starting, I get the message:
2008-05-02 09:30:35,281 INFO [org.jboss.ejb3.JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=CalcMBean.jar,name=CalculatorMBean,service=EJB3 with dependencies: 2008-05-02 09:30:35,468 INFO [org.jboss.ejb3.EJBContainer] STARTED EJB: trail.jmx.CalculatorMBean ejbName: CalculatorMBean 2008-05-02 09:30:35,531 INFO [STDOUT] Calculator - Creating
To deploy the service, I have only copied the .jar file into the deploy directory. It contains only the .class files.
With the use of 'old' XMBean' I have no problem, but I would prefere the EJB3 style. What can I do?
Thank you,
Werner Hofmann