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