Programmatically Deploy Service MBean in JBoss Wildfly 10 -


i'm helping company migrate jboss 5.x wildfly 10.1. make heavy use of service mbeans (i.e. mbeans have create/start methods) deployed programatically. i'm trying figure out wildfly-approved way accomplish this, i've been unable find answers. best info i've been able figure out far deploy test mbean extends servicembeansupport using jboss-service.xml file, , dumping stack trace createservice()/startservice() methods. gives me following stacktrace:

21:38:05,948 error [stderr] (msc service thread 1-3) java.lang.exception: stack trace 21:38:05,949 error [stderr] (msc service thread 1-3)     @ java.lang.thread.dumpstack(thread.java:1333) 21:38:05,949 error [stderr] (msc service thread 1-3)     @ com.foo.mbean.messagetest.createservice(messagetest.java:39) 21:38:05,949 error [stderr] (msc service thread 1-3)     @ org.jboss.system.servicembeansupport.jbossinternalcreate(servicembeansupport.java:221) 21:38:05,949 error [stderr] (msc service thread 1-3)     @ org.jboss.system.servicembeansupport.create(servicembeansupport.java:158) 21:38:05,949 error [stderr] (msc service thread 1-3)     @ org.jboss.system.servicembeansupport.postregister(servicembeansupport.java:372) 21:38:05,949 error [stderr] (msc service thread 1-3)     @ com.sun.jmx.mbeanserver.mbeansupport.postregister(mbeansupport.java:182) 21:38:05,949 error [stderr] (msc service thread 1-3)     @ com.sun.jmx.interceptor.defaultmbeanserverinterceptor.postregister(defaultmbeanserverinterceptor.java:1024) 21:38:05,949 error [stderr] (msc service thread 1-3)     @ com.sun.jmx.interceptor.defaultmbeanserverinterceptor.registerdynamicmbean(defaultmbeanserverinterceptor.java:974) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ com.sun.jmx.interceptor.defaultmbeanserverinterceptor.registerobject(defaultmbeanserverinterceptor.java:900) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ com.sun.jmx.interceptor.defaultmbeanserverinterceptor.registermbean(defaultmbeanserverinterceptor.java:324) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ com.sun.jmx.mbeanserver.jmxmbeanserver.registermbean(jmxmbeanserver.java:522) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ org.jboss.as.jmx.pluggablembeanserverimpl$tcclmbeanserver.registermbean(pluggablembeanserverimpl.java:1527) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ org.jboss.as.jmx.pluggablembeanserverimpl.registermbean(pluggablembeanserverimpl.java:871) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ org.jboss.as.jmx.mbeanregistrationservice.start(mbeanregistrationservice.java:101) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ org.jboss.msc.service.servicecontrollerimpl$starttask.startservice(servicecontrollerimpl.java:1948) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ org.jboss.msc.service.servicecontrollerimpl$starttask.run(servicecontrollerimpl.java:1881) 21:38:05,950 error [stderr] (msc service thread 1-3)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) 21:38:05,951 error [stderr] (msc service thread 1-3)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) 21:38:05,951 error [stderr] (msc service thread 1-3)     @ java.lang.thread.run(thread.java:745) 

from that, following code closest attempt i've gotten replicating what's happening in stack trace.

package com.foo.mbean;  import java.util.collections; import org.jboss.as.jmx.mbeanregistrationservice; import org.jboss.msc.service.serviceactivator; import org.jboss.msc.service.serviceactivatorcontext; import org.jboss.msc.service.servicename; import org.jboss.msc.service.serviceregistryexception; import org.jboss.msc.service.servicetarget; import org.jboss.msc.value.immediatevalue; import org.jboss.msc.value.value; import org.jboss.system.servicembeansupport;  public class mbeanserviceactivator implements serviceactivator {      public void activate(serviceactivatorcontext context) throws serviceregistryexception {         servicetarget t = context.getservicetarget();         value<servicembeansupport> v = new immediatevalue<servicembeansupport>(new messagetest());         final mbeanregistrationservice<servicembeansupport> service = new mbeanregistrationservice<servicembeansupport>(                 "oware:service=messagetest", collections.empty_list, v);         t.addservice(servicename.of("oware", "mbean"), service).install();     } } 

based on logging i'm seeing , jboss source code i've looked at, mbeanregistrationservice.start() method getting called both when deploying via jboss-service.xml , via serviceactivator class, , mbean getting registered in both cases. however, fails trigger createservice()/startservice() methods, , can't figure out why.

the wildfly documentation doesn't have information regarding writing mbeans, , thing can find on google in reference accessing mbeans client. i'm open either solution making code work or ideas on alternatives using mbeans management functions. i've been out of loop in jboss world 6 years now, i'm pretty rusty, , lot has changed.


Comments

Popular posts from this blog

Sort a complex associative array in PHP -

vb.net - How to ignore if a cell is empty nothing -

recursion - Can every recursive algorithm be improved with dynamic programming? -