Eclipse Server-Side Platform
The Eclipse Rich Client Platform, RCP, platform provides runtime frameworks to enable tool vendors to easily build and deliver integrated tools within a client-side environment. The success and popularity of these frameworks are extending beyond the traditional rich client platform into the server-side environment. This project, (Name), will provide an Eclipse server-side runtime distribution that provides the core frameworks and services needed to host server-side as well as distributed components.
The appeal of server-side runtime environments based upon OSGi is growing. IBM and BEA utilize Equinox as the kernel for their commercial J2EE servers. Open source technology offerings are available from SpringSource and Apache ServiceMix. However, these server-side deployment environments only provide an OSGi runtime environment based upon bundles and service components. An Eclipse server-side environment would also provide additional value by supporting a OSGi service applications as well as the Eclipse plug-in model. The adoption of OSGi is increasing. Each release of the Eclipse IDE includes additional tooling to development OSGi components. Books, articles and blogs are increasingly being published about OSGi. Awareness of OSGi is growing across multiple technology communities, within the Eclipse community as well as externally. The need exists for an Eclipse server-side platform that provides a consistent development and deployment model that is compatible with the RCP paradigm.
- Dual component model: Eclipse Plug-ins & OSGi Bundles
- OSGi service application model
- Consistent programming paradigm
- Common IDE tooling
- Shared model for both client and server runtimes
- Leverage Eclipse ecosystem
- Ability to deploy solution across complementary Eclipse based client-server environment
The (Name) project will provide an Eclipse server-side platform will provide the runtime in which server-side applications, bundles, and plug-ins are loaded, integrated, executed, and managed. The server-side platform will be based upon an Equinox P2 agent. In addition, (Name) will include:
- Service Application Manager – an OSGi application used to managed the execution of multiple OSGi applications
- Manageability – frameworks and services needed to remotely manage a headless Eclipse server-side environment
- SDK – IDE tooling, documentation, and examples to assist in the development and deployment of server-side components.
- Exemplary Service Applications – example OSGi service applications that illustrate how to build and deploy Eclipse server-side features.
(Name) will provide an Eclipse server-side runtime platform used to host vendor components. These components could be provided as OSGi Applications, Bundles, or Eclipse Plug-ins. An Eclipse product distribution will be provided for each of the supported execution environments. The (Name) product will provide the “main” Eclipse application for the server-side runtime. Vendors will be able to deploy their server-side features into (Name) using P2. (Name) can be used to host a single vendor feature, or multiple vendors features so that server-side integration is achieved.
Service Application Manager (SAM)
SAM is an OSGi application used to manage the execution of multiple OSGi applications. It is the primary OSGi service application (org.osgi.service.application.ApplicationDescriptor). This application will execute on the “main” thread as defined by the org.eclipse.core.runtime.application extension point. SAM will manage the lifecycle execution of secondary OSGi service applications. These applications will also be defined via org.eclipse.core.runtime.application extension point and be defined to run on “any” thread. SAM will provide scheduling functionality for service applications. Thus allowing service applications to run when the (Name) is started, or at scheduled intervals.
As a server-side environment, (Name) executes as a headless process. Consequently, it must provide mechanism to remotely manage its resources. (Name) will provide frameworks and services needed to remotely manage via JMX.
(Name) will provide the capability to run as a daemon process within the supported Eclipse execution environments.
To aide in the development of Eclipse server-side components, (Name) will provide an SDK that includes tooling, documentation, and examples.
Exemplary Service Applications
OSGi Service Application: Web Container
The (Name) Web Container feature is an OSGi service application that manages the lifecycle of a web servlet container. This service application feature will provide the necessary bundles and configuration parameters needed to deploy and start the web container within the Eclipse server-side platform.
OSGi Service Application: Database Container
The (Name) Database Container feature is an OSGi service application that manages the lifecycle of a database container. This service application feature will provide the necessary bundles and configuration parameters needed to deploy and start the database container within the Eclipse server-side platform.
(Name) will leverage the Equinox P2 technology to provide provisioning capabilities. The core (Name) distribution will include a P2 agent that will be used to install OSGi Service Application Features.
We propose that the (Name) project be a sub-project of the Eclipse Runtime top level project. Existing work from the Corona (Technology incubation project) be merged with the core runtime from Swordfish to establish a common Eclipse server-side runtime distribution.
- The Corona and Gyrex projects will be merged
- Swordfish would produce SOA server-side features deployed into (Name)
- TBD, Project Lead
- Oliver Wolf, (Sopera), committer
- Gunnar Wagenknecht (AGETO), committer
- Dennis O’Flynn (Compuware Corp), committer
- Compuware Corporation
Critical to the success of this project is participation of interested third parties to the community. We intend to reach out to this community and enlist the support of those interested in making a success of the (Name) project. We ask interested parties to contact news://news.eclipse.org/eclipse.rt.(Name) to express interest in contributing to the project.