|
|
(26 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| ==ECF Generic Server== | | ==ECF Generic Server== |
− | [[Eclipse Communication Framework Project|ECF]] is currently using the [http://www.eclipse.org/equinox/server/http_in_container.php Equinox Servlet Incubator] to run and support the example collab application running on the 'ECF generic' provider.
| |
| | | |
− | ===Connecting to the ECF Generic Server===
| + | ECF Generic Servers can now be created, started, and managed dynamically using the [http://download.eclipse.org/rt/ecf/3.5Test/javadoc/org/eclipse/ecf/server/generic/IGenericServerContainerGroupFactory.html IGenericServerContainerGroupFactory] service started in the bundle activator of the org.eclipse.ecf.server.generic bundle. |
− | #[http://www.eclipse.org/ecf/downloads.php 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===
| + | Here some example code for creating/starting a simple ECF generic server |
− | | + | |
− | To start and configure an ECF Generic Server as an Eclipse Application
| + | |
| | | |
| <pre> | | <pre> |
− | eclipse.exe -application org.eclipse.ecf.provider.AppGenericServer
| + | // Get generic server container group factory service...e.g. via declarative service injection |
− | </pre>
| + | // or via ServiceTracker |
− | This will start a server with hostname=localhost, port=3282,
| + | IGenericServerContainerGroupFactory genericServerFactory = <get IGenericServerContainerGroupFactory service>; |
− | groupname=server...i.e. id=ecftcp://localhost:3282/server. The output upon
| + | |
− | startup looks like this:
| + | |
| | | |
− | <pre>
| + | // Create generic server container group for localhost, listen port=3282 |
− | Putting server localhost:3282 on the air...
| + | IGenericServerContainerGroup containerGroup = genericServerFactory.createContainerGroup("localhost",3282); |
− | Creating container with id=ecftcp://localhost:3282/server keepAlive=30000
| + | |
− | GenericServer localhost:3282 on the air.
| + | |
− | </pre>
| + | |
| | | |
− | It's also possible to provide the port groupname hostname and keepAlive (ms)
| + | // Create an ECF container within the container group, and give it path="/server" |
− | For example:
| + | // The resulting container's ID will be: ecftcp://localhost:3282/server |
| + | containerGroup.createContainer("/server"); |
| | | |
− | <pre>
| + | // start listening for client connections |
− | eclipse.exe -application org.eclipse.ecf.provider.AppGenericServer 3285 mygroup ecf.eclipse.org 20000
| + | containerGroup.startListening(); |
− | | + | |
− | 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.
| + | |
− | </pre>
| + | |
− | | + | |
− | or
| + | |
− | | + | |
− | <pre>
| + | |
− | 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.
| + | |
− | </pre>
| + | |
− | | + | |
− | ====Starting from Equinox Console====
| + | |
− | | + | |
− | It's possible to start multiple additional instances of the GenericServer application from within the Equinox Console. For example:
| + | |
− | | + | |
− | <pre>
| + | |
− | 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
| + | |
− | </pre>
| + | |
− | | + | |
− | 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 [https://bugs.eclipse.org/bugs/show_bug.cgi?id=193596 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.''
| + | |
− | | + | |
− | ====Server Configuration File====
| + | |
− | | + | |
− | Another way to start a number of servers and groups is to create a file with
| + | |
− | the server configuration...for example:
| + | |
− | <pre>
| + | |
− | <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>
| + | |
− | </pre>
| + | |
− | | + | |
− | If this content is in file ./server.xml
| + | |
− | Then the command line would be:
| + | |
− | | + | |
− | <pre>
| + | |
− | eclipse.exe -application org.eclipse.ecf.provider.AppGenericServer -config server.xml
| + | |
− | </pre>
| + | |
− | And the output would be:
| + | |
− | <pre>
| + | |
− | 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.
| + | |
− | </pre>
| + | |
− | | + | |
− | ===Setting up an ECF Generic Server with Equinox===
| + | |
− | | + | |
− | With the following enhancement: [https://bugs.eclipse.org/bugs/show_bug.cgi?id=112890 #112890], it's
| + | |
− | possible to configure an ECF generic server by providing a plugin with an extension for the
| + | |
− | <b>org.eclipse.ecf.server.generic.configure</b> extension point.
| + | |
− | | + | |
− | <ol>
| + | |
− | <li>Download the [http://download.eclipse.org/eclipse/equinox/ Equinox SDK 3.3M6 (or newer)] Note the location of the '''<equinoxhome>/plugins''' directory.
| + | |
− | </li>
| + | |
− | <li>Install the ECF SDK bundles to the '''<equinoxhome>/plugins''' directory. Get the ECF SDK [http://www.eclipse.org/ecf/downloads.php here].
| + | |
− | </li>
| + | |
− | <li>
| + | |
− | ECF server requires the Eclipse bundle: <b>org.eclipse.core.jobs</b>,which is not yet part of the Equinox distribution. The jobs bundle can be found in the <b><eclipsehome>/plugins</b> 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 <b>copy</b> 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.
| + | |
− | </li>
| + | |
− | | + | |
− | <li>
| + | |
− | Start/Run the generic server app as described above in 'Setting up an ECF Generic Server with Equinox'.
| + | |
− | </li>
| + | |
− | | + | |
− | OR
| + | |
− | | + | |
− | <li>
| + | |
− | Create a new plugin, and add the following extension to this new plugin:
| + | |
− | <pre>
| + | |
− | <extension
| + | |
− | point="org.eclipse.ecf.server.generic.configuration">
| + | |
− | <connector
| + | |
− | hostname="localhost"
| + | |
− | keepAlive="30000"
| + | |
− | port="3283">
| + | |
− | <group
| + | |
− | name="server">
| + | |
− | </group>
| + | |
− | </connector>
| + | |
− | </extension>
| + | |
− | </pre>
| + | |
− | | + | |
− | 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:
| + | |
− | <pre>
| + | |
− | <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>
| + | |
| </pre> | | </pre> |
| | | |
− | With the above, the ids for the two groups would be 'ecftcp://ecf.eclipse.org:9999/groupone' and 'ecftcp://ecf.eclipse.org:9999/grouptwo'.
| + | {{ECF}} |
− | </li>
| + | |
− | <li>
| + | |
− | Build and deploy this new plugin to server plugins directory, along with all the other ECF bundles.
| + | |
− | </li>
| + | |
− | <li>Start the <b>org.eclipse.ecf.server.generic</b> 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 [http://www.eclipse.org/equinox/server/ Equinox server].
| + | |
− | </li>
| + | |
− | </ol>
| + | |
| | | |
− | [[Category:Eclipse Communication Framework|Servers]] | + | [[Category:Eclipse Communication Framework]] |
| + | [[Category:ECF]] |
| + | [[Category:Servers]] |
ECF Generic Servers can now be created, started, and managed dynamically using the IGenericServerContainerGroupFactory service started in the bundle activator of the org.eclipse.ecf.server.generic bundle.