Tomcat and Servlets
Haifeng Liu
Tutorial Overview
Tomcat Overview Setting Up Tomcat Running Tomcat Installing and Running Servlets FAQ?
Tomcat Overview
Tomcat is the servlet container History:
ASF: JServ – performance --- Jakarta Tomcat Sun: Servlet Engine -- specification
Requirements and Quality Goals:
Strict adherence to Sun’s JSP/Servlet specification, Interoperability, Modifiability, Performance, Scalability, High-Availability, Security, …
Setting Up Tomcat on CDF
Status: Installed with user privileges in
/u/csc309h/lib/jakarta-tomcat-5.0.28
Step 1 – go to website, read instructions http://www.cdf.toronto.edu/~radu/csc309/guide/tomcat.html
Step 2 – download the tar file tomcat.tar.gz Step 3 – untar it (tar xvz tomcat.tar.gz) and copy the files into a working directory which is refered as
e.g. ~/csc309/
Inside tomcat:
Bin, conf, logs, webapps, work
Start Tomcat Server
Step 1 -- cd ~/csc309/tomcat/bin Step 2 -- Run the script start.sh (may need to chmod a+x *.sh ) ./start.sh Step 3 -- Enter the port number. Tomcat will use 3 ports, the number entered and the next two (e.g., if you are assigned port 32000, tomcat will use 32000, 32001, 32002). Step 4 – check /bin/ps -ef | grep your_user_id Step 5 – view http://localhost:your_port_number
Stop Tomcat Server
To stop your server, run bin/stop.sh. Always remember to stop your server before logging off CDF.
Installing and Compiling Servlets Step 1 -- Download the sample files, untar it, put into webapps Step 2 -- Compile the Java class
Include the following jar file in your CLASSPATH /u/csc309h/lib/tomcat-5.0.27/common/lib/servlet-api.jar. setenv CLASSPATH ${CLASSPATH}: /u/csc309h/lib/tomcat5.0.27/common/lib/servlet-api.jar cd ~/csc309/tomcat/webapps/csc309/WEB-INF/classes Compile the servlet javac HelloWorld.java
Step 3 -- Start Tomcat Step 4 – Start Browser: http://127.0.0.1:yourPortNumber/csc309/servlet/HelloWorld
HelloWorld Interface
Adding a Servlet to a Web Step 1 – Download PrintEnv.java and copy it to Application ~/csc309/tomcat/webapps/csc309/WEB-INF/classes
Step 2 -- Compile PrintEnv.java Step 3 – Add the following entries to the application descriptor located at ~/csc309/tomcat/webapps/csc309/WEB-INF/web.xml. <servlet> <servlet-name>PrintEnv <servlet-class>PrintEnv <servlet-mapping> <servlet-name>PrintEnv /servlet/PrintEnv Step 4 -- Restart Tomcat Step 5 – Open browser to http://127.0.0.1:yourPortNumber/csc309/servlet/PrintEnv
PrintEnv Interface
Install Tomcat at home Software Prerequisite
Tomcat Server –”http://jakarta.apache.org/tomcat/” Eclipse 3.X – “http://www.eclipse.org/downloads/index.php ” Sysdeo Eclipse tomcat Launcher plugin --”http://www.sysdeo.com/eclipse/tomcatPlugin .html”
Debugging Servlet
Compile the servlet in debug mode Javac -g HelloWorld.java Set the environment variable JPDA_ADDRESS to your assigned port number + 1000. setenv JPDA_ADDRESS 31901 echo $JPDA_ADDRESS JPDA_ADDRESS=31901 export JPDA_ADDRESS Start Tomcat in debugging mode using the catalina.sh script. catalina.sh jpda start Start the NerBeans IDE by executing the following script: /u/csc309h/lib/NetBeans3.6/bin/runide.sh &
Debugging Servlet – Cont’d
Under the Debug menu, click on "Start Session" and then on "Attach...“, set Host and Port number. If everything went well you should see the following messages on the "Debugger Console" tab in the lower left corner of the window: Connecting to localhost:33000 Connection established Select the "Runtime" tab on the top left corner of the window. Click on "Debugger" and then again on "Classes." You should see a list of all the classes that are currently loaded into Tomcat. Point your browser to http://127.0.0.1:yourPortNumber/csc309/servlet/HelloWorld Go back to NetBeans, the class HelloWorld should have been added to the list of available classes. Double click on HelloWorld.
NetBeans Interface
Set Netbeans
Q and A
Tomcat System
Directory Structure
Bin – Startup/shutdown scripts and other useful files. Conf – Configuration files, including modules.xml, server.xml, and a number of apps-.xml. Logs – event log file for each day Webapps – web application files Work -- intermediate files (such as compiled JSP files) during its work. If you delete this directory while Tomcat is running you will not be able to execute JSP pages!
Sysdeo Eclipse Tomcat Launcher plugin
Starting, stopping and restarting Tomcat 4.x, 5.0.x, 3.3 Registering Tomcat process to Eclipse debugger Creating a WAR project (wizard can update server.xml file) Adding Java Projects to Tomcat classpath Setting Tomcat JVM parameters, classpath and bootclasspath Exporting a Tomcat project to a WAR File Choosing Tomcat configuration file Capability to use a special Tomcat classloader to have classes in several java projects loaded at the same classloader level than classes in a Tomcat project, see readmeDevLoader.html (Thanks Martin Kahr)
Setup Tomcat
Enable tomcat
Add a new user
Go to the menu "Window-> Preferences" go to "Tomcat" and select your Tomcat version adjust the field "Tomcat Home" to point to the install directory scroll down the menu point "Tomcat" and click the item "Tomcat Manager App" add a username and a password click on "Add user to tomcat-users.xml"
Test Start Tomcat Server
HelloWorld Example
Open a new project
select "Tomcat Project"..., click Next button call our new project "Hello World" adjust URI http://localhost:8080/HelloWorld/hello
create a new class named HelloServlet in the directory WEB-INF/src create the file web.xml in the directory WEBINF (Note: not in WEB-INF/src!!!) Start browser "http://localhost:8080/HelloWorld/hello"
HelloServlet import java.io.*; import javax.servlet.http.*; import javax.servlet.*; public class HelloServlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); out.println("Hello, Brave new World!"); out.close(); } }
Web.xml <web-app> <servlet> <servlet-name>hello <servlet-class>HelloServlet <servlet-mapping> <servlet-name>hello /hello