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
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)


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?

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
http://localhost:8080/demoserver/jaxserver/jmxserver/list                       
                                              => get all Mbeans by 
ObjectName('*:type=*,*')  which query is *:type=*,*
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


Thank you.

Regards:
Shenglin Qiu



> Date: Thu, 12 May 2011 14:23:36 +0100
> Subject: Re: Expose MBeans in CXF
> From: sberyoz...@gmail.com
> To: dev@cxf.apache.org
> 
> Hi Shenglin
> 
> Thanks for the update. Can you please copy the summary from the
> previous email, where one possible approach going forward was
> discussed and describe what you've done so far in context of that
> summary ?
> Looks like you are progressing well, however I'm not exactly sure what
> exactly you are trying to do.
> 
> More comments inline
> 
> On Thu, May 12, 2011 at 1:53 PM, Shenglin Qiu <dabaip...@hotmail.com> wrote:
> >
> > Hi Sergey:
> >
> > I have tested my current code and these are working fine:
> > http://localhost:8080/demoserver/jaxserver/jmxserver/port/%22UserServiceImpl%22
> > http://localhost:8080/demoserver/jaxserver/jmxserver/type/Bus.Service.Endpoint
> >
> > I will work on this " sign which is %22 in the URL and try to remove it.
> 
> Please update us first on what you've done so far, why you are passing
> "UserServiceImpl" as the final segment is unclear at the moment
> 
> >
> > This is not working
> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/{http://web.management.gsoc.cxf.apache.org/}DJMXServer
> > which is :
> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/%7Bhttp://web.management.gsoc.cxf.apache.org/%7DJMXServer
> >
> > It simply return 404 error. I guess it's the restriction from CXF Rest 
> > inbound,
> 
> Well, I believe CXF 2.4.0 and CXF 2.3.5 have no problems at all with
> handling all sort of encoded URIs, earlier versions had some issues
> when matrix params were used or some specific characters were encoded.
> So try the latest versions.
> However, what I'd really encourage you to do is to make sure you
> understand why the above is not working, by debugging the JAX-RS
> runtime code and see what might be going wrong
> 
> > then I tried:
> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/service?{http://web.management.gsoc.cxf.apache.org/}DJMXServer
> > http://localhost:8080/demoserver/jaxserver/jmxserver/service/service={http://web.management.gsoc.cxf.apache.org/}DJMXServer
> > They didn't work neither. Because when = in request, it's still 404, and 
> > when ? in request, I only get 'service' as the @PathParam in the input, the 
> > rest of the part is lost.
> 
> '?' identifies the start of the query component,  so that is not
> captured, and please check why '=' is not working. Perhaps something
> to do with @Path values ?
> 
> >
> > So is there any way I can pass string like 'http://******' as a part of 
> > request in cxf?
> >
> Yes, pass it as a query parameter value, ex ?component=http://bar or
> as the value of the path segment
> 
> > BTW, I will have the NDA ready this week.
> >
> it's ICLA
> 
> http://www.apache.org/licenses/icla.txt
> 
> Please try to update the dev list at least twice per week and login to
> #cxf if you have questions. We should be finalizing by now the
> retrieval of MBean representations and start planning what to do next
> 
> Thanks, Sergey
> 
> > Thank you.
> >
> > Regards
> > Shenglin Qiu
> >
> >
> 
> 
> 
> -- 
> Sergey Beryozkin
> 
> Application Integration Division of Talend
> http://sberyozkin.blogspot.com
                                          

Reply via email to