<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="IBM">
   <title>Package-level Javadoc</title>
</head>
<body>
Provides core support for an internal Eclipse application server.

<h2>
Package Specification</h2>
The package defines the interface for contributing an application server
as well as the class that lets clients run their plugin contributed web applications.
<p>The actual application server an optional piece that plugs
in to the platform's standard <tt>org.eclipse.help.appserver.server</tt> extension
point. Only one application server will be selected from the list of all contributors.
The platform provides its own default application server.
In general terms, implementing an application server involves:
<ul>
<li>
Implementing the <tt>IWebappServer</tt> interface to allow starting/stopping the app server, 
starting/stopping a web application.</li>

<li>
Declaring an extension of the <tt>org.eclipse.help.appserver.server</tt> extension
point that mentions the name of that class.</li>

<li>
Ensuring that the web application have access to classes loaded by a customized class loader.
 </li>
</ul>
Note that the platform declares a plug-in (<tt>org.eclipse.tomcat</tt>)
which implements the server extension point. This plug-in is declared as default,
and any other replacement must not be defined as a default server. 
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
</body>
</html>
