Saturday, June 20, 2009

Distributed OSGi RI gets the RESTful edge

We have completed the initial CXF JAX-RS integration into the DOSGi RI.

There is a number of various approaches out there to expose a given OSGI service remotely - DOSGi is a good effort which describes how this task can be resolved in a standard way.

So now DOSGi users will be able to expose a given bean either as a SOAP or RESTful service. There will be more updates coming in shortly for a given bean be exposed as a combined SOAP/RESTful service and for properties be applied in a way which will let users easily configure a large number of services.

Now, as far as RESTful services are concerned, one can also expose them without applying JAX-RS annotations. I'm actually quite excited about this option despite the fact it kind of tries to sway you from being a good JAX-RS citizen :-). One thing is that one of the promises of DOSGi is that users should be able to expose the interfaces transparently, without forcing the knowledge of JAX-RS/etc on the remote consuming bundles. While there will be cases when having annotations is perfectly acceptable in DOSGi it is still nice to have an option to do it without annotations.

As a side note, applying the external model info to a lot of existing applications out there which are exposed as RESTful services using expensive adapters or can not afford changing the code looks really promising to me.

I would also like to thank Josh Holtzman for his contribution. More updates to follow soon.


James Strachan said...

Tunnelling RPC over HTTP doesn't sound at all RESTful to me. How is this any more RESTful than just using SOAP?

Sergey Beryozkin said...

It is not exactly what DOSGI is about.

I guess you would not disagree that exposing a given interface with (or without) JAX-RS annotations as a RESTful service is good enough ? So that is one thing DOSGI + CXF does now.

Now, about the client invocations

> Tunnelling RPC over HTTP doesn't sound at all RESTful to me

REST says nothing at all about the styles which can be used to consume the RESTful services.

> How is this any more RESTful than just using SOAP?

Using proxies & using SOAP are two completely different things, even though proxies & SOAP are working together.

"Tunnelling RPC over HTTP" ? Not sure what it is supposed to mean in respect to using CXF JAX-RS on the client side in DOSGi.

In CXF you can do proxy or http-centric restful api, and irrespectively of which one you choose it will be still a completely restful interaction with/consumption of restful services. Method invocations will translate into proper uris/http methods/etc