Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] getting started with ECF

Hi David,

David Donohue wrote:
ECF looks like just what I need.  I have 2 questions.

My first question is: which protocols, service APIs, & architecture
should I use?
I want to have clustered OSGi applications, to permit handling a large
load on my calculation-intensive Eclipse RAP web application.  I would
like to have my UI running as one OSGi instance.  This UI would
balance load of many users by connecting to distributed data servers,
each running as OSGi service, and each storing the data for a
different set of users.  These OSGi services might be running on the
same physical box or on distinct machines, within a network.  The
client would be doing data operations.  Ideally I could share objects
between client and servers.

Interesting. Incidently, I (Scott) have been working on a load balancing system for my employer (EclipseSource). I intend to present some of the work at Markus' and my ESE talk [1]. It load balances remote service requests (i.e. individual method calls on the service interface). We are using this to do load balancing of P2 planner the P2 planner can be computationally intensive for large numbers of features/IUs.

We are currently using JMS/ActiveMQ as the remote service provider for ECF...because (among other reasons), JMS/ActiveMQ has support for load balancing semantics (distributing messaging/requests over n Queue consumers), and we can just use that to do load balancing of remote services rather than implement the load balancing semantics ourselves.

My second question is: how do I get started?  I followed these instructions.
and I disabled r-OSGi on my Eclipse IDE.  However I still get this
message when starting the service host:
WARNING: Port 9278 already in use. This instance of R-OSGi is running
on port 9279

Yes. This will/does happen when multiple instances of r-OSGi are run localhost, because r-OSGi assumes a default port. r-OSGi does allow specification of the default port via a system property (i.e. see this page for some info about this [2] ). There is also an enhancement request to allow container creators to specify the port for r-OSGi to listen on [3].

So I thought I would use a different protocol.  I tried
ecf.generic.client and ecf.generic.server.  But when I start the host
I get an exception

...Caused by: java.lang.IllegalArgumentException: Port value out of range: -1
	at org.eclipse.ecf.provider.comm.tcp.Server.<init>(
	at org.eclipse.ecf.provider.generic.TCPServerSOContainerGroup.putOnTheAir(

This error is because the ecf generic provider needs to be told what it's URI/ID is upon construction (it doesn't have a default). This is done with a line like:

IContainer container = containerFactory.createContainer("ecf.generic.server","ecftcp://localhost:3282/server"); <- note the protocol,host,port,path

I've opened a new bug [4] to enhance the generic provider to allow a default URI (like above) to be set automatically. In the mean time, you will need to specify the ID yourself (e.g. as above).

Bonus question:
It seems that the ECF update site(s) have been down the last few days?

We are now making ECF daily builds (for ECF 3.1) available as p2 repos [5]...and you should be able to get the daily builds (for 3.1 stream) from those repos. If you are having any trouble with getting/installing from the given location, please do let us know.

Thanks for your help!

No problem. Please do let us all know what further needs you have WRT your project and we will do what we can to help.


David Donohue


Back to the top