cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shenglin Qiu <dabaip...@hotmail.com>
Subject RE: Expose MBeans in CXF
Date Wed, 18 May 2011 13:32:03 GMT

Hi Sergey:
 
I was pulling name list out and when I type 'se', the first one now is secretary@apache.org,
my mistake.
 
I pulled your comment out and made @Todo replies:
 
> 
> Well, /soapdemo is confusing.
> Have the context named as "/services" or "/application" and set the
> address of SOAP endpoint as "/soap/greeter" or simply "/greeter" as
> you do now.
> 
Yes, it's done. I will use project name services

> I think you meant to say: > http://localhost:8080/soapdemo/jmx 
> which is the address of your JMX server endpoint which should be changed to say"http://localhost:8080/services/jmx".
Yes, I changed the project name as well as context path as you mentioned:
Project name: services
Context path: services

> http://localhost:8080/soapdemo/jmx/service/{http://server.gsoc.apache.org/}*
@Todo: I will get this done real quick. to make it like http://localhost:8080/services/jmx/service/{http://server.gsoc.apache.org/}*

> OK. Please remove MBeanCollection wrapper, you have another wrapper, MBeans.
> No need to have quotes around endpointName's value.How about having MBean representation
structured like this:
> <MBean>
> <domain>org.apache.cxf</domain>
> <canonicalName>
> org.apache.cxf:bus.id=cxf5663550,
> port="CustomerServiceImpl",
> service="{http://server.gsoc.apache.org/}CustomerServiceImpl",
> type=Bus.Service.Endpoint
> </canonicalName>
> <!-- this is another representation of canonical's name
> <attributes>
> <type>Bus.Service.Endpoint</type>
> <service>{http://server.gsoc.apache.org/}CustomerServiceImpl</service>
> <endpoint>CustomerServiceImpl</endpoint>
> <attributes>
> <!--This can be ignored for now<properties/>-->
> </MBean>

@Todo: I will remove <MBeanCollection>, and put <attributes> in.

> <MBean href="http://localhost:8080/soapdemo/jmx/mbean/1">
@Todo: I will add it real quick.
> So please update MBean class to have "href" attribute (with@XmlAttribute). 
> Have a '@Context UriInfo uriinfo' field in JMXServerclass. 
> When you create a response for /list or /service/*, etc, 
> useUriInfo to get to the *base* UriBuilder which will represent a URIlike 
> "http://localhost:8080/soapdemo/jmx". 
> Next add "mbean" and then a number like 1/2/etc which identifies a particular MBean,

> may be ashort objectname instead of the compete canonical name, etc, 
> so and have UriBuilder to return you'http://localhost:8080/soapdemo/jmx/mbean/1', etc:

> String href = builder.path("mbean").path(someUniqueKey).build().toString()
 
@Todo: I will have this unique key implemented in href="....", and:
            @Context
            UriInfo uriinfo
 
> Your JMXServer should have a subresource locator, with @Path("mbean") and without HttpMethod.
> This locator will return something like MBeanResource and that class,at this stage, 
> will have *only*a single @GET resource method with @Path("{key}") and 
> which will return the above MBean representaion only, without MBeans wrapper: GET http://localhost:8080/soapdemo/jmx/mbean/1

@Todo: subresource locator, with @Path("mbean") and without HttpMethod:
             I will have this done.
 
 
 

Thank you very much.

Regards:
Shenglin Qiu
 
 
 

 
> Date: Wed, 18 May 2011 11:38:24 +0100
> Subject: Re: Expose MBeans in CXF
> From: sberyozkin@gmail.com
> To: dev@cxf.apache.org
> 
> Hi Shenglin
> 
> Well done, you are progressing well.
> 
> Note that you don't have to start formatting the updates to the dev
> list, it's just
> the work as usual, keep it simple please :-). And don't CC to the secretary :-)
> 
> Some comments below.
> 
> > I am fully upgrade it to 2.4.0, I have some testing phase exceptions
> > ocurring even I don't have a test case in maven test src folder. I will
> > figure this out later after this doc.
> >
> If you are seeing some unrelated test failures when building the trunk
> then add '-Pfastinstall'
> 
> > The RAR src is attached, hope this 'soap' won't confuse you, it actually has
> > 1 soap inbound and 2 restful inbounds. I am always stuck at the naming,
> > previous demoserver has been down when I was upgrading, that's another
> > story, and I will fix it.
> >
> 
> Well, /soapdemo is confusing.
> Have the context named as "/services" or "/application" and set the
> address of SOAP endpoint as "/soap/greeter" or simply "/greeter" as
> you do now.
> 
> <snip/>
> >
> > Here are the 3 enabled inbound service, including 1 soap webservice and 2
> > Restful service:(They are up and running)
> >
> > http://localhost:8080/soapdemo/greeter?wsdl
> >
> > http://localhost:8080/soapdemo/customerservice/customers
> >
> > http://localhost:8080/soapdemo/customerservice/customer/firstname/Lois
> >
> > http://localhost:8080/soapdemo/customerservice/customer/id/1
> >
> > http://localhost:8080/soapdemo/userservice/users
> >
> > http://localhost:8080/soapdemo/userservice/user/1
> >
> 
> OK, lets have
> http://localhost:8080/services/greeter
> http://localhost:8080/services/customerservice
> http://localhost:8080/services/userservice
> 
> >
> >
> > And here is the demo inbound Restful service url which is holding the above
> > 3 services MBeans:
> >
> > http://localhost:8080/soapdemo/jmx/service/%7Bhttp:%2F%2Fserver.gsoc.apache.org%2F%7DCustomerServiceImpl
> >
> 
> I think you meant to say:
> 
> > http://localhost:8080/soapdemo/jmx
> 
> which is the address of your JMX server endpoint which should be changed to say
> "http://localhost:8080/services/jmx".
> 
> > which is:
> >
> > http://localhost:8080/soapdemo/jmx/service/{http://server.gsoc.apache.org/}CustomerServiceImpl
> >
> > http://localhost:8080/soapdemo/jmx/objectname/org.apache.cxf:type=Bus.Service.Endpoint,*
> >
> > http://localhost:8080/soapdemo/jmx/type/Bus.Service.Endpoint
> >
> > http://localhost:8080/soapdemo/jmx/list
> >
> >
> 
> Ok, so what are you saying is that you can have a list of all MBeans
> returned, using "/list" or a list of all MBeans which have a matching
> objectname or attribute (such as type, service, port, etc)
> 
> I like "http://localhost:8080/soapdemo/jmx/list and
> http://localhost:8080/soapdemo/jmx/objectname/" though I think we can
> simplify those, but right now make sure that you have something like
> @Path("{attribute}/{value}") for a method which serves /service/*, and
> /type/* requests. because 'service' and 'type' are attributes and we
> can have many attributes.
> 
> >
> > Request:
> >
> > http://localhost:8080/soapdemo/jmx/service/%7Bhttp:%2F%2Fserver.gsoc.apache.org%2F%7DCustomerServiceImpl
> >
> > Note: this is actually an url encoded string which is  from:
> >
> > http://localhost:8080/soapdemo/jmx/service/{http://server.gsoc.apache.org/}CustomerServiceImpl
> >
> OK, we should also be able to support
> 
> http://localhost:8080/soapdemo/jmx/service/{http://server.gsoc.apache.org/}*
> 
> which means get all MBeans which have a service attribute with
> namespace equal to 'http://server.gsoc.apache.org'
> 
> 
> > Response:
> >
> > <MBeanCollection>
> >
> >    <MBeans>
> >
> >       <MBean>
> >
> >
> > <canonicalName>org.apache.cxf:bus.id=cxf5663550,port="CustomerServiceImpl",service="{http://server.gsoc.apache.org/}CustomerServiceImpl",type=Bus.Service.Endpoint</canonicalName>
> >
> >          <domain>org.apache.cxf</domain>
> >
> >
> > <endpointName>"{http://server.gsoc.apache.org/}CustomerServiceImpl"</endpointName>
> >
> >       </MBean>
> >
> >    </MBeans>
> >
> > </MBeanCollection>
> >
> OK. Please remove MBeanCollection wrapper, you have another wrapper, MBeans.
> No need to have quotes around endpointName's value.
> How about having MBean representation structured like this:
> 
> <MBean>
> <domain>org.apache.cxf</domain>
> <canonicalName>org.apache.cxf:bus.id=cxf5663550,port="CustomerServiceImpl",service="{http://server.gsoc.apache.org/}CustomerServiceImpl",type=Bus.Service.Endpoint</canonicalName>
> <!-- this is another representation of canonical's name
> <attributes>
> <type>Bus.Service.Endpoint</type>
> <service>{http://server.gsoc.apache.org/}CustomerServiceImpl</service>
> <endpoint>CustomerServiceImpl</endpoint>
> <attributes>
> <!--
> This can be ignored for now
> <properties/>
> -->
> </MBean>
> 
> This will make it simpler for consumers to understand - we may support
> returning canonicalNames only or alternative, structured reps but for
> now just have MBean representation updated as suggested.
> 
> Now, there's one thing which is missing from the above representation
> and it is a link to a resource which will deal with a particular MBean
> (possible updates of properties, handling the notifications). We need
> to put it all into a more practical surface so it should be something
> like
> 
> <MBeans>
> <MBean href="http://localhost:8080/soapdemo/jmx/mbean/1">
> <domain>org.apache.cxf</domain>
> <canonicalName>org.apache.cxf:bus.id=cxf5663550,port="CustomerServiceImpl",service="{http://server.gsoc.apache.org/}CustomerServiceImpl",type=Bus.Service.Endpoint</canonicalName>
> <MBean>
> <MBean href="http://localhost:8080/soapdemo/jmx/mbean/2">
> <domain>org.apache.cxf</domain>
> <canonicalName>org.apache.cxf:bus.id=cxf5663551,port="UserServiceImpl",service="{http://server.gsoc.apache.org/}UserServiceImpl",type=Bus.Service.Endpoint</canonicalName>
> <MBean>
> </MBeans>
> 
> where http://localhost:8080/soapdemo/jmx/mbean/1,
> http://localhost:8080/soapdemo/jmx/mbean/2, etc, uniquely identify
> those individual MBeans only.
> 
> So please update MBean class to have "href" attribute (with
> @XmlAttribute). Have a '@Context UriInfo uriinfo' field in JMXServer
> class. When you create a response for /list or /service/*, etc, use
> UriInfo to get to the *base* UriBuilder which will represent a URI
> like "http://localhost:8080/soapdemo/jmx". Next add "mbean" and then a
> number like 1/2/etc which identifies a particular MBean, may be a
> short objectname instead of the compete canonical name, etc, so and
> have UriBuilder to return you
> 'http://localhost:8080/soapdemo/jmx/mbean/1', etc:
> 
> String href = builder.path("mbean").path(someUniqueKey).build().toString()
> 
> Now, the question is how to handle requests like
> 'http://localhost:8080/soapdemo/jmx/mbean/1'
> 
> Your JMXServer should have a subresource locator, with @Path("mbean")
> and without HttpMethod.
> This locator will return something like MBeanResource and that class,
> at this stage, will have *only*
> a single @GET resource method with @Path("{key}") and which will
> return the above MBean representaion only, without MBeans wrapper:
> 
> GET http://localhost:8080/soapdemo/jmx/mbean/1
> 
> returns
> 
> <MBean href="http://localhost:8080/soapdemo/jmx/mbean/1">
> <domain>org.apache.cxf</domain>
> <canonicalName>org.apache.cxf:bus.id=cxf5663550,port="CustomerServiceImpl",service="{http://server.gsoc.apache.org/}CustomerServiceImpl",type=Bus.Service.Endpoint</canonicalName>
> </MBean>
> 
> Having a subresource handly because at the next step we will start
> working on dealing with notifications/updatiing properties or invoking
> operations somehow when applicable.
> 
> Does it make sense ? If you have any questions or suggestions - please
> ask them here or ping me on #cxf
> I guess we have two weeks or so and then I'd like to discuss how
> LogBrowser can be extended to act as a consumer of your JMXServer
> 
> I'm removing the rest of your message to make it shorter, everything
> you posted there looked OK, those who are interested can check the
> previous message if needed for more info.
> 
> You are progressing very well.
> 
> Thanks, Sergey
> 
> >
> > Thank you.
> >ld
> > Regards:
> > Shenglin Qiu
> >
 		 	   		  
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message