Hi Sergey:

Project has been synced to Github:

Browser:
https://github.com/dabaipang/services


Git address:
https://dabaip...@github.com/dabaipang/services.git
or
g...@github.com:dabaipang/services.git


Thank you.


Regards:
Shenglin Qiu



> From: dabaip...@hotmail.com
> To: sberyoz...@gmail.com
> CC: dev@cxf.apache.org
> Subject: RE: Expose MBeans in CXF
> Date: Tue, 31 May 2011 11:23:38 -0400
> 
> 
> Hi Sergey:
> 
> > > Function 1: (0 - 5 is continuous, no gap)
> > > Jmx Server:
> > > sub-resource locator
> > > http://localhost:8080/services/jmx/mbean/0
> > > http://localhost:8080/services/jmx/mbean/1
> > 
> > The id allocation (0, 1, etc) has to be thread safe
> 
> Done with:
> private synchronized Map<String, MBean> getMBeansMap(){
>  ....
> }
> My reason not using synchronized block but using synchronized method is:
> this guarantees the order on mbeansMap's initialization,  so when it's called 
> by a lot of requests, the followings will have to wait, unit the first one 
> finished,  after that, following requests will see mbeansMap has been 
> initialized, and simply return mbeansMap without initializing it again.
> 
> 
> > http://localhost:8080/services/jmx/objectname/org.apache.cxf:*
> > or
> > http://localhost:8080/services/jmx/objectname/org.apache.cxf
> > 
> > should also work
> > 
> > >
> 
> http://localhost:8080/services/jmx/objectname/org.apache.cxf:*
> is working.
> 
> > > Due to the URL duplication with /mbean/{id}, I can't put
> > > {searchtype}/{query}, so I put things like:
> > 
> > Personally I'd  prefer to keep a URI as minimal as possible.
> > 
> > /mbean/{id}
> > and
> > {searchtype}/{query}
> > 
> > do not duplicate each other given that /mbean/{id} is more specific
> > than {searchtype}/{query}.
> > Likewise /objectname/{objectname} is more specific than
> > {searchtype}/{query}, so consider dropping /search/ part,
> > we may have a dedicated /search handler later on.
> 
> Done by dedicating each request per method:
>     @GET
>     @POST
>     @Path("/list")
>     public MBeanCollection list()
> 
>     @Path("/mbean/")
>     public MBean locateMBean()
> 
> 
>     @GET
>     @POST
>     @Path("/type/{query}")
>     public MBeanCollection searchMBeansByType(@PathParam("query") String 
> query)
> 
> 
>     @GET
>     @POST
>     @Path("/port/{query}")
>     public MBeanCollection searchMBeansByPort(@PathParam("query") String 
> query)
> 
> 
>     @GET
>     @POST
>     @Path("/service/{query}")
>     public MBeanCollection searchMBeansByService(@PathParam("query") String 
> query)
> 
> 
>     @GET
>     @POST
>     @Path("/objectname/{objectname}")
>     public  MBeanCollection getComponent(@PathParam("objectname") String 
> objectname)
> 
> I remembered you mentioned to handle Exceptions once, currently I am still 
> 'throws' -ing them out, I will make the try catch block.
> Should I also add a new object which display the error or simply return empty?
> 
> 
> Thank you very much.
> 
> 
> Regards:
> Shenglin Qiu
> 
> 
> > Date: Tue, 31 May 2011 10:35:36 +0100
> > Subject: Re: Expose MBeans in CXF
> > From: sberyoz...@gmail.com
> > To: dev@cxf.apache.org
> > 
> > Hi Shenglin
> > 
> > Good progress, some comments below
> > >
> > > Function 1: (0 - 5 is continuous, no gap)
> > > Jmx Server:
> > > sub-resource locator
> > > http://localhost:8080/services/jmx/mbean/0
> > > http://localhost:8080/services/jmx/mbean/1
> > 
> > The id allocation (0, 1, etc) has to be thread safe
> > 
> > >
> > >
> > > Function 2:
> > > Note: search by bus.id, bus.id will be changed on every time server had 
> > > been
> > > bounced.
> > > http://localhost:8080/services/jmx/objectname/org.apache.cxf:bus.id=cxf28619341,*
> > > ...
> > that is ok, a user does not have to specify them as you demonstrated
> > with queries like
> > 
> > > http://localhost:8080/services/jmx/objectname/org.apache.cxf:port=%22CustomerServiceImpl%22,*
> > I guess
> > 
> > http://localhost:8080/services/jmx/objectname/org.apache.cxf:*
> > or
> > http://localhost:8080/services/jmx/objectname/org.apache.cxf
> > 
> > should also work
> > 
> > >
> > >
> > > I am only now use 2 methods to fulfill:
> > > 1 method for service/{serivce}, port/{port}, type/{type}
> > > 1 method for objectname/{objectname}
> > 
> > OK
> > 
> > >
> > > Due to the URL duplication with /mbean/{id}, I can't put
> > > {searchtype}/{query}, so I put things like:
> > 
> > Personally I'd  prefer to keep a URI as minimal as possible.
> > 
> > /mbean/{id}
> > and
> > {searchtype}/{query}
> > 
> > do not duplicate each other given that /mbean/{id} is more specific
> > than {searchtype}/{query}.
> > Likewise /objectname/{objectname} is more specific than
> > {searchtype}/{query}, so consider dropping /search/ part,
> > we may have a dedicated /search handler later on.
> > 
> > The other thing I forgot to mention, please remove all those
> > System.out.println, ping me please if you need some help with setting
> > up a remote debugging session
> > 
> > Thanks, Sergey
> > 
> > >
> > > Thank you so much!
> > >
> > > Regards:
> > > Shenglin Qiu
> > >
>                                         
                                          

Reply via email to