Difficulties with setting up Apache tomcat: 'Need a little help.
Femi Alla
Ranch Hand
Joined: Jul 05, 2002
Posts: 79
posted
0
Greetings everyone,
I would appreciate a little help from all the gurus out there.....
Tomcat refuses to bring up my servlet. I know I've done something wrong somewhere but can't figure out where.
Now let me confess all my wrong deeds:
I'm trying to run servlets (and JSPs) by installing tomcat on j2sdk1.4.0 (and not using J2EE sdk). I have apache Tomcat 4.1.18 installed. I set the JAVA_HOME environment variable to the directory where the J2 SDK is installed on c: (c:\j2sdk1.4.0) I also have APACHE_HOME set to the location of the tomcat installation. But then, while troubleshooting, I also added CATALINA_HOME and made it point to the same location. (My thinking is this wasn't nessesary, but it wouldn't hurt. Was I right?) I have included all the environment variables below in case it would help....
In the webapps directory which resides in the tomcat installation directory, I have my directory named gsmsecurity, which contains a WEB-INF subdirectory. This WEB_INF subdirectory now contains to other subdirectories: lib and classes. My servlet resides inside the classes folder. Now the examples folder that comes with tomcat is on the same level with my gsmsecurity folder.
After starting tomcat, I point my browser to http://127.0.0.1:8080/examples/servlet/HelloWorldExample to bring up the HelloWorld example servlet. But when I do: http://127.0.0.1:8080/gsmsecurity/servlet/HelloServlet I get a tomcat error report page: HTTP status 404. When I try different urls e.g http://127.0.0.1:8080/gsmsecurity/HelloServlet, the result is the same. Even when I put HelloWorldExample inside my classes folder and tried to bring it up, I didn't succed. My conclusion was that this was probably because there was no web.xml file in the WEB-INF folder. I put a minimal amount of things in the xml file and put it up, but the problem persists.
I would appreciate it greatly if someone could tell me what I'm doing wrong here.
Here's a listing of my Servlet. It's s simple one to let me know everything OK,before serious work begins
A listing of my web.xml file:
his is the song tomcat sings anytime it starts up:
My environment variables:
Another question I have is, why does http:\\localhost:8080\blah,blah not work for me?
Maybe it would also help if I mention that I am running Windows 2000 professional without IIS installed.
Thanks for reading up to this point. You could as well kindly pass a comment or two.......
SCJP
Richard Bradford
Ranch Hand
Joined: Apr 20, 2004
Posts: 48
posted
0
Try adding a <servlet-mapping> entry in your web.xml file. Also its a good idea, as well as good practice, to put your serlvet class in a package.
William Brogden
Author and all-around good cowpoke
Rancher
Joined: Mar 22, 2000
Posts: 12268
1
posted
0
You appear to be using URLs with "/servlet/" in them. This gets you involved with the "invoker" servlet. Read this FAQ here at the ranch and find out why this is a bad idea.
As Richard said - it is essential to put all classes involved in servlets in a package. Bill
Richard, I've put the class in a package and included the <servlet-mapping>, like you and Nidhi said I should.
And William, I read
The Long and Sordid Tale of the Invoker Servlet
you linked me to and I got the message. I think I've got it now, only that the page that comes up is blank. First, I did as the FAQ page said at the begining of the page:
In the file conf/web.xml find a section of text that looks like this:
<!-- The mapping for the invoker servlet --> <!-- <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> --> [/code]
You need to uncomment the servlet-mapping and then restart Tomcat. Your application should work now....
I uncommented these lines. I did this just to see the application work, at least. But knew something was wrong when instead of displaying a webpage, I got a text file downloaded. Then saw it was in the part where the servlet sends the header [code] theResponse.setContentType("text.html"); [/code] . I fixed that to read [code] theResponse.setContentType("text/html"); [/code]. Then I put the servlet in a package named mypackage ( I always prefer to keep things simple at first. The package structure could get deeper later), and I added the <servlet-mapping> tag. But all I get now is a blank page. What am I doing wrong?
In a bid to solve this, I included my classes directory in the classpath. Still didn't work. I then chaged the way output is sent to the browser in the servlet, like this [code] ServletOutputStream out = theResponse.getOutputStream(); out.println("<HTML>"); [/code] I think it's something to do with my web.xml file.
Listing of my web.xml file: [code] <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2se/dtds/web-app_2_2.dtd">
<web-app> <!-- Application that implements Wireless security for GSM networks in this case, Nigeria -->
<display-name>Wireless Security application</display-name> <description> This application uses a client - server model to implement a Wireless security mechanism for GSM networks. </description>
<!-- I'm supposed to declare parameters here, but chose not to, yet -->
<servlet> <servlet-name>HelloServlet</servlet-name> <description> This servlet does this and this..... </description> <servlet-class>mypackage.HelloServlet</servlet-class> <init-param> <param-name>NoParameter</param-name> <param-value>NoValue</param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet>
and ur server.xml..verfiy u have added ur application <Context path="/myapp" docBase="myapp" debug="7" reloadable="true"> </Context>
These are the things u need to run a servlet from ur context(ie an application like myapp)
and abt Invoker servlet..since now u have mapped the servlet,its no longer required.If the mapping is not done (prior to tomcat 4) ur URL to invoke servlet will be like http://localhost:8080/myapp/servlet/HelloServlet
i'm just putting all the points which i learned recently
Chandrasekhar S [ September 29, 2004: Message edited by: Chandra Sekhar ]