cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Schneider <>
Subject Re: [ANNOUNCE] Introducing Microbule...
Date Wed, 23 Nov 2016 08:53:36 GMT
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.
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
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 :-)


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
> "" 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
> <> 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 <>
>> wrote:
>>> We've been working on a Microservices framework called "Microbule" which
>>> leverages CXF and Karaf (hence the cross-post):
>>> 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

Open Source Architect

View raw message