On 2/22/2016 8:01 AM, Christian Schneider wrote:
In the mean time I looked a bit into the CXF DOSGi code. I think we
can split off the CXF part. So what remains is discovery support for
zookeeper and local discovery
and a core RemoteServiceAdmin impl that can be enhanced with
providers like CXF or for example an RMI or Hazelcast one.
I have extracted the interface the providers would need to implement.
I think we should be fine with something like blow. The details of
the interface of course can be discussed but the classes below
is what CXF DOSGi would need for the CXF support and it looks like
other providers should be possible too with such informations.
Thanks Christian for taking the time to look into this.
This is exactly what I was thinking. The topology manager is already
completely standalone, discover is defined in the spec and the RSA is
95% independent of
CXF itself. With a little refactoring it would be possible to use that
implementation with or without CXF-core and mix and match distribution
providers and discovery as needed.
Am 22.02.2016 um 19:09 schrieb Scott Lewis:
I also think that ECF has a similar set of interfaces. Maybe we can
even sync with them.
Yes it does. ECF has an API called the 'remote services API'
(org.eclipse.ecf.remoteservices bundle) [1], that the ECF Remote
Service Admin implementation uses to export and import remote services
(using whatever topology manager). All providers (us and others)
implement the appropriate parts of this remote services API, and they
then may be used as R6+-compliant RSA implementations...with any
desired discovery and/or topology manager.
It is unfortunate that the original spec did not already include such an
interface for distribution provider. However, if CXF-DOSGi and ECF could
agree on such an interface that would make it much easier to implement
RSA independent distribution providers and possibly even make it into
the specification eventually.
If the two of you see that as an option I guess there would be 2 ways it
could be done:
1. Create semantically identical interfaces in both CXF and ECF
namespace. Not ideal, but at least it makes it easy to provide an
implementation for both and no additional dependencies are needed on CXF
and ECF side.
2. Create the interface in another bundle and use it in both
implementations (in Aries maybe?).
@Christian
> I have extracted the interface the providers would need to implement.
I think we should be fine with something like blow.
Yes, those are exactly what I was using to bridge the fabric code and it
was a breeze to implement with those 2 classes.
ECF is quite a bit different implementation-wise but Scott would know
better if an interface like the CXF one could be made work in ECF.
Side-By-Side compare of integrating into CXF and ECF:
https://github.com/seeburger-ag/fabric8/blob/resurrect/fabric/fabric-cxf-hawt/src/main/java/com/seeburger/cxf/HawtConfigurationTypeHandler.java
https://github.com/seeburger-ag/fabric8/tree/resurrect/fabric/fabric-ecf-hawt/src/main/java/com/seeburger/ecf/container
Johannes