cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Bosschaert <david.bosscha...@gmail.com>
Subject CXF-DOSGi Zookeeper discovery data transformation
Date Fri, 22 Jun 2012 14:58:47 GMT
Hi all,

I'm currently playing with CXF-DOSGi in the context of a cloud setup
and I'm also using the Zookeeper-based discovery.
The problem that I'm facing is that the host and port as known by the
local framework (running inside a cloud instance) is not the same as
the public host and port. Obviously to be able to access the remoted
service from outside you need the public host and port.

So I came up with a DiscoveryPlugin interface which bundles can
register in the OSGi Service Registry (in the true OSGi Whiteboard
pattern way) to support such a transformation.
It has the following API:

public interface DiscoveryPlugin {
    String process(Map<String, Object> mutableMap, String fullPath);
}

Before the ZooKeeper client code in CXF registers the endpoint with
the ZooKeeper server all registered DiscoveryPlugin are given a chance
to process the data. They can change the properties of the service
registration and change the path. So in my case I can change the URL
where the local framework thinks it registers it (e.g.
127.5.3.123:8080) to the URL from where things are publicly accessible
(e.g. my.cloud.instance:80).

Would everyone be happy with me adding this feature to the
cxf-dosgi-ri-discovery-distributed module? It's backward compatible -
if you have no plugins registered nothing happens.

Cheers,

David

Mime
View raw message