Difference between revisions of "ECF/Servers"

From Eclipsepedia

< ECF
Jump to: navigation, search
(Setting up an ECF Generic Server with Equinox: Wikify)
m (Server Configuration File)
Line 80: Line 80:
 
Another way to start a number of servers and groups is to create a file with
 
Another way to start a number of servers and groups is to create a file with
 
the server configuration...for example:
 
the server configuration...for example:
<pre>
+
 
 +
<source lang="xml">
 
<server>
 
<server>
 
         <connector protocol="ecftcp"  hostname="localhost" port="3282" timeout="30000">
 
         <connector protocol="ecftcp"  hostname="localhost" port="3282" timeout="30000">
Line 91: Line 92:
 
         </connector>
 
         </connector>
 
</server>
 
</server>
</pre>
+
</source>
  
 
If this content is in file ./server.xml
 
If this content is in file ./server.xml

Revision as of 04:21, 1 October 2008

Contents

ECF Generic Server

ECF is currently using the Equinox Servlet Incubator to run and support the example collab application running on the 'ECF generic' provider.

Connecting to the ECF Generic Server

  1. Download and install the ECF SDK.
  2. Right-click on a project within your workspace.
  3. Choose 'Communications' -> 'Connect Project to Collaboration Group...' from the popup menu.
  4. Select the 'ECF generic' provider from the list.
  5. Use ecftcp://ecf.eclipse.org:3282/server as the connect URI.
  6. 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 -console -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 -console -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.

or

eclipse.exe -console -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: bug 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.

OR

  • 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.
Eclipse Communication Framework
API
API DocumentationJavadocProvidersECF/Bot Framework
Development
Development GuidelinesIntegrators Guide