Click to See Complete Forum and Search --> : Servlet not working in a classes folder


florida
04-07-2007, 12:37 PM
I have a Servlet that works in my Tomcat 5.5 container when I put my Servlet class file in the C:\TomcatHome\webapps\four\WEB-INF\classes\ but when I put a Servlet in a classes folder such as: C:\TomcatHome\webapps\four\WEB-INF\classes\beans it wont work.

For example if I have a java file that compiled successfully called FourServleta.java in beans folder: C:\TomcatHome\webapps\four\WEB-INF\classes\beans

My web.xml located in: C:\TomcatHome\webapps\four\WEB-INF looks like this:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<description>Configuration file for website</description>

<servlet>
<servlet-name>FourServlet</servlet-name>
<servlet-class>FourServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>FourServlet</servlet-name>
<url-pattern>/FourServlet</url-pattern>
</servlet-mapping>


<servlet>
<servlet-name>FourServleta</servlet-name>
<servlet-class>FourServleta</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>FourServleta</servlet-name>
<url-pattern>/beans/FourServleta</url-pattern>
</servlet-mapping>
</web-app>




I use this URL: http://127.0.0.1:8080/four/beans/FourServleta and it gives
me message saying:

javax.servlet.ServletException: Wrapper cannot find servlet class FourServleta or a class it depends on
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProt ocol.java:667)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Unknown Source)


I have another Servlet in C:\TomcatHome\webapps\four\WEB-INF\classes that works and shows up successfully in my Browser as: http://127.0.0.1:8080/four/FourServlet


Please advise what I need to get it to work in the beans folder?

The Servlet is a Hello World simple servlet:


import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class FourServleta extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World tester.</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World test.</h1>");
out.println("</body>");
out.println("</html>");
}
}

Khalid Ali
04-09-2007, 06:37 PM
if the code is correct, first thing that I notice is that you dont have the package name ..if you are trying to put the class in a package such as beans then u should change ur class and add the package info, change the webxml file to reflect the class path change
<servlet-class>beans.FourServlet</servlet-class>


etc etc

florida
04-10-2007, 06:15 PM
Thanks!!

It now works. I appreciate your help.