[Management, JMX/JBoss] - Can't expose 'start' for a service XMBean
by osganian
I can't figure out how to expose a start service using an XMBean. I started with the code in the JBoss EJB3 tutorial (XMBeanService.java) and modified it to include:
| public void start() {
| System.out.println("Start was called");
| }
|
Deploying the JAR produced the expected output. I then added the following to the service-xmbean.xml file:
| <operation>
| <name>start</name>
| <return-type>void</return-type>
| </operation>
|
This produced the following exception:
| java.lang.RuntimeException: Problem registering @Management interface for @Service class org.jboss.tutorial.service.bean.XMBeanService
| at org.jboss.ejb3.service.ServiceContainer.registerManagementInterface(ServiceContainer.java:804)
| at org.jboss.ejb3.service.ServiceContainer.create(ServiceContainer.java:251)
| 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.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
| at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
| at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
| at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:121)
| at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:51)
| at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
| at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
| at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
| at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
| at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:698)
| at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:290)
| at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:221)
| at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
| at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
| at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
| at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: java.lang.RuntimeException: javax.management.MBeanException
| at org.jboss.ejb3.deployers.JBossASKernel.installMBean(JBossASKernel.java:181)
| at org.jboss.ejb3.service.ServiceContainer.registerManagementInterface(ServiceContainer.java:797)
| ... 54 more
| Caused by: javax.management.MBeanException
| at org.jboss.ejb3.service.ServiceMBeanDelegate.invoke(ServiceMBeanDelegate.java:219)
| at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
| at org.jboss.ejb3.deployers.JBossASKernel.invokeOptionalMethod(JBossASKernel.java:287)
| at org.jboss.ejb3.deployers.JBossASKernel.installMBean(JBossASKernel.java:177)
| ... 55 more
| Caused by: org.jboss.aop.DispatcherConnectException: EJB container is not completely started, or is stopped.
| at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:62)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
| at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
| at org.jboss.ejb3.service.ServiceContainer.localInvoke(ServiceContainer.java:512)
| at org.jboss.ejb3.service.ServiceContainer.localInvoke(ServiceContainer.java:475)
| at org.jboss.ejb3.service.ServiceMBeanDelegate.invoke(ServiceMBeanDelegate.java:215)
|
Adding a start method to XMBeanServiceRemote.java and deploying the service bean with the Management annotation @Management(XMBeanServiceRemote.class)
| worked just fine. Am I missing something, or is there perhaps a bug?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4231416#4231416
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4231416
17 years, 2 months
[EJB 3.0] - JndiUtil - assumes HA-JNDI service is installed
by andyredhead
Hi,
in JBoss AS 4.2.3 the code for org.jboss.ejb3.JndiUtil includes:
| Object object = null;
|
| try
| {
| object = jndiContext.lookup(binding);
| }
| catch (NameNotFoundException e)
| {
| Context haCtx = InitialContextFactory.getHAContext(jndiContext);
| object = haCtx.lookup(binding);
| }
|
| return object;
| }
|
So, if the local lookup fails, a call is made to the HA context - without checking to see if the haCtx object is not null...
If the HA JNDI service is not installed (i.e. such as in my development environment) then this call fails with a null pointer exception.
I stumbled upon this when I tried to configure an XML based entity manager injection into a stateless session bean and got the persistence-context-ref-name value wrong. I then had to install the ha jndi service (along with the default partition service) to find out what the actual name being looked up was.
I thing it would be helpful if there was a not-null check on haCtx, if haCtx is null then the original naming exception should be re-thrown so the logs show what jndi name failed.
Cheers,
Andy
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4231415#4231415
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4231415
17 years, 2 months