Hi Sergey: Thank you very much you replied me on weekends! I put the comments bellow:
1. http://localhost:8080/demoserver/jaxserver/jmxserver/service/impl.service.ws.gsoc.cxf.apache.org > > What is this query supposed to mean ? Get all Mbeans representing > > endpoints whose implementations are in > > "impl.service.ws.gsoc.cxf.apache.org" package ? If I didn't explicitly define endpointName in service class, the endpointName will be like {http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl, and http://localhost:8080/demoserver/jaxserver/jmxserver/service/impl.service.ws.gsoc.cxf.apache.org can search whether there is a match like this String 'impl.service.ws.gsoc.cxf.apache.org' in the endpointName, I know it turns out useless if I didn't do the following right at first: > > We need to be able to get the list of MBean *related to* a particular > > service name, such as > > {http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl. > > Actually this is where I get stucked, I tried to put request like http://localhost:8080/demoserver/jaxserver/jmxserver/service/{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl But I get 400 error: request not found and here are part of your comments, > >>> Can you please describe what you've done ? > >>> > >>> > I am actually stopped at this GET request: > >>> > I tried: > >>> > > >>> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl > >>> > And obviously it doesn't work because of the slash in url is not > >>> > accepted. (I still didn't find a reasonable answer from searching > >>> > google, > >>> > shocking) > >>> > > >>> Shenglin, you are obviously very well prepared technically but you > >>> need to change the approach and do it asap. Why do you expect Google > >>> to tell you why the above URI does not work ? > >>> > >>> That URI seems too long anyway > >>> > >>> > >>> http://localhost:8080/demoserver/jmx?service={http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl > >>> > >>> Is the max really and in this particular case I'm presuming this query > >>> is about getting the list of MBeans reps for a particular managed > >>> service. Perhaps in the future we can allocate dynamic subresources > >>> instead for handling endpoint specific MBeans to make URIs shorter for > >>> this particular case. > >>> I am still working on it, I think this is the core part of this mission, and from your replies, I can see you want this query to be done correctly as it is in the red line. 2. > >> <endpointName>"{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl"</endpointName> > >> </CxfMBean> > >> </CxfMBeans> > >> </CxfMBeanCollection> > >> > >> > > > > Please remove "Cxf" prefixes and we also don't need to expose > > JaxRsJMXServiceImpl Yes, I am removing/modifying it very fast. 3. > >> <!-- This jmxServer should be exposed to jax-rs which should be > >> separated from other service endpoints --> > >> <bean id="jmxServer" > >> class="org.apache.cxf.gsoc.management.web.JMXServer"> > >> <property name="managedJaxRsEndpoints"> > >> <list> > >> <ref bean="userServiceRs"/> > >> <ref bean="customerServiceRs"/> > >> </list> > >> </property> > >> <property name="managedJaxWsEndpoints"> > >> <list> > >> <ref bean="personService"/> > >> </list> > >> </property> > >> <property name="managedEndpoints"> > >> <list> > >> > >> <value>{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl</value> > >> > >> <value>{http://web.management.gsoc.cxf.apache.org/}JMXServer</value> > >> > >> <value>{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl</value> > >> > >> <value>{http://impl.service.ws.gsoc.cxf.apache.org/}JaxRsJMXServiceImpl</value> > >> </list> > >> </property> > >> > > > > You said you've managed to avoid injecting references to individual > > managed endpoints, I thought we agree that injecting > > InstrumentationManager would be sufficient. Yes, actually this part is not necessary: > >> <property name="managedJaxRsEndpoints"> > >> <list> > >> <ref bean="userServiceRs"/> > >> <ref bean="customerServiceRs"/> > >> </list> > >> </property> > >> <property name="managedJaxWsEndpoints"> > >> <list> > >> <ref bean="personService"/> > >> </list> > >> </property> I will remove it very fast, the reason I put here is you have mentioned do things like > <bean class="org.apache.cxf.management.web.JMXServer"> > ? ?<property name="managedEndpoints"> > ? ? ? ? <list> > ? ? ? ? ? ?<value>{http://users.com/rs}UserService</value> > ? ? ? ? ? ?<value>{http://users.com/ws}UserService</value> > ? ? ? ? </list> > ? ?</property> > ? ?<property name="manager" ref="instrumentationManager"/> > </bean> But right now, it looks injecting <property name="manager" ref="instrumentationManager"/> is good enough through my experiment. Sorry for putting too much unnecessary stuff which I brought up in the code, I was putting every possible solution/my thoughts up, and my idea is that you could cut anything which you don't need. It literally confused you, my apology. The Good thing is, from the dicussion, I need to figure out http://localhost:8080/demoserver/jaxserver/jmxserver/service/{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl definitely. Although I even didn't thought it's could be an issue, but I know I can't easily go through this mission without any hardcore stuff. The ICLA is ready I will email you and secretary in another thread. Thank you very much. Regards: Shenglin Qiu > Date: Sun, 15 May 2011 17:46:29 +0100 > Subject: Re: Expose MBeans in CXF > From: sberyoz...@gmail.com > To: dabaip...@hotmail.com > CC: dev@cxf.apache.org > > On Sun, May 15, 2011 at 5:46 PM, Sergey Beryozkin <sberyoz...@gmail.com> > wrote: > > Hi > > > > It looks not too bad, some comments inline... > > > > On Fri, May 13, 2011 at 5:34 PM, Shenglin Qiu <dabaip...@hotmail.com> wrote: > >> > >> Hi Sergey: > >> > >> Here are what I had and although the output maybe simple, I checked outputs > >> and they look alright, need your opinions:) > >> 1. > >> Request URL: this is from searching part of endpoint > >> service="{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl" > >> http://localhost:8080/demoserver/jaxserver/jmxserver/service/impl.service.ws.gsoc.cxf.apache.org > >> > > > > What is this query supposed to mean ? Get all Mbeans representing > > endpoints whose implementations are in > > "impl.service.ws.gsoc.cxf.apache.org" package ? > > > >> Response: > >> <CxfMBeanCollection> > >> <CxfMBeans> > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="CustomerServiceImpl",service="{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> > >> <endpointName>"{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl"</endpointName> > >> </CxfMBean> > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="JaxRsJMXServiceImpl",service="{http://impl.service.ws.gsoc.cxf.apache.org/}JaxRsJMXServiceImpl",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> > >> <endpointName>"{http://impl.service.ws.gsoc.cxf.apache.org/}JaxRsJMXServiceImpl"</endpointName> > >> </CxfMBean> > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="UserServiceImpl",service="{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> > >> <endpointName>"{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl"</endpointName> > >> </CxfMBean> > >> </CxfMBeans> > >> </CxfMBeanCollection> > >> > >> > > > > Please remove "Cxf" prefixes and we also don't need to expose > > JaxRsJMXServiceImpl > > > >> > >> 2. > >> Request: search port="UserServiceImpl" > >> http://localhost:8080/demoserver/jaxserver/jmxserver/port/"UserServiceImpl" > >> > >> Response: > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="UserServiceImpl",service="{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> <endpointName>"UserServiceImpl"</endpointName> > >> </CxfMBean> > >> > > > > We need to be able to get the list of MBean *related to* a particular > > service name, such as > > {http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl. > > > >> > >> 3. > >> Request: search by ObjectName("*******") > >> > >> http://localhost:8080/demoserver/jaxrs3/jmx/component/org.apache.cxf:type=Bus.Service.Endpoint,* > >> > >> Response: > >> <CxfMBeanCollection> > >> <CxfMBeans> > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="JaxRsJMXServiceImpl",service="{http://impl.service.ws.gsoc.cxf.apache.org/}JaxRsJMXServiceImpl",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> </CxfMBean> > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="JMXServer",service="{http://web.management.gsoc.cxf.apache.org/}JMXServer",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> </CxfMBean> > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="CustomerServiceImpl",service="{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> </CxfMBean> > >> <CxfMBean> > >> > >> <canonicalName>org.apache.cxf:bus.id=cxf568097598,port="UserServiceImpl",service="{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl",type=Bus.Service.Endpoint</canonicalName> > >> <domain>org.apache.cxf</domain> > >> </CxfMBean> > >> </CxfMBeans> > >> </CxfMBeanCollection> > >> > > > > OK > >> > >> > >> My current inbound config (): > >> <!-- JAX-WS Service Endpoint --> > >> <jaxws:endpoint id="personService" implementor="#personServ" > >> address="/PersonService"> > >> <jaxws:inInterceptors> > >> <bean > >> class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" > >> /> > >> <bean > >> class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"> > >> <constructor-arg> > >> <map> > >> <entry key="action" value="UsernameToken" /> > >> <entry key="passwordType" value="PasswordText" /> > >> <entry key="passwordCallbackClass" > >> value="org.apache.cxf.gsoc.ws.auth.ServerPasswordCallback" /> > >> </map> > >> </constructor-arg> > >> </bean> > >> </jaxws:inInterceptors> > >> </jaxws:endpoint> > >> > >> <bean id="instrumentationManager" > >> class="org.apache.cxf.management.jmx.InstrumentationManagerImpl"> > >> <property name="bus" ref="cxf" /> > >> <property name="enabled" value="true" /> > >> <property name="JMXServiceURL" > >> value="service:jmx:rmi:///jndi/rmi://localhost:9914/jmxrmi" /> > >> </bean> > >> > >> <!-- Wiring the counter repository --> > >> <bean id="counterRepository" > >> class="org.apache.cxf.management.counters.CounterRepository"> > >> <property name="bus" ref="cxf" /> > >> </bean> > >> > >> <!-- JAX-RS Server 1 --> > >> <jaxrs:server id="userServiceRs" address="/jaxrs1"> > >> <jaxrs:serviceBeans> > >> <ref bean="userService" /> > >> </jaxrs:serviceBeans> > >> </jaxrs:server> > >> > >> <!-- JAX-RS Server 2 --> > >> <jaxrs:server id="customerServiceRs" address="/jaxrs2"> > >> <jaxrs:serviceBeans> > >> <ref bean="customerService" /> > >> </jaxrs:serviceBeans> > >> </jaxrs:server> > >> > >> <!-- JAX-RS Server 3: This is the old jmx inbound, haven't deleted, but > >> will do --> > >> <jaxrs:server id="jmxServiceRs" address="/jaxrs3"> > >> <jaxrs:serviceBeans> > >> <ref bean="jmxService" /> > >> </jaxrs:serviceBeans> > >> </jaxrs:server> > >> > >> <!-- CXF3388: Expose JMXServer: Current testing inbound.--> > >> <jaxrs:server id="jmxServerRs" address="/jaxserver"> > >> <jaxrs:serviceBeans> > >> <ref bean="jmxServer" /> > >> </jaxrs:serviceBeans> > >> </jaxrs:server> > >> > >> <!-- This jmxServer should be exposed to jax-rs which should be > >> separated from other service endpoints --> > >> <bean id="jmxServer" > >> class="org.apache.cxf.gsoc.management.web.JMXServer"> > >> <property name="managedJaxRsEndpoints"> > >> <list> > >> <ref bean="userServiceRs"/> > >> <ref bean="customerServiceRs"/> > >> </list> > >> </property> > >> <property name="managedJaxWsEndpoints"> > >> <list> > >> <ref bean="personService"/> > >> </list> > >> </property> > >> <property name="managedEndpoints"> > >> <list> > >> > >> <value>{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl</value> > >> > >> <value>{http://web.management.gsoc.cxf.apache.org/}JMXServer</value> > >> > >> <value>{http://impl.service.ws.gsoc.cxf.apache.org/}UserServiceImpl</value> > >> > >> <value>{http://impl.service.ws.gsoc.cxf.apache.org/}JaxRsJMXServiceImpl</value> > >> </list> > >> </property> > >> > > > > You said you've managed to avoid injecting references to individual > > managed endpoints, I thought we agree that injecting > > InstrumentationManager would be sufficient. > > > >> <property name="instrumentationManager" > >> ref="instrumentationManager"/> > >> </bean> > >> > >> <bean id="userService" > >> class="org.apache.cxf.gsoc.ws.service.impl.UserServiceImpl" /> > >> <bean id="customerService" > >> class="org.apache.cxf.gsoc.ws.service.impl.CustomerServiceImpl" /> > >> <bean id="jmxService" > >> class="org.apache.cxf.gsoc.ws.service.impl.JaxRsJMXServiceImpl" /> > >> > >> I am planning to use this weekend, clean this config and code up, and make > >> Rest request url shorter as you mentioned. I need your suggestions and > >> ideas. and I think I am ready for a big surgery on the demoserver. > > > > What I'd like to clarify here is that I'm afraid I can't spend a lot > > of time on this project and tell you what to do step by step. > > I'm happy to help and mentor and I'm trying to provide some feedback > > and express some opinion on how things should be implemented. > > > > But it is your project. Please try to drive it yourself. Review the > > JMX/REST related documentation linked from the JIRA, and have some > > opinion on how to make sure CXF MBeans can be searched using a number > > of queries, so that users could easily get to a collection of Mbeans > > or an individual MBean as needed. This is part of the task, make it > > easy to get to MBean representations. > > > > I guess important individual MBeans (those representing > > Services/endpoints) should be individually addressed so that we can > > say start & stop the service etc. Your server should be able to handle > > queries to get the collections of Mbeans but it should probably > > provide a subresource locator so that individual MBeans can be asked > > to execute certain operations or update the properties. > > > > JMXServer should keep up to date with the number of available CXF > > MBeans - I was suggesting to use CXF-level listeners/registry, but > > perhaps a better solution is to register a JMX listener ot query MBean > > server for all MBeans in the "org.apache.cxf" domain. That is not > > critical now, that can be optimized, but the server should be aware of > > all MBeans one way or another. > > > > > > I think you have maximum 2 weeks to make all work well - please keep > > focused, provide your opinion on how to proceed, and implement it. > > I'll be happy to provide the feedback on the dev list or #cxf. > > Then, once you are done, we should consider if we can extend > > LogBrowser with the management statisicts or continue improving what > > you've already done by then... > > > > Thanks, Sergey > > > >> Code is still in https://dabaip...@github.com/dabaipang/demoserver.git > >> Also, I will go to supermarket and find a scanner for the NDS > >> > >> Thank you very much! > >> > >> > >> Regards: > >> Shenglin Qiu > >> > >> > >> > >>> Date: Fri, 13 May 2011 11:11:51 +0100 > >>> Subject: Re: Expose MBeans in CXF > >>> From: sberyoz...@gmail.com > >>> To: dev@cxf.apache.org > >>> > >>> Hi > >>> > >>> On Fri, May 13, 2011 at 1:19 AM, Shenglin Qiu <dabaip...@hotmail.com> > >>> wrote: > >>> > > >>> > Hi Sergey: > >>> > > >>> > Here is the todo list which you have assigned: > >>> > > >>> > 1. Have one JAX-WS and JAX-RS endpoints > >>> > 2. Have your JMXServer as a separate endpoint > >>> > 3. Injecting a bus reference and registering a listener > >>> > > >>> > Your Tips: > >>> > 1. > >>> > In > >>> > the method where bus is injected, get ServerLifeCycleManager.class > >>> > extension from the bus and register your own ServerLifeCycleListener > >>> > impl > >>> > , it has methods such as startServer and stopServer, in > >>> > startServer(Server server) you can do > >>> > server.getEndpoint().getService().getQName(), > >>> > and keep these QNames > >>> > in the local list and have a method say getManagedEndpoints() which will > >>> > return the list of those QNames that will be a good start > >>> > > >>> > 2. > >>> >> <bean class="org.apache.cxf.management.web.JMXServer"> > >>> >> ? ?<property name="managedEndpoints"> > >>> >> ? ? ? ? <list> > >>> >> ? ? ? ? ? ?<value>{http://users.com/rs}UserService</value> > >>> >> ? ? ? ? ? ?<value>{http://users.com/ws}UserService</value> > >>> >> ? ? ? ? </list> > >>> >> ? ?</property> > >>> >> ? ?<property name="manager" ref="instrumentationManager"/> > >>> >> </bean> > >>> > but ?<property name="managedEndpoints"> can be dropped, you can get this > >>> > list from the bus > >>> > > >>> > > >>> > Currently, I have finished on Step 1 and 2, and you have told me that > >>> > put step 3 on hold, and make sure JMXServer as a separated enpoint is > >>> > correct > >>> > >>> OK. I don't understand what you've done so far, what decisions have > >>> been made to do with making sure that > >>> - list of managed endpoints is returned > >>> - all MBean representations for all the endpoints are returned, > >>> - MBeans related to an individual endpoint are returned > >>> > >>> Can you please describe what you've done ? > >>> > >>> > I am actually stopped at this GET request: > >>> > I tried: > >>> > > >>> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/{http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl > >>> > And obviously it doesn't work because of the slash in url is not > >>> > accepted. (I still didn't find a reasonable answer from searching > >>> > google, > >>> > shocking) > >>> > > >>> Shenglin, you are obviously very well prepared technically but you > >>> need to change the approach and do it asap. Why do you expect Google > >>> to tell you why the above URI does not work ? > >>> > >>> That URI seems too long anyway > >>> > >>> > >>> http://localhost:8080/demoserver/jmx?service={http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl > >>> > >>> Is the max really and in this particular case I'm presuming this query > >>> is about getting the list of MBeans reps for a particular managed > >>> service. Perhaps in the future we can allocate dynamic subresources > >>> instead for handling endpoint specific MBeans to make URIs shorter for > >>> this particular case. > >>> > >>> > >>> > > >>> > Then I reserve slash to back slash and got 500 errors: > >>> > > >>> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/{http:\\impl.service.ws.gsoc.cxf.apache.org\}CustomerServiceImpl > >>> > => There is a 500 error from CXF > >>> > here is the exception stacktrace: > >>> > > >>> > 2011-05-12 > >>> > 20:00:48.657:WARN::/demoserver/jaxserver/jmxserver/service/%7Bhttp:%5 > >>> > C%5Cimpl.service.ws.gsoc.cxf.apache.org%5C%7DCustomerServiceImpl > >>> > java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Unexpected > >>> > interna > >>> > l error near index 1<|\<| ^ > >>> > at > >>> > org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMess > >>> > age(AbstractFaultChainInitiatorObserver.java:102) > >>> > at > >>> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept > >>> > orChain.java:303) > >>> > at > >>> > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti > >>> > ationObserver.java:113) > >>> > at > >>> > org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDes > >>> > tination.java:97) > >>> > at > >>> > org.apache.cxf.transport.servlet.ServletController.invokeDestination( > >>> > ServletController.java:458) > >>> > at > >>> > org.apache.cxf.transport.servlet.ServletController.invoke(ServletCont > >>> > roller.java:146) > >>> > at > >>> > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCX > >>> > FServlet.java:148) > >>> > at > >>> > org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(Ab > >>> > stractHTTPServlet.java:179) > >>> > at > >>> > org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHT > >>> > TPServlet.java:108) > >>> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) > >>> > at > >>> > org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(Abstract > >>> > HTTPServlet.java:159) > >>> > at > >>> > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511 > >>> > ) > >>> > at > >>> > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3 > >>> > 90) > >>> > at > >>> > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav > >>> > a:216) > >>> > at > >>> > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1 > >>> > 82) > >>> > at > >>> > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7 > >>> > 65) > >>> > at > >>> > org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440) > >>> > > >>> > at > >>> > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand > >>> > lerCollection.java:230) > >>> > at > >>> > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection. > >>> > java:114) > >>> > at > >>> > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1 > >>> > 52) > >>> > at org.mortbay.jetty.Server.handle(Server.java:326) > >>> > at > >>> > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:54 > >>> > 2) > >>> > at > >>> > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpCo > >>> > nnection.java:926) > >>> > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) > >>> > at > >>> > org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > >>> > at > >>> > org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > >>> > at > >>> > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja > >>> > va:410) > >>> > at > >>> > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.j > >>> > ava:582) > >>> > > >>> > > >>> > Any suggestions? > >>> > >>> Please understand how CXF JAX-RS handles requests, don't try changing > >>> "/" to "\\" and hope it will work > >>> > >>> > > >>> > Currently I can do the following: > >>> > > >>> > http://localhost:8080/demoserver/jaxrs3/jmx/component/org.apache.cxf:type=Bus.Service.Endpoint,* > >>> > => get Mbean by ObjectName query > >>> > >>> What is "/jaxrs3" ? Are you really sure your JMXServer endpoint is > >>> separate ? > >>> > >>> > http://localhost:8080/demoserver/jaxserver/jmxserver/list > >>> > => get all Mbeans > >>> > by > >>> > ObjectName('*:type=*,*') which query is *:type=*,* > >>> > >>> should be just > >>> > >>> http://localhost:8080/demoserver/jmx/list > >>> > >>> > > >>> > http://localhost:8080/demoserver/jaxserver/jmxserver/type/Bus.Service.Endpoint > >>> > => get Mbean by type > >>> > > >>> > http://localhost:8080/demoserver/jaxserver/jmxserver/port/%22UserServiceImpl%22 > >>> > => get Mbean by service, %22 is an issue > >>> > which > >>> > I can't get rid of it, still working on it. > >>> > > >>> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/impl.service.ws.gsoc.cxf.apache.org > >>> > => get Mbean by part of service such as > >>> > {http://impl.service.ws.gsoc.cxf.apache.org/}CustomerServiceImpl -> > >>> > > >>> > > >>> > impl.service.ws.gsoc.cxf.apache.org > >>> > > >>> /demoserver/jaxserver/jmxserver/type/ > >>> or > >>> /demoserver/jaxserver/jmxserver/port/ > >>> > >>> is just too long > >>> > >>> /demoserver/jmx?mbean=somembeanname > >>> > >>> would probably do; well perhaps, introducing some "types" into URIs > >>> like /type/, /port/, etc, may also may make sense, but lets make sure > >>> we have a simple and straightforward approach for getting the list of > >>> all sorts of MBean representation > >>> > >>> > >>> Thanks, Sergey > >>> > > >>> > Thank you. > >>> > > >>> > Regards: > >>> > Shenglin Qiu > >>> > > >> > > > > > > -- > Sergey Beryozkin > > Application Integration Division of Talend > http://sberyozkin.blogspot.com