You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by R Felipe <rf...@earthlink.net> on 2001/05/16 05:16:49 UTC

Simplest Possible Servlet

Here is the simplest possible servlet from the Core Servlets book from Sun
by Marty Hall:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {
       public void doGet(HttpServletRequest request, HttpServletResponse
response)
                throws ServletException, IOException {
                          response.setContentType("text/html");
                          PrintWriter out=response.getWriter();
                          out.println("Hello World");
        }
}



This code (above) runs perfectly on my JRun server.  When I try it on my
Tomcat I get an error 500 (see below):

Internal Servlet Error:

java.lang.NoClassDefFoundError: HelloWorld (wrong name: helloworld)
 at java.lang.ClassLoader.defineClass0(Native Method)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)

-----rest of error here.......

You might be thinking I don't have the class file on the correct directory
but another hello world example from Tomcat is working perfectly on the same
directory.  Here is the code for the one that works.

/* $Id: HelloWorldExample.java,v 1.2.4.1 2000/07/05 17:45:01 nacho Exp $
 *
 */

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

/**
 * The simplest possible servlet.
 *
 * @author James Duncan Davidson
 */

public class HelloWorldExample extends HttpServlet {


    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
        ResourceBundle rb =
            ResourceBundle.getBundle("LocalStrings",request.getLocale());
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<head>");

     String title = rb.getString("helloworld.title");

     out.println("<title>" + title + "</title>");
        out.println("</head>");
        out.println("<body bgcolor=\"white\">");
        out.println("<body>");

 // note that all links are created to be relative. this
 // ensures that we can move the web application that this
 // servlet belongs to to a different place in the url
 // tree and not have any harmful side effects.

        // XXX
        // making these absolute till we work out the
        // addition of a PathInfo issue

     out.println("<a href=\"/examples/servlets/helloworld.html\">");
        out.println("<img src=\"/examples/images/code.gif\" height=24 " +
                    "width=24 align=right border=0 alt=\"view code\"></a>");
        out.println("<a href=\"/examples/servlets/index.html\">");
        out.println("<img src=\"/examples/images/return.gif\" height=24 " +
                    "width=24 align=right border=0 alt=\"return\"></a>");
        out.println("<h1>" + title + "</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}


The only difference I can see is the ResourceBundle class.  What is it?  Is
that what's causing my problem?  I tried putting it on my code and I'm
getting the same error.  Why does my first code works on JRun and not
Tomcat?  Are there differences between these 2 webservers as far as these
HelloWorld programs are concerned.  Thanks for your help.

Struggling Newbie,

-Ray



Re: Simplest Possible Servlet

Posted by R Felipe <rf...@earthlink.net>.
I will try and investigate further.  How about the need to place servlets in
packages?  Can;t seem to get it work unless I have servlets in a package.

Thanks for you help.

-Ray

----- Original Message -----
From: "Richard Draucker" <ri...@draucker.com>
To: "R Felipe" <rf...@earthlink.net>
Sent: Tuesday, May 15, 2001 11:05 PM
Subject: Re: Simplest Possible Servlet


> I have 3 different installations of Tomcat, but I always
> remove the examples directory as one of the first things
> after installation.  So, I'm not sure where your conflict
> is coming in.
>
> Check the web.xml file under \examples and see if they
> have a HelloWorld servlet declared in there. Its possible
> their HelloWorldExample is an alias for a servlet named
> HelloWorld and that's causing your conflict.
>
> Another maybe...
> in your \WEB-INF\web.xml file, try aliasing your servlet
> and see if you can hit it with the alias name within your
> \classes directory.
>
> My suggestions are all aimed at a servlet name
> conflict.  That's the only thing I can think of for yours
> to run under a classes\subdirectoryName but not in the
> parent directory.
>
>
>
> On Wed, 16 May 2001, you wrote:
> > Thanks for replying.  Here's an update on my progress:
> >
> > On the examples folder (c:\tomcat\webapps\examples\WEB-INF\classes)
where
> > Tomcat examples are working but mine won't.  I tried renaming my
> > "HelloWorld" to Tomcat's "HelloWorldExample" and it works!!  So
somewhere it
> > is configured to look for "specific" file names.  I checked the examples
> > folder (same as above) and I found 3 "properties" file.
> > LocalStrings.properties, LocalString_en.properties, and
> > LocalString_es.properties.   I couldn't find any reference where a
filename
> > may have been hard-coded.  But I know that this is what the
"ResourceBundle"
> > class is using.  I think it's for different language support.  "en" for
> > english and "es" for spanish.  Anyway, I still don't know why my own
> > HelloWorld wouldn't run.  At this point I don't care because it's just
the
> > example and there's a configuration there somewhere for it I'm sure.
> >
> > Now to my real servlet folder (c:\tomcat\webapps\ROOT\WEB-INF\classes).
> >
> > The same HelloWorld program only works if I put it in a package.  So I
> > create a folder under \classes\ called "mypackage" and add the line
"package
> > mypackage;" to my java file.  If I don't I get the error:
> >
> > Location: /servlet/helloworld
> > Internal Servlet Error:
> >
> > java.lang.IllegalAccessException: helloworld
> >  at java.lang.Class.newInstance0(Native Method)
> >  at java.lang.Class.newInstance(Class.java:237)
> >  at
> >
org.apache.tomcat.core.ServletWrapper.loadServlet(ServletWrapper.java:268)
> >  at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:289)
> >  at org.apache.tomcat.core.Handler.service(Handler.java:254)
> >  at
org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
> >  at
> >
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
> > 7)
> >  at
org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
> >  at
> >
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
> > onnectionHandler.java:210)
> >  at
> >
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
> >  at
> >
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
> >  at java.lang.Thread.run(Thread.java:484)
> >
> > On the same folder (under \classes\) there is a java servlet file called
> > SnoopServlet and this one works.  So why is it that I need to have my
> > servlets in a package?  Is this how Tomcat is suppose to work out-of-box
> > without configuration?  It doesn't make sense.
> >
> > -Ray
> >
> >
> >
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "Richard Draucker" <ri...@draucker.com>
> > To: <rf...@earthlink.net>
> > Sent: Tuesday, May 15, 2001 9:49 PM
> > Subject: Re: Simplest Possible Servlet
> >
> >
> > > Couple of things...
> > > First, yes, Jrun and Tomcat are very different.  Jrun does
> > > not fully conform to the J2EE webapp spec.  It allows
> > > servlets to be run from all over the place and even has an
> > > old 'servlets' directory for backward compatibility.
> > > Tomcat requires that your directory structure look like:
> > > webapps/html/WEB-INF/classes
> > > ... where HTML pages go in whatever you name the 'html'
> > > directory and sevlets go in the /classes directory.  You
> > > need not declare the servlets in the web.xml file if you
> > > access them via  http://yoururl.com/servlets/myservlet
> > > syntax.  But, if you want to use
> > > http://yoururl.com/helloworld
> > > the alias must be declared in the web.xml file in the
> > > WEB-INF directory.
> > > Since you reference the HelloWorldExample working 'in the
> > > same directory', I'm wondering if you maybe dropped a new
> > > HelloWorld servlet in the /classes directory under
> > > webapps/examples.  If this is the case, Tomcat may not see
> > > it.  I believe the examples directory exists only for
> > > reference and that the url
> > > http://youurl.com/examples/servlet/HelloWorldExample is
> > > actually reaching a servlet inside an examples.war file.
> > > Check your server.xml file and see if you have a context
> > > for webapps/examples.
> > > You may have better success creating a new J2EE compliant
> > > directory structure and dropping your servlet in there.
> > >
> > >
> > >
> > >
> > > On Wed, 16 May 2001, you wrote:
> > > > Sorry I didn't mention but the case is correct.  Java file is called
> > > > HelloWorld.java, class file is called HelloWorld.class.
> > > >
> > > > -Ray
> > > >
> > > > ----- Original Message -----
> > > > From: "Richard Draucker" <ri...@draucker.com>
> > > > To: <to...@jakarta.apache.org>
> > > > Sent: Tuesday, May 15, 2001 8:31 PM
> > > > Subject: Re: Simplest Possible Servlet
> > > >
> > > >
> > > > > Easy question of the day...
> > > > > as the trace says, wrong name: helloworld
> > > > > try HelloWorld instead.
> > > > > Yep, case sensitivity strikes again.
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On Tue, 15 May 2001, you wrote:
> > > > > >
> > > > > > Here is the simplest possible servlet from the Core Servlets
book
> > from
> > > > Sun
> > > > > > by Marty Hall:
> > > > > >
> > > > > > import java.io.*;
> > > > > > import javax.servlet.*;
> > > > > > import javax.servlet.http.*;
> > > > > >
> > > > > > public class HelloWorld extends HttpServlet {
> > > > > >        public void doGet(HttpServletRequest request,
> > HttpServletResponse
> > > > > > response)
> > > > > >                 throws ServletException, IOException {
> > > > > >                           response.setContentType("text/html");
> > > > > >                           PrintWriter out=response.getWriter();
> > > > > >                           out.println("Hello World");
> > > > > >         }
> > > > > > }
> > > > > >
> > > > > >
> > > > > >
> > > > > > This code (above) runs perfectly on my JRun server.  When I try
it
> > on my
> > > > > > Tomcat I get an error 500 (see below):
> > > > > >
> > > > > > Internal Servlet Error:
> > > > > >
> > > > > > java.lang.NoClassDefFoundError: HelloWorld (wrong name:
helloworld)
> > > > > >  at java.lang.ClassLoader.defineClass0(Native Method)
> > > > > >  at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
> > > > > >  at
> > > >
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
> > > > > >
> > > > > > -----rest of error here.......
> > > > > >
> > > > > > You might be thinking I don't have the class file on the correct
> > > > directory
> > > > > > but another hello world example from Tomcat is working perfectly
on
> > the
> > > > same
> > > > > > directory.  Here is the code for the one that works.
> > > > > >
> > > > > > /* $Id: HelloWorldExample.java,v 1.2.4.1 2000/07/05 17:45:01
nacho
> > Exp $
> > > > > >  *
> > > > > >  */
> > > > > >
> > > > > > import java.io.*;
> > > > > > import java.text.*;
> > > > > > import java.util.*;
> > > > > > import javax.servlet.*;
> > > > > > import javax.servlet.http.*;
> > > > > >
> > > > > > /**
> > > > > >  * The simplest possible servlet.
> > > > > >  *
> > > > > >  * @author James Duncan Davidson
> > > > > >  */
> > > > > >
> > > > > > public class HelloWorldExample extends HttpServlet {
> > > > > >
> > > > > >
> > > > > >     public void doGet(HttpServletRequest request,
> > > > > >                       HttpServletResponse response)
> > > > > >         throws IOException, ServletException
> > > > > >     {
> > > > > >         ResourceBundle rb =
> > > > > >
> > > > ResourceBundle.getBundle("LocalStrings",request.getLocale());
> > > > > >         response.setContentType("text/html");
> > > > > >         PrintWriter out = response.getWriter();
> > > > > >
> > > > > >         out.println("<html>");
> > > > > >         out.println("<head>");
> > > > > >
> > > > > >      String title = rb.getString("helloworld.title");
> > > > > >
> > > > > >      out.println("<title>" + title + "</title>");
> > > > > >         out.println("</head>");
> > > > > >         out.println("<body bgcolor=\"white\">");
> > > > > >         out.println("<body>");
> > > > > >
> > > > > >  // note that all links are created to be relative. this
> > > > > >  // ensures that we can move the web application that this
> > > > > >  // servlet belongs to to a different place in the url
> > > > > >  // tree and not have any harmful side effects.
> > > > > >
> > > > > >         // XXX
> > > > > >         // making these absolute till we work out the
> > > > > >         // addition of a PathInfo issue
> > > > > >
> > > > > >      out.println("<a
href=\"/examples/servlets/helloworld.html\">");
> > > > > >         out.println("<img src=\"/examples/images/code.gif\"
> > height=24 "
> > > > +
> > > > > >                     "width=24 align=right border=0 alt=\"view
> > > > code\"></a>");
> > > > > >         out.println("<a
href=\"/examples/servlets/index.html\">");
> > > > > >         out.println("<img src=\"/examples/images/return.gif\"
> > height=24
> > > > " +
> > > > > >                     "width=24 align=right border=0
> > > > alt=\"return\"></a>");
> > > > > >         out.println("<h1>" + title + "</h1>");
> > > > > >         out.println("</body>");
> > > > > >         out.println("</html>");
> > > > > >     }
> > > > > > }
> > > > > >
> > > > > >
> > > > > > The only difference I can see is the ResourceBundle class.  What
is
> > it?
> > > > Is
> > > > > > that what's causing my problem?  I tried putting it on my code
and
> > I'm
> > > > > > getting the same error.  Why does my first code works on JRun
and
> > not
> > > > > > Tomcat?  Are there differences between these 2 webservers as far
as
> > > > these
> > > > > > HelloWorld programs are concerned.  Thanks for your help.
> > > > > >
> > > > > > Struggling Newbie,
> > > > > >
> > > > > > -Ray
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > ----------------------------------------
> > > > > Content-Type: text/html; name="unnamed"
> > > > > Content-Transfer-Encoding: quoted-printable
> > > > > Content-Description:
> > > > > ----------------------------------------
> > > > >
> > > > > --
> > > > > Richard Draucker,  richard@protected-data.com
> > > > > Protected-Data.Com  www.protected-data.com
> > > > > Remote data support for web developers.
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > --
> > > Richard Draucker,  richard@protected-data.com
> > > Protected-Data.Com  www.protected-data.com
> > > Remote data support for web developers.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> --
> Richard Draucker,  richard@protected-data.com
> Protected-Data.Com  www.protected-data.com
> Remote data support for web developers.
>
>
>
>
>
>
>
>


Re: Simplest Possible Servlet

Posted by R Felipe <rf...@earthlink.net>.
Thanks for replying.  Here's an update on my progress:

On the examples folder (c:\tomcat\webapps\examples\WEB-INF\classes) where
Tomcat examples are working but mine won't.  I tried renaming my
"HelloWorld" to Tomcat's "HelloWorldExample" and it works!!  So somewhere it
is configured to look for "specific" file names.  I checked the examples
folder (same as above) and I found 3 "properties" file.
LocalStrings.properties, LocalString_en.properties, and
LocalString_es.properties.   I couldn't find any reference where a filename
may have been hard-coded.  But I know that this is what the "ResourceBundle"
class is using.  I think it's for different language support.  "en" for
english and "es" for spanish.  Anyway, I still don't know why my own
HelloWorld wouldn't run.  At this point I don't care because it's just the
example and there's a configuration there somewhere for it I'm sure.

Now to my real servlet folder (c:\tomcat\webapps\ROOT\WEB-INF\classes).

The same HelloWorld program only works if I put it in a package.  So I
create a folder under \classes\ called "mypackage" and add the line "package
mypackage;" to my java file.  If I don't I get the error:

Location: /servlet/helloworld
Internal Servlet Error:

java.lang.IllegalAccessException: helloworld
 at java.lang.Class.newInstance0(Native Method)
 at java.lang.Class.newInstance(Class.java:237)
 at
org.apache.tomcat.core.ServletWrapper.loadServlet(ServletWrapper.java:268)
 at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:289)
 at org.apache.tomcat.core.Handler.service(Handler.java:254)
 at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
 at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79
7)
 at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
 at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:210)
 at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
 at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
 at java.lang.Thread.run(Thread.java:484)

On the same folder (under \classes\) there is a java servlet file called
SnoopServlet and this one works.  So why is it that I need to have my
servlets in a package?  Is this how Tomcat is suppose to work out-of-box
without configuration?  It doesn't make sense.

-Ray








----- Original Message -----
From: "Richard Draucker" <ri...@draucker.com>
To: <rf...@earthlink.net>
Sent: Tuesday, May 15, 2001 9:49 PM
Subject: Re: Simplest Possible Servlet


> Couple of things...
> First, yes, Jrun and Tomcat are very different.  Jrun does
> not fully conform to the J2EE webapp spec.  It allows
> servlets to be run from all over the place and even has an
> old 'servlets' directory for backward compatibility.
> Tomcat requires that your directory structure look like:
> webapps/html/WEB-INF/classes
> ... where HTML pages go in whatever you name the 'html'
> directory and sevlets go in the /classes directory.  You
> need not declare the servlets in the web.xml file if you
> access them via  http://yoururl.com/servlets/myservlet
> syntax.  But, if you want to use
> http://yoururl.com/helloworld
> the alias must be declared in the web.xml file in the
> WEB-INF directory.
> Since you reference the HelloWorldExample working 'in the
> same directory', I'm wondering if you maybe dropped a new
> HelloWorld servlet in the /classes directory under
> webapps/examples.  If this is the case, Tomcat may not see
> it.  I believe the examples directory exists only for
> reference and that the url
> http://youurl.com/examples/servlet/HelloWorldExample is
> actually reaching a servlet inside an examples.war file.
> Check your server.xml file and see if you have a context
> for webapps/examples.
> You may have better success creating a new J2EE compliant
> directory structure and dropping your servlet in there.
>
>
>
>
> On Wed, 16 May 2001, you wrote:
> > Sorry I didn't mention but the case is correct.  Java file is called
> > HelloWorld.java, class file is called HelloWorld.class.
> >
> > -Ray
> >
> > ----- Original Message -----
> > From: "Richard Draucker" <ri...@draucker.com>
> > To: <to...@jakarta.apache.org>
> > Sent: Tuesday, May 15, 2001 8:31 PM
> > Subject: Re: Simplest Possible Servlet
> >
> >
> > > Easy question of the day...
> > > as the trace says, wrong name: helloworld
> > > try HelloWorld instead.
> > > Yep, case sensitivity strikes again.
> > >
> > >
> > >
> > >
> > >
> > > On Tue, 15 May 2001, you wrote:
> > > >
> > > > Here is the simplest possible servlet from the Core Servlets book
from
> > Sun
> > > > by Marty Hall:
> > > >
> > > > import java.io.*;
> > > > import javax.servlet.*;
> > > > import javax.servlet.http.*;
> > > >
> > > > public class HelloWorld extends HttpServlet {
> > > >        public void doGet(HttpServletRequest request,
HttpServletResponse
> > > > response)
> > > >                 throws ServletException, IOException {
> > > >                           response.setContentType("text/html");
> > > >                           PrintWriter out=response.getWriter();
> > > >                           out.println("Hello World");
> > > >         }
> > > > }
> > > >
> > > >
> > > >
> > > > This code (above) runs perfectly on my JRun server.  When I try it
on my
> > > > Tomcat I get an error 500 (see below):
> > > >
> > > > Internal Servlet Error:
> > > >
> > > > java.lang.NoClassDefFoundError: HelloWorld (wrong name: helloworld)
> > > >  at java.lang.ClassLoader.defineClass0(Native Method)
> > > >  at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
> > > >  at
> > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
> > > >
> > > > -----rest of error here.......
> > > >
> > > > You might be thinking I don't have the class file on the correct
> > directory
> > > > but another hello world example from Tomcat is working perfectly on
the
> > same
> > > > directory.  Here is the code for the one that works.
> > > >
> > > > /* $Id: HelloWorldExample.java,v 1.2.4.1 2000/07/05 17:45:01 nacho
Exp $
> > > >  *
> > > >  */
> > > >
> > > > import java.io.*;
> > > > import java.text.*;
> > > > import java.util.*;
> > > > import javax.servlet.*;
> > > > import javax.servlet.http.*;
> > > >
> > > > /**
> > > >  * The simplest possible servlet.
> > > >  *
> > > >  * @author James Duncan Davidson
> > > >  */
> > > >
> > > > public class HelloWorldExample extends HttpServlet {
> > > >
> > > >
> > > >     public void doGet(HttpServletRequest request,
> > > >                       HttpServletResponse response)
> > > >         throws IOException, ServletException
> > > >     {
> > > >         ResourceBundle rb =
> > > >
> > ResourceBundle.getBundle("LocalStrings",request.getLocale());
> > > >         response.setContentType("text/html");
> > > >         PrintWriter out = response.getWriter();
> > > >
> > > >         out.println("<html>");
> > > >         out.println("<head>");
> > > >
> > > >      String title = rb.getString("helloworld.title");
> > > >
> > > >      out.println("<title>" + title + "</title>");
> > > >         out.println("</head>");
> > > >         out.println("<body bgcolor=\"white\">");
> > > >         out.println("<body>");
> > > >
> > > >  // note that all links are created to be relative. this
> > > >  // ensures that we can move the web application that this
> > > >  // servlet belongs to to a different place in the url
> > > >  // tree and not have any harmful side effects.
> > > >
> > > >         // XXX
> > > >         // making these absolute till we work out the
> > > >         // addition of a PathInfo issue
> > > >
> > > >      out.println("<a href=\"/examples/servlets/helloworld.html\">");
> > > >         out.println("<img src=\"/examples/images/code.gif\"
height=24 "
> > +
> > > >                     "width=24 align=right border=0 alt=\"view
> > code\"></a>");
> > > >         out.println("<a href=\"/examples/servlets/index.html\">");
> > > >         out.println("<img src=\"/examples/images/return.gif\"
height=24
> > " +
> > > >                     "width=24 align=right border=0
> > alt=\"return\"></a>");
> > > >         out.println("<h1>" + title + "</h1>");
> > > >         out.println("</body>");
> > > >         out.println("</html>");
> > > >     }
> > > > }
> > > >
> > > >
> > > > The only difference I can see is the ResourceBundle class.  What is
it?
> > Is
> > > > that what's causing my problem?  I tried putting it on my code and
I'm
> > > > getting the same error.  Why does my first code works on JRun and
not
> > > > Tomcat?  Are there differences between these 2 webservers as far as
> > these
> > > > HelloWorld programs are concerned.  Thanks for your help.
> > > >
> > > > Struggling Newbie,
> > > >
> > > > -Ray
> > > >
> > > >
> > > >
> > >
> > > ----------------------------------------
> > > Content-Type: text/html; name="unnamed"
> > > Content-Transfer-Encoding: quoted-printable
> > > Content-Description:
> > > ----------------------------------------
> > >
> > > --
> > > Richard Draucker,  richard@protected-data.com
> > > Protected-Data.Com  www.protected-data.com
> > > Remote data support for web developers.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> --
> Richard Draucker,  richard@protected-data.com
> Protected-Data.Com  www.protected-data.com
> Remote data support for web developers.
>
>
>
>
>
>
>
>


Re: Simplest Possible Servlet

Posted by R Felipe <rf...@earthlink.net>.
Sorry I didn't mention but the case is correct.  Java file is called
HelloWorld.java, class file is called HelloWorld.class.

-Ray

----- Original Message -----
From: "Richard Draucker" <ri...@draucker.com>
To: <to...@jakarta.apache.org>
Sent: Tuesday, May 15, 2001 8:31 PM
Subject: Re: Simplest Possible Servlet


> Easy question of the day...
> as the trace says, wrong name: helloworld
> try HelloWorld instead.
> Yep, case sensitivity strikes again.
>
>
>
>
>
> On Tue, 15 May 2001, you wrote:
> >
> > Here is the simplest possible servlet from the Core Servlets book from
Sun
> > by Marty Hall:
> >
> > import java.io.*;
> > import javax.servlet.*;
> > import javax.servlet.http.*;
> >
> > public class HelloWorld extends HttpServlet {
> >        public void doGet(HttpServletRequest request, HttpServletResponse
> > response)
> >                 throws ServletException, IOException {
> >                           response.setContentType("text/html");
> >                           PrintWriter out=response.getWriter();
> >                           out.println("Hello World");
> >         }
> > }
> >
> >
> >
> > This code (above) runs perfectly on my JRun server.  When I try it on my
> > Tomcat I get an error 500 (see below):
> >
> > Internal Servlet Error:
> >
> > java.lang.NoClassDefFoundError: HelloWorld (wrong name: helloworld)
> >  at java.lang.ClassLoader.defineClass0(Native Method)
> >  at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
> >  at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
> >
> > -----rest of error here.......
> >
> > You might be thinking I don't have the class file on the correct
directory
> > but another hello world example from Tomcat is working perfectly on the
same
> > directory.  Here is the code for the one that works.
> >
> > /* $Id: HelloWorldExample.java,v 1.2.4.1 2000/07/05 17:45:01 nacho Exp $
> >  *
> >  */
> >
> > import java.io.*;
> > import java.text.*;
> > import java.util.*;
> > import javax.servlet.*;
> > import javax.servlet.http.*;
> >
> > /**
> >  * The simplest possible servlet.
> >  *
> >  * @author James Duncan Davidson
> >  */
> >
> > public class HelloWorldExample extends HttpServlet {
> >
> >
> >     public void doGet(HttpServletRequest request,
> >                       HttpServletResponse response)
> >         throws IOException, ServletException
> >     {
> >         ResourceBundle rb =
> >
ResourceBundle.getBundle("LocalStrings",request.getLocale());
> >         response.setContentType("text/html");
> >         PrintWriter out = response.getWriter();
> >
> >         out.println("<html>");
> >         out.println("<head>");
> >
> >      String title = rb.getString("helloworld.title");
> >
> >      out.println("<title>" + title + "</title>");
> >         out.println("</head>");
> >         out.println("<body bgcolor=\"white\">");
> >         out.println("<body>");
> >
> >  // note that all links are created to be relative. this
> >  // ensures that we can move the web application that this
> >  // servlet belongs to to a different place in the url
> >  // tree and not have any harmful side effects.
> >
> >         // XXX
> >         // making these absolute till we work out the
> >         // addition of a PathInfo issue
> >
> >      out.println("<a href=\"/examples/servlets/helloworld.html\">");
> >         out.println("<img src=\"/examples/images/code.gif\" height=24 "
+
> >                     "width=24 align=right border=0 alt=\"view
code\"></a>");
> >         out.println("<a href=\"/examples/servlets/index.html\">");
> >         out.println("<img src=\"/examples/images/return.gif\" height=24
" +
> >                     "width=24 align=right border=0
alt=\"return\"></a>");
> >         out.println("<h1>" + title + "</h1>");
> >         out.println("</body>");
> >         out.println("</html>");
> >     }
> > }
> >
> >
> > The only difference I can see is the ResourceBundle class.  What is it?
Is
> > that what's causing my problem?  I tried putting it on my code and I'm
> > getting the same error.  Why does my first code works on JRun and not
> > Tomcat?  Are there differences between these 2 webservers as far as
these
> > HelloWorld programs are concerned.  Thanks for your help.
> >
> > Struggling Newbie,
> >
> > -Ray
> >
> >
> >
>
> ----------------------------------------
> Content-Type: text/html; name="unnamed"
> Content-Transfer-Encoding: quoted-printable
> Content-Description:
> ----------------------------------------
>
> --
> Richard Draucker,  richard@protected-data.com
> Protected-Data.Com  www.protected-data.com
> Remote data support for web developers.
>
>
>
>
>
>
>
>


Re: Simplest Possible Servlet

Posted by Richard Draucker <ri...@draucker.com>.
Easy question of the day...
as the trace says, wrong name: helloworld
try HelloWorld instead. 
Yep, case sensitivity strikes again.





On Tue, 15 May 2001, you wrote:
> 
> Here is the simplest possible servlet from the Core Servlets book from Sun
> by Marty Hall:
> 
> import java.io.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> 
> public class HelloWorld extends HttpServlet {
>        public void doGet(HttpServletRequest request, HttpServletResponse
> response)
>                 throws ServletException, IOException {
>                           response.setContentType("text/html");
>                           PrintWriter out=response.getWriter();
>                           out.println("Hello World");
>         }
> }
> 
> 
> 
> This code (above) runs perfectly on my JRun server.  When I try it on my
> Tomcat I get an error 500 (see below):
> 
> Internal Servlet Error:
> 
> java.lang.NoClassDefFoundError: HelloWorld (wrong name: helloworld)
>  at java.lang.ClassLoader.defineClass0(Native Method)
>  at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
>  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
> 
> -----rest of error here.......
> 
> You might be thinking I don't have the class file on the correct directory
> but another hello world example from Tomcat is working perfectly on the same
> directory.  Here is the code for the one that works.
> 
> /* $Id: HelloWorldExample.java,v 1.2.4.1 2000/07/05 17:45:01 nacho Exp $
>  *
>  */
> 
> import java.io.*;
> import java.text.*;
> import java.util.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> 
> /**
>  * The simplest possible servlet.
>  *
>  * @author James Duncan Davidson
>  */
> 
> public class HelloWorldExample extends HttpServlet {
> 
> 
>     public void doGet(HttpServletRequest request,
>                       HttpServletResponse response)
>         throws IOException, ServletException
>     {
>         ResourceBundle rb =
>             ResourceBundle.getBundle("LocalStrings",request.getLocale());
>         response.setContentType("text/html");
>         PrintWriter out = response.getWriter();
> 
>         out.println("<html>");
>         out.println("<head>");
> 
>      String title = rb.getString("helloworld.title");
> 
>      out.println("<title>" + title + "</title>");
>         out.println("</head>");
>         out.println("<body bgcolor=\"white\">");
>         out.println("<body>");
> 
>  // note that all links are created to be relative. this
>  // ensures that we can move the web application that this
>  // servlet belongs to to a different place in the url
>  // tree and not have any harmful side effects.
> 
>         // XXX
>         // making these absolute till we work out the
>         // addition of a PathInfo issue
> 
>      out.println("<a href=\"/examples/servlets/helloworld.html\">");
>         out.println("<img src=\"/examples/images/code.gif\" height=24 " +
>                     "width=24 align=right border=0 alt=\"view code\"></a>");
>         out.println("<a href=\"/examples/servlets/index.html\">");
>         out.println("<img src=\"/examples/images/return.gif\" height=24 " +
>                     "width=24 align=right border=0 alt=\"return\"></a>");
>         out.println("<h1>" + title + "</h1>");
>         out.println("</body>");
>         out.println("</html>");
>     }
> }
> 
> 
> The only difference I can see is the ResourceBundle class.  What is it?  Is
> that what's causing my problem?  I tried putting it on my code and I'm
> getting the same error.  Why does my first code works on JRun and not
> Tomcat?  Are there differences between these 2 webservers as far as these
> HelloWorld programs are concerned.  Thanks for your help.
> 
> Struggling Newbie,
> 
> -Ray
> 
> 
> 

----------------------------------------
Content-Type: text/html; name="unnamed"
Content-Transfer-Encoding: quoted-printable
Content-Description: 
----------------------------------------

-- 
Richard Draucker,  richard@protected-data.com
Protected-Data.Com  www.protected-data.com
Remote data support for web developers.