<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta name="copyright" content="Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html. Contributors: IBM Corporation - initial API and implementation" />
<meta name="DC.rights.owner" content="(C) Copyright 2000, 2009" />
<meta content="public" name="security" />
<meta content="index,follow" name="Robots" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta content="task" name="DC.Type" />
<meta name="DC.Title" content="Adding the Apache Tomcat runtimes" />
<meta name="abstract" content="Using the Preferences page, you can define the server runtime environment definitions for the Apache Tomcat server. To define these definitions, complete the following:" />
<meta name="description" content="Using the Preferences page, you can define the server runtime environment definitions for the Apache Tomcat server. To define these definitions, complete the following:" />
<meta content="servers, Apache Tomcat, defining runtime environment, runtime environments, workbench, Apache Tomcat server runtime environment" name="DC.subject" />
<meta content="servers, Apache Tomcat, defining runtime environment, runtime environments, workbench, Apache Tomcat server runtime environment" name="keywords" />
<meta scheme="URI" name="DC.Relation" content="http://wiki.eclipse.org/WTP_Tomcat_FAQ" />
<meta content="XHTML" name="DC.Format" />
<meta content="twtomprf_jst" name="DC.Identifier" />
<meta content="en-us" name="DC.Language" />
<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
<title>Adding the Apache Tomcat runtimes</title>
</head>
<body id="twtomprf_jst"><a name="twtomprf_jst"><!-- --></a>


<h1 class="topictitle1">Adding the Apache Tomcat runtimes</h1>



<div><p>Using the Preferences page, you can define
the server runtime environment definitions for the Apache Tomcat server.
To define these definitions, complete the following: </p>

<a name="twtomprf_jst__steps"><!-- --></a><ol id="twtomprf_jst__steps">
<li class="stepexpand"><span>From the Window menu, select  <span class="uicontrol">Preferences</span>.</span>
</li>

<li class="stepexpand"><span>In the Preferences window, expand  <span class="uicontrol">Server</span> and
then select  <span class="uicontrol">Runtime Environments</span>.</span></li>

<li class="stepexpand"><span>On the Server Runtime Environments page, click <span class="uicontrol">Add</span>.</span>
 The New Server Runtime Environment wizard opens.</li>

<li class="stepexpand"><span>On the New Server Runtime Environment page, expand <span class="uicontrol">Apache</span>.</span>
</li>

<li class="stepexpand"><span>Select one of the following supported Apache Tomcat servers:</span>
<ul>
<li>Apache Tomcat v3.2</li>

<li>Apache Tomcat v4.0</li>

<li>Apache Tomcat v4.1</li>

<li>Apache Tomcat v5.0</li>

<li>Apache Tomcat v5.5</li>

<li>Apache Tomcat v6.0</li>

<li>Apache Tomcat v7.0</li>

</ul>

</li>

<li class="stepexpand"><span>When you add a server runtime environment, by default a
server is created and added as an entry in the Servers view. If you
want to only add the server runtime environment and not create the
server in the Servers view, clear the <span class="uicontrol">Create a new local
server</span> check box.</span></li>

<li class="stepexpand"><span>The Tomcat Server page opens when you click  <span class="uicontrol">Next</span>.</span>
</li>

<li class="stepexpand"><span>In the <span class="uicontrol">Tomcat installation directory</span> field,
type or browse to the directory where you extracted the installation
files of Apache Tomcat.</span>  For example, <var class="varname">x</var>:\apache-tomcat-6.0.13,
where <var class="varname">x</var> is the installation directory of the Apache
Tomcat server.</li>

<li class="stepexpand"><span>Click <span class="uicontrol">Finish</span>.</span></li>

</ol>

</div>

<div><div class="relinfo"><strong>Related information</strong><br />
<div><a href="http://wiki.eclipse.org/WTP_Tomcat_FAQ" target="_blank" title="See this link for additional information using the Apache Tomcat server with the workbench.">WTP Tomcat FAQ</a></div>
</div>
</div>

</body>
</html>