I really like the microbule project scope. We really need a project that can bring mircoservice development on CXF and OSGi to the same level as spring boot. I am only concerned that many different projects seem to cover parts of this at the moment. So if we are not careful we again will have too many separate efforts inside the already small OSGi space.

Some things you might want to look into:

In the CXF-DOSGi samples I have bndrun that shows how to package cxf and the felix http service.
https://github.com/apache/cxf-dosgi/blob/master/samples/soap/soap.bndrun
I used the /myservice addresses and it works quite well. Felix http service is a a lot simpler to deploy than pax web. As CXF-DOSGi just uses the HttpService it is easy to use pax-web when deployed in karaf and felix http service for microservice like deployments.

Another project to look into is the Aries JAX-RS-whiteboard. It is implementing the JAX-RS Whiteboard OSGi spec in Aries. Your project should have a big overlap with CXF-DOSGi and JAX-RS-whiteboard. I wonder if we could combine these efforts. One possible solution would be to concentrate the efforts of exporting REST services in JAX-RS whiteboard. Then your framework could concentrate on the remaining aspects of microservices like circuit breaker, discovery and packaging. The Aries JAX-RS whiteboard project is currently in a very early stage. So I think this should provide a great opportunity to get your ideas into the project.

Another interesting part of JAX-RS whiteboard is that it can provide OSGi enabled JAX-RS ClientBuilder instances. So that could be used to create clients without depending on CXF in the user code.

CXF-DOSGi on the other hand can provide fully transparent type safe clients as OSGi services which could also provide some value.

I am also working on getting zipkin and brave tracing working inside OSGi. See https://github.com/cschneider/brave-osgi-example Brave already offers JAX-RS interceptors for logging and I added a PR to offer a jax-rs Feature. That will make it really easy to add tracing to CXF and any other JAX-RS 2 impl.

Before that I was not aware that JAX-RS has such a nice portable Feature interface. So I think a lot of the microservice features like circuit breaker could be created in a portable way. This would give the user the free choice of the JAX-RS impl.

I also had pretty good experiences using bndtools to create the packaging into a runnable jar. The result is a lot smaller than karaf (~9mb for a full REST example) and matches the docker concepts better.

Sorry for this highly uncohesive list but I just wanted to give you some ideas to pursue :-)

Christian



On 22.11.2016 21:55, Benson Margulies wrote:
A small update with some irony here.

At the job I just finished today, we reached the conclusion that we
weren't getting much value out of Karaf and pax-web; no criticism
intended, we just don't dynamically provision, and we don't need any
HTTP except for CXF services. So, over the last few weeks, we
refactored the thing to use cxf-rt-transport-http-jetty in the Felix
container, with our own rather tiny class responsible for launching.
We lost a bit of flexibility in that we can't create an endpoint
'inside' of the namespace of another endpoint, but otherwise it works
just fine. The code that that I showed James is hardly changed at all.
The endpoint addresses now look like
"http://0.0.0.0:nnnnn/base/whatever"; instead "/whatever".  Maybe some
day there will be an ultramicrobule that anticipates this mode of
operation.





On Mon, Nov 21, 2016 at 7:13 PM, James Carman
<[email protected]> wrote:
Small update.  Microbule 0.1.0 release has been cut and will soon be
available in Maven Central (awaiting sync from Nexus OSS).  Enjoy, folks!

On Mon, Nov 21, 2016 at 1:03 PM James Carman <[email protected]>
wrote:

We've been working on a Microservices framework called "Microbule" which
leverages CXF and Karaf (hence the cross-post):

https://github.com/jwcarman/microbule

The idea is to make writing Microservices easy and fun, by providing many
of the oft-requested features for you out-of-the-box (CORS, Caching, JSON
transformation, validation, etc.).  There's a README page that explains how
to install/run Microbule in Karaf and how to write your own services.  If
you're interested, take it for a spin and let us know what you think.

Thanks,

James



--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com

Reply via email to