Jump to: navigation, search

EIG:Introduction

Introduction

Hi, Welcome to the ECF Integrators Guide. This guide was created because the community felt the need for documentation of the ECF code base. Proposed as an Eclipse project in 2003, ECF's code base and functionality has grown over the years to reach the point where it is no longer possible to know all functions by memory and where not one single person knows everything.

The reason to start this guide was born out of the need to be able to read into the complexity of ECF without having to wade through source code, blog postings and unfamiliar API.

This guide is a result of a community effort. The list of people that has contributed to this guide in alphabetical order:

  • Wim Jongman - Remain Software
  • Martin Petzold -
  • your name here

Who should use this guide

This guide was written for Java and OSGi programmers that want to extend their system to include:

  • communications between humans,
  • communication with web and peer based services,
  • communication between components

The reader should have some basic idea of networking and communications but does not need to be an expert. Some experience with OSGi and Eclipse is recommended.

How can I use the Network in My System

If this is the question on your mind when you were looking for information then you have reached the correct spot. This manual will explain how you can re-use the framework components of ECF.

The manual will enable you to:

  • Include p2p communications in your application
  • Make your Java objects available through the network
  • Use a distributed event admin
  • Understand the ECF API and Design

Overview

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur porta vehicula accumsan. Pellentesque in eros urna. Suspendisse sollicitudin molestie nibh semper viverra. Nullam fermentum diam lectus. Aenean metus arcu, ultrices quis feugiat nec, vehicula at enim. Aenean elit nisi, fermentum sed congue vel, consequat in libero. Pellentesque interdum tempor nisi sed aliquam. Nullam lacinia, enim et suscipit aliquet, neque quam laoreet tortor, eu dictum sapien libero vel felis. Donec viverra, nisl vitae molestie placerat, enim sapien lacinia diam, ac gravida nibh elit vitae erat. Suspendisse rutrum turpis pellentesque diam suscipit in ornare felis rhoncus. Vestibulum vitae metus metus. Fusce ut est est. Praesent interdum metus vitae diam hendrerit quis volutpat sapien condimentum. Curabitur mollis ornare lorem, et ultricies lacus cursus et. Vestibulum eget massa eu dui condimentum imperdiet. Phasellus porta, eros et dignissim semper, felis elit pretium libero, vel condimentum est magna quis purus. Ut tincidunt urna ac massa aliquam eget varius tellus interdum. Praesent quis nibh purus.

Duis nunc enim, lacinia et rhoncus ac, ornare ut lacus. Maecenas at arcu erat, nec tempor massa. Etiam ligula tellus, pharetra a scelerisque at, tempus sed tortor. Ut velit nulla, ultrices eget vestibulum a, egestas sit amet orci. Curabitur sed eros at dui blandit imperdiet quis et libero. Suspendisse iaculis semper enim, sit amet lacinia metus ullamcorper at. Etiam consectetur scelerisque tempus. Proin eros nisi, feugiat a accumsan vitae, ultrices tempus nulla. Aenean euismod cursus sapien in luctus. Mauris aliquam nunc at sem fringilla facilisis posuere orci faucibus. Nunc facilisis fermentum velit ultrices dapibus. Maecenas vel pharetra nulla. Vestibulum mattis dui quis justo aliquet eu hendrerit lorem egestas. Donec vestibulum dignissim odio, eget dictum lorem vehicula et.

Nulla mi lorem, ullamcorper eu sollicitudin non, fringilla et urna. Mauris sit amet diam ipsum. Vivamus risus nisi, pulvinar eu pretium lacinia, porta vel nunc. Maecenas pretium, felis sit amet malesuada molestie, lectus justo fermentum mauris, id euismod nisl lectus at quam. Nam congue lectus ac justo lacinia a placerat turpis sodales. Pellentesque sagittis nisi justo, a suscipit mauris. Vivamus consequat tempor lectus, et pretium urna pellentesque a. Aliquam posuere, massa a ullamcorper feugiat, magna augue gravida augue, at imperdiet metus neque in orci. Phasellus aliquam, massa eu tempus tempor, magna lorem posuere augue, id aliquet lorem ante in leo. Donec odio ante, blandit facilisis fringilla scelerisque, pharetra dignissim justo. Phasellus lobortis justo sed lectus volutpat malesuada sed in mi.

Basic Download Instructions

Installation via Marketplace

In Eclipse open the Eclipse Marketplace "Help -> Eclipse Marketplace..." and search for ECF.

Installation of ECF

The ECF Remote Services implementation depends upon some bundles included in Eclipse, so you should download and use (at least) Eclipse 3.6, You can download Eclipse here.

The ECF Remote Services bundles are included in the ECF SDK, which can be downloaded or installed via Marketplace or p2.

Install into Eclipse

To install ECF Remote Services (and/or other parts of ECF) into Eclipse:

  • From the Eclipse main menu, select Help->Install new software...
  • In the upper right of the dialog, click on Add... to add the ECF repository location
  • In the Name: field put: ECF 3.6, and in the Location: field put: http://download.eclipse.org/rt/ecf/3.6/site.p2 and click ok

Installecf1.png

  • Select the parts of ECF you would like and choose Next->. For example

Installecf2.png

  • Follow the rest of the install process

Adding ECF to the Target Platform (Basic Instructions)

When developing with Eclipse 3.5 or newer, it's possible to use a concept called a target platform. The target platform specifies the set of bundles used to compile and build against within the Eclipse PDE (plugin development environment). The default target platform is Eclipse itself, but the target platform can be set to any desired set of bundles. One way to develop applications that use some or all of ECF is to add the ECF SDK to your target platform. Then you are able to develop against and build using ECF functionality.

  1. Select from Menu: Window->Preferences->Plug-in Development->Target Platform
  2. Choose Add... button
  3. Initialize the Target Definition with Default: Default target for the running platform
  4. Specify Name: ECF SDK
  5. Choose Add... button
  6. Select Software Site and Next>
  7. Choose Add... button
  8. In Add Repository dialog
    1. Name: ECF SDK
    2. Location: http://download.eclipse.org/rt/ecf/latest/site.p2
  9. Choose OK
  10. Open the ECF tree item
  11. Select the Eclipse Communication Framework SDK check box
  12. Unselect Include Required Software. This option should not be selected.
  13. Choose Finish
  14. Select the target platform you just created (i.e. ECF SDK)
  15. Choose OK

Your target platform should then be set to your current Eclipse, plus the ECF SDK. Then you can refer to ECF classes in your own bundles/plugins.

Adding ECF to the Target Platform (Detailled Instructions)

To add ECF to your target platform:

  • In the Eclipse main menu, select Window->Preferences
  • In the Preferences tree (on left) navigate to Plug-in Development->Target Platform
  • From the buttons on the right, select either Add... to create/add a new target platform, or Edit... to add ECF to your existing target platform

Tpecf0.png

  • Select Software Site

Tpecf1.png

Installecf1.png

  • Open the Eclipse Communication Framework (ECF) tree item, and select the parts of ECF that you want in the target platform. The three available items are:
    • ECF Filetransfer Patch for Eclipse. This is an update to the ECF filetransfer and core plugins that are distributed as part of the Eclipse SDK (in support of p2)
    • ECF Remote Services Target Components. This is the OSGi Remote Services components of ECF only. If you are only interested in the ECF OSGi 4.2 Remote Services part of ECF, you can just select this one item to add to your target platform
    • ECF Target Components for Eclipse. This is all of ECF...both the Remote Services parts of ECF, as well as the other parts of Eclipse relevant to Eclipse (e.g. presence/IM, IRC client, collaboration, real-time shared editing, etc)

Tpecf3.png

  • IMPORTANT: Deselect the Include required software check box in the lower left. The default is selected, and so this must be explicitly deselected to successfully install ECF into a target platform. Explanation: There is a bug in the PDE editor that currently prevents ECF from distributing a repository that will allow things to succeed with the Include required software selected

Tpecf4.png

  • Click Finish. After some reading of the target platform and the ECF repo it should result in a output like the following

Tpecf5.png

  • Click Finish

Install in Felix or other OSGi

  1. Install pax-runner from http://paxrunner.ops4j.org/space/Pax+Runner
  2. pax-run --args=https://github.com/ECF/ECF4Felix/raw/master/eclipse.ecf.dosgi.args
  3. Open http://localhost:8080/system/console/


See README for doing this at https://github.com/ECF/ECF4Felix
EIG:Applications

Download Source Code

ECF uses the git revision control system. You need to install git before you can get the sources. Installing git from Eclipse is described on the EGit project page [1]. Once completed, open the "Git Repository Exploring" perspective.

Copy this link in your clipboard "git://git.eclipse.org/gitroot/ecf/org.eclipse.ecf.git". Then open the "Git Repositories" view and press the "Clone a Git repository .." button in the toolbar of the view as depicted below.

Before you do that,copy one of the following URLs into your clipboard:

This will fill in the repository location automatically.

EIG getting source 01.png

This will start a wizard:

EIG getting source 02.png

Make sure the repository is filled correctly in and press Next>.

EIG getting source 03.png

Press "Deselect All" and select the "master" branch and press Next>.

EIG getting source 04.png

Select a local directory to clone the repository and press finish.

Browsing the Source Tree

EIG getting source 05.png

After installation, the source repository will show in the "Git Repositories" view. Right click on the "Working Directory" node to import projects into the workspace.

The source tree is divided into several main topics.

Examples

ECF comes with a lot of examples in the Eclipse ECF source tree. Besides these examples, there are also a lot of examples contributed by Pavel Samolisov on the ECF Github repository. The Github repository contains a lot pf ECF stuff that is not (yet) cleared by the Eclipse Foundation. This could be caused by using non-EPL code or simply because we did not yet ask the Eclipse Foundation to look at it.

Google for the terms "ECF Github" to get to that repository.

Source for the Hello Examples

The following projects are located in the ecf git repository. These hello example projects are underneath root/examples/bundles.

org.eclipse.ecf.examples.remoteservices.hello
org.eclipse.ecf.examples.remoteservices.hello.host
org.eclipse.ecf.examples.remoteservices.hello.consumer
org.eclipse.ecf.examples.remoteservices.hello.ds.host
org.eclipse.ecf.examples.remoteservices.hello.ds.consumer
org.eclipse.ecf.examples.remoteservices.hello.host.rs
org.eclipse.ecf.examples.remoteservices.hello.consumer.rs
org.eclipse.ecf.examples.remoteservices.hello.consumer.edef

For the org.eclipse.ecf.examples.remoteservices.hello.consumer.edef bundle see also the documentation about this new file-based discovery format in Discovery with the Endpoint Description Extender Format.

Framework

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.

Incubation

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.

osgi

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.

protocols

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.

providers

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.

releng

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.

server-side

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.

tests

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac bibendum augue. Nunc massa massa, consequat a mattis vel, molestie ut mi. Curabitur vehicula elit ut lacus faucibus interdum. Aliquam a consequat nisi. Mauris at dui felis. Suspendisse nisl turpis, porttitor quis blandit a, laoreet ultrices tellus. Maecenas adipiscing euismod lorem. Etiam fermentum molestie risus nec bibendum. Proin placerat est ut lectus sodales fermentum. Nulla sit amet elementum est.