Hi,
One thing which is worth noting that a portability of JAX-RS 2.0 Features (and indeed other providers) is only achievable if they are also implemented in a portable way...

Cheers, Sergey
On 23/11/16 08:53, Christian Schneider wrote:
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





--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Reply via email to