ECF Generic Server
Connecting to the ECF Generic Server
- Download and install the ECF SDK.
- Right-click on a project within your workspace.
- Choose 'ECF' -> 'Connect Project...' from the popup menu.
- Select the 'ECF generic' provider from the list.
- Use ecftcp://ecf.eclipse.org:3282/server as the connect URI.
- Choose a nickname and then select the 'OK' button.
Starting an ECF Generic Server as Eclipse Application
To start and configure an ECF Generic Server as an Eclipse Application
eclipse.exe -application org.eclipse.ecf.provider.AppGenericServer
This will start a server with hostname=localhost, port=3282, groupname=server...i.e. id=ecftcp://localhost:3282/server. The output upon startup looks like this:
Putting server localhost:3282 on the air... Creating container with id=ecftcp://localhost:3282/server keepAlive=30000 GenericServer localhost:3282 on the air.
It's also possible to provide the port groupname hostname and keepAlive (ms) For example:
eclipse.exe -application org.eclipse.ecf.provider.AppGenericServer 3285 mygroup ecf.eclipse.org 20000 Putting server ecf.eclipse.org:3285 on the air... Creating container with id=ecftcp://ecf.eclipse.org:3285/mygroup keepAlive=20000 GenericServer ecf.eclipse.org:3285 on the air.
eclipse.exe -application org.eclipse.ecf.provider.AppGenericServer 3333 Putting server localhost:3333 on the air... Creating container with id=ecftcp://localhost:3333/server keepAlive=30000 GenericServer localhost:3333 on the air.
Starting from Equinox Console
It's possible to start multiple additional instances of the GenericServer application from within the Equinox Console. For example:
java -Declipse.application.registerDescriptors=true -Declipse.ignoreApp=false -jar org.eclipse.osgi -console -noExit osgi> startApp org.eclipse.ecf.provider.GenericServer 3333 osgi> startApp org.eclipse.ecf.provider.GenericServer 3285 mygroup ecf.eclipse.org 20000
This can be used in addition to, or instead of, the -application argument. Note that with the -application argument, if that main server/application closes, then all other running apps are closed. If you want the VM to remain running, supply -noExit and run individual instances as above.
NB the reason for 'AppGenericServer' and 'GenericServer' is due to a workaround for a bug in Equinox 3.3.0. If this is fixed and released in Equinox 3.3.1, then you'll be able to use the same name for both -application and startApp equivalents.
A typical eclipseless Equinox directory structure will look like this.
somedir/ org.eclipse.core.runtime.jar org.eclipse.equinox.common.jar org.eclipse.osgi.jar org.eclipse.update.configurator.jar configuration/ config.ini plugins/ (jobs plugin + equinox plugins + ecf plugins)
Note the four jars in the "root" directory.
Server Configuration File
Another way to start a number of servers and groups is to create a file with the server configuration...for example:
<server> <connector protocol="ecftcp" hostname="localhost" port="3282" timeout="30000"> <group name="server"/> <group name="foobar"/> </connector> <connector protocol="ecftcp" hostname="localhost" port="3283" timeout="30000"> <group name="server"/> <group name="foobar"/> </connector> </server>
If this content is in file ./server.xml Then the command line would be:
eclipse.exe -application org.eclipse.ecf.provider.AppGenericServer -config server.xml
And the output would be:
Putting server localhost:3282 on the air... Creating container with id=ecftcp://localhost:3282/server keepAlive=30000 Creating container with id=ecftcp://localhost:3282/foobar keepAlive=30000 GenericServer localhost:3282 on the air. Putting server localhost:3283 on the air... Creating container with id=ecftcp://localhost:3283/server keepAlive=30000 Creating container with id=ecftcp://localhost:3283/foobar keepAlive=30000 GenericServer localhost:3283 on the air.
Setting up an ECF Generic Server with Equinox
With the following enhancement: #112890, it's possible to configure an ECF generic server by providing a plugin with an extension for the org.eclipse.ecf.server.generic.configure extension point.
- Download the Equinox SDK 3.3M6 (or newer) Note the location of the <equinoxhome>/plugins directory.
- Install the ECF SDK bundles to the <equinoxhome>/plugins directory. Get the ECF SDK here.
- ECF server requires the Eclipse bundle: org.eclipse.core.jobs,which is not yet part of the Equinox distribution. The jobs bundle can be found in the <eclipsehome>/plugins directory of an Eclipse installation, and has a name similar to: org.eclipse.core.jobs_3.3.0.v20070423.jar (the 3.3.0.v20070423 may be different). You should copy this jar into the <equinoxhome>/plugins directory. Make sure you do not remove or rename the original copy of this bundle as it will disable that copy of Eclipse.
- Start/Run the generic server app as described above in Starting an ECF Generic Server as Eclipse Application.
Create a new plugin, and add the following extension to this new plugin:
<extension point="org.eclipse.ecf.server.generic.configuration"> <connector hostname="localhost" keepAlive="30000" port="3283"> <group name="server"> </group> </connector> </extension>
With the above, the server id would be 'ecftcp://localhost:3283/server'.
Change the values of 'hostname', 'keepAlive', 'port' for the connector, and add groups as desired/appropriate. For example:
<extension point="org.eclipse.ecf.server.generic.configuration"> <connector hostname="ecf.eclipse.org" keepAlive="20000" port="9999"> <group name="groupone"> </group> <group name="grouptwo"> </group> </connector> </extension>
With the above, the ids for the two groups would be 'ecftcp://ecf.eclipse.org:9999/groupone' and 'ecftcp://ecf.eclipse.org:9999/grouptwo'.
- Build and deploy this new plugin to server plugins directory, along with all the other ECF bundles.
- Start the org.eclipse.ecf.server.generic bundle. This can be done via the server console (with 'start org.eclipse.ecf.server.generic') or can be setup to start automatically via the <appserverhome>webapps/bridge/WEB-INF/platform/configuration/config.ini file. Which is chosen is dependent upon how one has setup the Equinox server.