My understanding of JBI specs is that service providers are accessible through endpoints. On the other hand I don't see any need of having endpoint for service consumers. What I observed in ServiceMix is that components create endpoints for both consumers and providers (this seems to come from Common framework). For example, it's welcomed that FileSender creates service, but FilePoller doesn't require to activate any endpoint as it acts as consumer only.
The problem is that ClusterEngine seems to be tied with this ServiceMix Commons behaviour: I've got some issues with a pure JBI component (not based on ServiceMix Common) in clustered environment. Similar to ServiceMix file component, my component supports 2 symetric features:
- poller is a consumer (does not activate service endpoint), installed on node 1
- writer is a provider (activate service endpoint), installed on node 2
Service unit manager is not based XBean but JAXB instead and I would like to hide cluster registration object. So I built a bundle that listen for endpoint registry events and create automatically ClusterRegistration OSGi service implicitly for each active endpoint. Provider should be implicitly accessible from node 1, but as poller does not register any ClusterRegistration service, the scenario "consumer on node 1 / provider on node 2" fails.
Question: is that possible to use Cluster Engine with components that are not based on ServiceMix Common framework? (without activated endpoint for service consumer)
Thanks in advance