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
                                          

Reply via email to