This practical can be completed in a 3-hour session.
This installation and configuration guide is applicable to Tomcat 9, and possibly the earlier versions. Take note that Tomcat 9 requires JDK 8 and later.
Introduction
Download Tomcat 6 binaries from the Apache Tomcat website to your Downloads folder. How to install Tomcat 6 on Mac OS X Snow Leopard. This signature should be matched against the KEYS file which contains the OpenPGP keys of Tomcat's Release Managers. We also provide SHA512 checksums for every release file. After you download the file, you should calculate a checksum for your download, and make sure it is the same as ours. First of all learn the steps of 'How to download Apache Tomcat server on your computer'. Click the link. It takes various steps for installing and configuring the Tomcat 6.0. For Windows OS, Tomcat comes in two forms:.zip file and.exe file (the Windows installer file). Here we are exploring the installation process by using the.exe file. Today (2006-04-05) I disovered a somewhat different recipe to running Tomcat 5.5.16 on Mac OS X 10.4.6. Today's Tomcat (v5.5) wants to run on Java 5, but Apple's command line defaults to Java 4 (1.4.2). Surprisingly, Tomcat's script works around this. I did not need to set any environment variables (JAVAHOME).
Web Application (Webapp)
A web application (or webapp), unlike standalone application, runs over the Internet. Examples of webapps are google, amazon, facebook and twitter.
A webapp is typically a 3-tier (or multi-tier) client-server database application run over the Internet as illustrated in the diagram below. It comprises five components:
A typical use case is:
Hypertext Transfer Protocol (HTTP)
Apache Tomcat HTTP Server
Apache Tomcat is a Java-capable HTTP server, which could execute special Java programs known as 'Java Servlet' and 'Java Server Pages (JSP)'. Tomcat is an open-source project, under the 'Apache Software Foundation' (which also provides the most use, open-source, industrial-strength Apache HTTP Server). The mother site for Tomcat is http://tomcat.apache.org. Alternatively, you can find tomcat via the Apache mother site @ http://www.apache.org.
Tomcat was originally written by James Duncan Davison (then working in Sun) in 1998, based on an earlier Sun's server called Java Web Server (JWS). It began at version 3.0 after JWS 2.1 it replaced. Sun subsequently made Tomcat open-source and gave it to Apache.
The various Tomcat releases are:
How to Install Tomcat and Get Started with Java Servlet ProgrammingSTEP 0: Create a Directory to Keep all your Works
I shall assume that you have created a directory called '
c:myWebProject ' (for Windows) or '~myWebProject ' (for macOS) in your earlier exercises. Do it otherwise. This step is important; otherwise, you will be out-of-sync with this article and will not be able to find your files later.
STEP 1: Download and Install Tomcat
For Windows
Take note of Your Tomcat Installed Directory. Hereafter, I shall refer to the Tomcat installed directory as
<TOMCAT_HOME> .
For macOS
Take note of Your Tomcat Installed Directory. Hereafter, I shall refer to the Tomcat installed directory as
<TOMCAT_HOME> .
For Ubuntu
Read 'How to Install Tomcat on Ubuntu'. You need to switch between these two articles.
For academic learning, I recommend '
zip ' (or 'tar.gz ') package, as you could simply delete the entire directory when Tomcat is no longer needed (without running any un-installer). You are free to move or rename the Tomcat's installed directory. You can install (unzip) multiple copies of Tomcat in the same machine.
Tomcat's Sub-Directories
Take a quick look at the Tomcat installed directory. It contains the these sub-directories:
STEP 2: Create an Environment Variable JAVA_HOME
(For Windows)
You need to create an environment variable (system variable available to all applications) called '
JAVA_HOME ', and set it to your JDK installed directory.
Follow the steps HERE!
(For macOS)
Skip this step. No need to do anything.
STEP 3: Configure the Tomcat Server
The Tomcat configuration files, in XML format, are located in the '
conf ' sub-directory of your Tomcat installed directory, e.g. 'c:myWebProjecttomcatconf ' (for Windows) or '~/myWebProject/tomcat/conf ' (for macOS). The important configuration files are:
Make a BACKUP of the configuration files before you proceed!!!
Step 3(a) 'confserver.xml' - Set the TCP Port Number
Use a programming text editor (e.g., Sublime Text, Atom) to open the configuration file '
server.xml '.
The default TCP port number configured in Tomcat is 8080, you may choose any number between 1024 and 65535, which is not used by existing applications. We shall choose 9999 in this article. (For production server, you should use port 80, which is pre-assigned to HTTP server as the default port number.)
Locate the following lines (around Line 69) that define the HTTP connector, and change
port='8080' to port='9999' .
Step 3(b) 'confweb.xml' - Enable Directory Listing
Again, use a programming text editor to open the configuration file '
web.xml '.
We shall enable directory listing by changing '
listings ' from 'false ' to 'true ' for the 'default ' servlet. This is handy for test system, but not for production system for security.
Locate the following lines (around Line 122) that define the '
default ' servlet; and change the 'listings ' from 'false ' to 'true '.
Step 3(c) 'confcontext.xml' - Enabling Automatic Reload
We shall add the attribute
reloadable='true' to the <Context> element to enable automatic reload after code changes. Again, this is handy for test system but not recommended for production, due to the overhead of detecting changes.
Locate the
<Context> start element (around Line 19), and change it to <Context reloadable='true'> .
STEP 4: Start Tomcat Server
The Tomcat's executable programs and scripts are kept in the '
bin ' sub-directory of the Tomcat installed directory.
Step 4(a) Start Server
For Windows
I shall assume that Tomcat is installed in '
c:myWebProjecttomcat '. Launch a CMD shell and issue:
For macOS
I assume that Tomcat is installed in '
~/myWebProject/tomcat '. To start the Tomcat server, open a new 'Terminal' and issue:
A new Tomcat console window appears (with Java's coffee-cup logo as icon). Study the messages on the console. Look out for the Tomcat's port number. Double check that Tomcat is running on port 9999 as configured.
Error messages will be sent to this console.
System.out.println() issued by your Java servlets will also be sent to this console.
(Skip Unless ...) Cannot Start Tomcat: Read 'How to Debug'.
Step 4(b) Start a Client to Access the Server
Start a browser (Firefox, Chrome) as an HTTP client. Issue URL '
http://localhost:9999 ' to access the Tomcat server's welcome page. The hostname 'localhost ' (with IP address of 127.0.0.1 ) is meant for local loop-back testing within the same machine. For users on the other machines over the net, they have to use the server's IP address or DNS domain name in the form of 'http://serverHostnameOrIPAddress:9999 '.
(Optional) Try issuing URL
http://localhost:9999/examples to view the servlet and JSP examples. Try running some of the servlet examples.
Step 4(c) Shutdown Server
For Windows
You can shutdown the tomcat server by either:
For macOS
To shutdown the Tomcat server:
WARNING: You MUST properly shutdown the Tomcat. DO NOT kill the CAT by pushing the window's 'CLOSE' button.
STEP 5: Develop and Deploy a WebAppStep 5(a) Create the Directory Structure for your WebApp
Let's call our first webapp '
hello '. Goto Tomcat's 'webapps ' sub-directory and create the following directory structure for your webapp 'hello ' (as illustrated). The directory names are case-sensitive!!
You need to keep your web resources (e.g., HTMLs, CSSs, images, scripts, servlets, JSPs) in the proper directories:
You should RE-START your Tomcat server to pick up the
hello webapp. Check the Tomcat's console to confirm that 'hello ' application has been properly deployed:
You can issue the following URL to access the web application '
hello ':
You should see the directory listing of the directory '
<TOMCAT_HOME>webappshello ', which shall be empty at this point of time. Take note that we have earlier enabled directory listing in 'web.xml '. Otherwise, you will get an error '404 Not Found'.
Step 5(b) Write a Welcome Page
Create the following HTML page and save as '
HelloHome.html ' in your webapp's root directory 'hello '.
You can browse this page by issuing this URL:
Alternatively, you can issue an URL to your webapp's root '
hello ':
The server will return the directory listing of your base directory. You can then click on '
HelloHome.html '.
Rename '
HelloHome.html ' to 'index.html ', and issue a directory request again:
Now, the server will redirect the directory request to '
index.html ', if the root directory contains an 'index.html ', instead of serving the directory listing.
You can check out the home page of your peers by issuing:
with a valid ' YourPeerHostnameOrIPAddr ', provided that your peer has started his tomcat server and his firewall does not block your access. You can use command such as 'ipconfig ' (Windows), 'ifconfig ' (macOS and Unix) to find your IP address.
(Skip Unless...) The likely errors are 'Unable to Connect', 'Internet Explorer cannot display the web page', and '404 File Not Found'. Read 'How to Debug' section.
STEP 6: Write a 'Hello-world' Java Servlet
A servlet is Java program that runs inside a Java-capable HTTP Server, such as Apache Tomcat. A web user invokes a servlet by issuing an appropriate URL from a web browser (HTTP client).
Before you proceed, I shall assume that you are familiar with Java Programming and have installed the followings:
Step 6(a) Write a 'Hello-world' Java Servlet
A Java servlet is a Java program that runs inside a HTTP server. A web user invokes a servlet by issuing a URL from a browser (or HTTP client).
In this example, we are going to write a Java servlet called
HelloServlet , which says 'Hello, world!'. We will configure such that web users can invoke this servlet by issuing URL http://ip_addr:port/hello/sayhello from their browser, as illustrated:
Write the following source codes called '
HelloServlet.java ' and save it under your application 'classes ' directory (i.e., '<TOMCAT_HOME>webappshelloWEB-INFclassesHelloServlet.java '). This servlet says 'Hello', echoes some request information, and prints a random number upon each request.
Take note that in Line 7, we configure this
HelloServlet to URL '/sayhello ' via annotation @WebServlet('/sayhello') , which is applicable to Tomcat 7 onwards. In other words, the full URL shall be http://ip_addr:port/hello/sayhello to trigger this HelloServlet .
Step 6(b) Compiling the Servlet (DIFFICULT)
We need the Java Servlet API to compile the servlet. Servlet API is NOT part of JDK. Tomcat provides a copy in
<TOMCAT_HOME>/lib/servlet-api.jar . We need to include this JAR file in the compilation via the -cp (classpath) option as follows:
(For macOS)
The output of the compilation is '
HelloServlet.class '.
Use your 'File Explorer' to check the '
webapps/hello/WEB-INF/classes ' folder to make sure that 'HelloServlet.class ' has been created in the right place.
Step 6(c) Invoke the Servlet
Restart your Tomcat Server (just in case ...).
To invoke this servlet, start a browser, and issue the request URL configured as follows:
You shall see the output of the servlet displayed in your web browser.
Refresh the browser, you shall see a new random number upon each refresh. In other word, the
doGet() method of the servlet runs once per request.
View Page Source
(For Firefox and Chrome) Right-click the page ⇒ 'View Page Source' to look at the output received by the web browser (which is returned by the server). Take note that the web browser receives only the output of the servlet (generated via the
out.println() statements). The client has no access to the servlet source codes (which may contain confidential information).
(For macOS's Safari browser) You need to enable 'Developer Menu' under the 'Preferences' to enable the 'View Source' menu.
(Skip Unless...) The likely errors are '404 File Not Found' and '500 Internal Server Error'. Read 'How to debug' Section.
(Optional) Inspecting HTTP Request and Response Messages
When you enter a URL (e.g.,
http://localhost:9999/hello/sayhello ) on a web browser, an HTTP GET request message is sent to the server; and the server returns a response message for display on the web browser. You can inspect the request and response messages via Web browser's Developer Tool.
For Firefox/Chrome, press F12 (called F12 debugger) to enable 'Web Console' or 'Developer Tool'. Choose 'Console' or 'Network' pane. Enter URL
http://localhost:9999/hello/sayhello (or refresh). Enable 'Net' (not in Gray). Expand the link http://localhost:9999/hello/sayhello . A HTTP message consists of a header and a body. Inspect the request header and body; as well as the response header and body.
The request message header is as follows:
For this request, there is no request message body.
The response message header is as follows:
The response message body is as follows:
STEP 7: Write a Database Servlet
This section assumes that you are familiar with 'Java database programming' and 'MySQL database server'. Otherwise, read 'Java Database Program' and 'How to Install MySQL and Get Started', respectively.
Step 7(a) Setup a Database on MySQL (Already done in the MySQL exercises)
Start your MySQL server. Take note of the server's port number. I shall assume that the MySQL server is running on port
3306 , whereas the Tomcat is running on port 9999 .
Start a MySQL client. I shall assume that there is a user called '
myuser ' with password 'xxxx '.
Run the following SQL statements to create a database called '
ebookshop ', with a table called 'books ' with 5 columns: id , title , author , price , qty .
Step 7(b) Install MySQL JDBC Driver (Already done in the previous JDBC exercises)
You need to download MySQL JDBC driver if you have not done so. Read 'Installing the MySQL JDBC Driver'.
Step 7(c) Copy the MySQL JDBC Drive to Tomcat's 'lib' (IMPORTANT!!!)
Copy the MySQL JDBC Driver
JAR file 'mysql-connector-java-8.0.{xx}.jar ' into Tomcat's lib directory, i.e., 'c:myWebProjecttomcatlib ' (for Windows) or '~myWebProjecttomcatlib ' (macOS).
Apache Tomcat 6 TutorialStep 7(d) Write a Client-side HTML Form
Let's write an HTML script to create a query form with 3 checkboxes and a submit button, as illustrated below. Save the HTML file as “ querybook.html ” in your application root directory “<TOMCAT_HOME>webappshello ”.
You can browse the HTML page by issuing the following URL:
Check a box (e.g., 'Tan Ah Teck') and click the 'Search' button. You are expected to get an error '404 File Not Found', as you have yet to write the server-side program.
But observe the URL in the browser's navigation bar, reproduced as follows:
The URL request consists of two part: a URL corresponding to the '
action ' attribute of the <form> tag, and the 'name=value' pair extracted from the <input> tag, separated by a '?' . Take note that blanks are replaced by '+' (or %20 ), because blanks are not allowed in the URL.
If you check two boxes (e.g., 'Tan Ah Teck' and 'Mohammad Ali'), you will get this URL, which has two 'name=value' pairs separated by an
'&' .
Step 7(e) Write the Server-side Database Query Servlet
The next step is to write a Java servlet, which responses to the client’s request by querying the database and returns the query results.
Take note that in Line 8, we configure this
QueryServlet to URL '/query ' via annotation @WebServlet('/query') . In other words, the full URL to trigger this QueryServlet is http://ip_addr:port/hello/query , which corresponds to the 'action ' attribute of the <form> tag of the 'querybook.html ' written earlier.
Compile '
QueryServlet.java ' as follows:
Use a 'File Explorer', verify that '
QueryServlet.class ' was generated in the 'classes ' directory.
Step 7(f) Invoke the Servlet from the Client-Side Form
Issue the following URL to browse the HMTL form '
querybook.html ' that you have created earlier:
Select an author (e.g., 'Tan Ah Teck') and click the submit button, which activates the following URL coded in the
<form> 's 'action ' attribute, together with the name=value pair:
This URL '/
query ' triggers QueryServlet . The QueryServlet retrieves the name=value pair of 'author=Tan+Ah+Teck '. Inside the QueryServlet , the method request.getParameter('author') returns 'Tan Ah Teck ', which is inserted into the SQL SELECT command to query the database. The processed query result is then written to the client as an HTML document.
(Skip Unless...) If you see a blank screen or incorrect output, look for error messages from the Tomcat console!!! Check 'How to debug' Database Servlet Errors.
(Obsolete and Don't Do)(Prior to Tomcat 7) Deploying Servlets using web.xmlDownload Apache Tomcat 6 For Mac Os 7
Please skip this section. I keep it here just in case...
The annotation
@WebServlet('url') for deploying servlet is supported from Tomcat 7/Servlet 3.0. Prior to Tomcat 7, you need to deploy servlets via deployment descriptors in the web.xml configuration file.
Create the following configuration file called '
web.xml ', and save it under 'webappshelloWEB-INF ' (i.e., '<TOMCAT_HOME>webappshelloWEB-INFweb.xml ').
In the above configuration, a servlet having a class file '
HelloServlet.class ' is mapped to request URL '/sayhello ' (via an arbitraryservlet-name 'HelloWorld '), under this web application 'hello '. In other words, the complete request URL for this servlet is 'http://hostname:port/hello/sayhello '.
This configuration file, saved under your webapp '
hello ', is applicable only to this particular webapp 'hello '.
Restart your Tomcat server to refresh the '
web.xml ' file.
Note: For EACH servlet, you need to write a pair of
<servlet> and <servlet-mapping> elements with a common but arbitrary <servlet-name> . Take note that all the <servlet> elements MUST be grouped together and placed IN FRONT of the <servlet-mapping> elements.
A Full-Stack Web Developer
A full-stack web developer is a person who can develop both client and server software. He/She needs to be familiar the client-side (front-end) programming, server-side (back-end) programming and the database. You are now a step closer.
(Skip Unless...) How to Debug?
'Everything that can possibly go wrong will go wrong.' The most important thing to do is to find the ERROR MESSAGES!!!
Always...
Cannot Start Tomcat after InstallationLocating/Killing Tomcat's Process
Cannot Access the Tomcat Server From BrowserJava Servlet ErrorsJava Database Servlet Errors
REFERENCES & RESOURCES
Apple no longer sell servers, or server software for Apple computers. This guide is probably only useful for IPT developers using a Mac.
This tutorial explains how to install the Apache Tomcat 6.0.x on Mac OS X 10.5 or 10.6. This document is not tested to work with other versions of Tomcat or Java. For complete details, please consult the specific documentation for those software installations.
This tutorial is for now 'partially' tested with Tomcat 7.
Prerequisites
Following are the conditions assumed to be true in order to follow this tutorial.
Steps1) Download Tomcat 6.x
Download the latest stable Tomcat 6 Binary Distribution Core (tar.gz) release from http://tomcat.apache.org/download-60.cgi. This should put a file of the form apache-tomcat-6.x.x.tar.gz (or apache-tomcat-6.x.x.tar if you download with Safari) into your Downloads folder.
2) Install Tomcat 6.x
Open the Terminal application to get a command prompt. The commands that follow assume that the Bourne Again SHell (bash) is in use. You can find out which shell you are using by typing the following and then hitting the ENTER key in the Terminal's command prompt:
All versions of OS X later than 10.3 use bash as the default shell. If the result echo command does not end in '/bash', you can change the default shell by using the System Preferences Accounts pane. If the pane is locked, unlock it. Control Click on your account name and a contextual menu will appear. Click on Advanced Options. You will then be presented with a dialog where you can change the default login shell to whatever you want. Select 'bin/bash'.
Change into the Library directory:
Create the Tomcat directory:
Set the owner of the Tomcat directory, where username should be the login name under which Tomcat will run:
Set the group for the Tomcat directory to admin:
Change into the newly created Tomcat directory:
If the downloaded file was not already unzipped, unpack and unzip it into the Tomcat directory:
Otherwise unpack the tar file:
Create a Home symbolic link that points to the Tomcat directory:
3) Edit the Tomcat Configuration
You will need to add a name and password to the tomcat-users.xml configuration file to access the Tomcat management and administration programs. Execute the following commands in Terminal:
Change into the Tomcat configuration directory:
Edit the tomcat-users.xml file. This example shows the command to edit using nano:
In the file, add the two lines below into the file above the line that says
</tomcat-users> and outside of any comments (delimited with <!-- and --> ). Substitute the name you want as the admin's username for 'admin' and enter a password for that user to log in to the Tomcat Manager in place of 'password'.
If you're setting up Tomcat 7, the role is defined differently:
In Tomcat 7, role names are automatically created.
Save the tomcat-users.xml file and exit from the editor.
4) Run Tomcat
Execute the following commands in Terminal:Change into the directory where Tomcat startup scripts are located
Remove all of the scripts ending with
.bat .
Execute the Tomcat startup script. Please note at this point you should have JDK or JRE installed as Java is required by Tomcat, which is then required by IPT.
Check the Tomcat error log for errors:
If there are no error messages in the log files, then the installation has been completed successfully and Tomcat is running. There should be an informational message similar to the following near the end of the log file:
Under some circumstances the startup scripts do not execute because the execute permission has not been set. If this is the case you can change the execute permission to the scripts by typing the following:
This signifies read, write, and execute permissions for the owner, read and execute permissions for the group, and no permissions for others.
5) Test TomcatApache Tomcat 8 Download Free
If Tomcat is running successfully following step 4, above, you should be able to see the Tomcat Welcome page at the following URL:
6) Shut down Tomcat
To shut down Tomcat type the following from the ./bin directory where Tomcat was installed (/Library/Tomcat/Home following the steps on this page):
7) Running Tomcat as a service daemon
Mac OS X introduced launchd as the system-wide service management framework when Mac OS X 10.4 Tiger was released. Since then lanuchd succeeded traditional cron job management as the preferred way of daemonise system services on Mac OS X.
Apache Tomcat 6 Download
With the previous setup, to start up Tomcat while booting:
You can replace the load subcommand as unload, stop, start to remove Tomcat from startup processes, stop or start it, respectively.
Please also note that, the sample launchd plist assume the service will run as the user
_ appserver, which is predefined on Mac OS X for running app services. So you'll have to make sure the Tomcat directories and IPT data directories are owned, writable and executable by _ appserver. Or, please refer to this page.
8) References
For more thorough descriptions of Tomcat configuration on Mac OS X, also consult these sources:
Download Apache Tomcat 6 For Mac Os Download
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
December 2020
Categories |