Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Tomcat Users »

Requested Resource Not Available

Jonathan Quinn

2004-05-11


Hi,

I'm a new tomcat user, but not generally a newbie, so I'm
surprised that I'm so stuck. I've been trying to get the
simple hello world servlet running to verify that I've setup
everything. (The apps that come pre-setup with the
distribution are working fine. I'm trying to get one of "my
own" working copied from the sample/appdev code. And the jsp
version works fine.)

First clue is that 'ant install' reports a bad pathname
error. I can't figure out where that is coming from. So I
tried installing the app manually by copying the tree to the
webapps directory. Tomcat reports a 404 error in that
case.  
Having read that similar new users had this kind of problem,
I've stared at the mappings for about 16 hours now, and I
must be overlooking something silly. I have also taken great
care to make sure that my package declaration is reflected in
the hierarchy.

I'm running the new 5.0.24 version on Red Hat Linux
Enterprise Workstation.

Below are my web.xml and build.xml files. Sorry for sending
them in whole.

Thanks for your help!

Jonathan

<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd ">

<web-app>

 <display-name>My Hello, World Application</display-name>
 <description>
This is My version of a simple web application with a
source code organization
based on the recommendations of the Application
Developer's Guide.
 </description>

 <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>mypackage.Hello</servlet-class>
 </servlet>

 <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/my-hello/hello</url-pattern>
 </servlet-mapping>

</web-app>

<!--
  General purpose build script for web applications and
web services,
  including enhanced support for deploying directly to a
Tomcat 5
  based server.

  This build script assumes that the source code of your
web application
  is organized into the following subdirectories
underneath the source
  code directory from which you execute the build script:

    docs           Static documentation files to be
copied to
                  the "docs" subdirectory of your
distribution.

    src            Java source code (and associated
resource files)
                  to be compiled to the "WEB-
INF/classes"
                  subdirectory of your web
applicaiton.

    web            Static HTML, JSP, and other
content (such as
                  image files), including the WEB-
INF subdirectory
                  and its configuration file
contents.

  $Id: build.xml,v 1.2 2004/05/11 15:36:23 jonathan Exp $
-->


<!-- A "project" describes a set of targets that may be
requested
  when Ant is executed. The "default" attribute defines
the
  target which is executed if no specific target is
requested,
  and the "basedir" attribute defines the current working
directory
  from which Ant executes the requested task. This is
normally
  set to the current working directory.
-->

<project name="my-hello" default="compile" basedir=".">



<!-- ===================== Property Definitions
=========================== -->


<!--

Each of the following properties are used in the build
script.
Values for these properties are set by the first place they
are
defined, from the following list:

* Definitions on the "ant" command line (ant -Dfoo=bar
compile).

* Definitions from a "build.properties" file in the top
level
 source directory of this application.

* Definitions from a "build.properties" file in the
developer's
 home directory.

* Default definitions in this build.xml file.

You will note below that property values can be composed
based on the
contents of previously defined properties. This is a
powerful technique
that helps you minimize the number of changes required when
your development
environment is modified. Note that property composition is
allowed within
"build.properties" files as well as in the "build.xml"
script.

-->

<property file="build.properties"/>
<property file="${user.home}/build.properties"/>


<!-- ==================== File and Directory Names
======================== -->


<!--

These properties generally define file and directory names
(or paths) that
affect where the build process stores its outputs.

app.name         Base name of this application, used to
              construct filenames and directories.
              Defaults to "myapp".

app.path         Context path to which this application
should be
              deployed (defaults to "/" plus the
value of the
              "app.name" property).

app.version       Version number of this iteration of
the application.

build.home       The directory into which the "prepare"
and
              "compile" targets will generate their
output.
              Defaults to "build".

catalina.home     The directory in which you have
installed
              a binary distribution of Tomcat 5.  
This will
              be used by the "deploy" target.

dist.home        The name of the base directory in which
              distribution files are created.
              Defaults to "dist".

manager.password   The login password of a user that is
assigned the
              "manager" role (so that he or she can
execute
              commands via the "/manager" web
application)

manager.url       The URL of the "/manager" web
application on the
              Tomcat installation to which we will
deploy web
              applications and web services.

manager.username   The login username of a user that is
assigned the
              "manager" role (so that he or she can
execute
              commands via the "/manager" web
application)

-->

<property name="app.name"    value="myapp"/>
<property name="app.path"    value="/${app.name}"/>
<property name="app.version"  value="0.1-dev"/>
<property name="build.home"   value="${basedir}/build"/>
<property name="catalina.home" value="/usr/local/tomcat"/>
<property name="dist.home"   value="${basedir}/dist"/>
<property name="docs.home"   value="${basedir}/docs"/>
<property name="manager.url"  
value="http://localhost:8080/manager "/>
<property name="src.home"    value="${basedir}/src"/>
<property name="web.home"    value="${basedir}/web"/>


<!-- ================== Custom Ant Task Definitions
======================= -->


<!--

These properties define custom tasks for the Ant build tool
that interact
with the "/manager" web application installed with Tomcat
5. Before they
can be successfully utilized, you must perform the
following steps:

- Copy the file "server/lib/catalina-ant.jar" from your
Tomcat 5
 installation into the "lib" directory of your Ant
installation.

- Create a "build.properties" file in your application's
top-level
 source directory (or your user login home directory) that
defines
 appropriate values for
the "manager.password", "manager.url", and
 "manager.username" properties described above.

For more information about the Manager web application, and
the functionality
of these tasks, see <http://localhost:8080/tomcat-
docs/manager-howto.html>.

-->

<taskdef name="deploy"  
classname="org.apache.catalina.ant.DeployTask"/>
<taskdef name="list"    
classname="org.apache.catalina.ant.ListTask"/>
<taskdef name="reload"  
classname="org.apache.catalina.ant.ReloadTask"/>
<taskdef name="undeploy"
classname="org.apache.catalina.ant.UndeployTask"/>


<!-- ==================== Compilation Control Options
==================== -->

<!--

These properties control option settings on the Javac
compiler when it
is invoked using the <javac> task.

compile.debug     Should compilation include the debug
option?

compile.deprecation Should compilation include the
deprecation option?

compile.optimize   Should compilation include the
optimize option?

-->

<property name="compile.debug"     value="true"/>
<property name="compile.deprecation" value="false"/>
<property name="compile.optimize"   value="true"/>



<!-- ==================== External Dependencies
=========================== -->


<!--

Use property values to define the locations of external JAR
files on which
your application will depend. In general, these values
will be used for
two purposes:
* Inclusion on the classpath that is passed to the Javac
compiler
* Being copied into the "/WEB-INF/lib" directory during
execution
 of the "deploy" target.

Because we will automatically include all of the Java
classes that Tomcat 5
exposes to web applications, we will not need to explicitly
list any of those
dependencies. You only need to worry about external
dependencies for JAR
files that you are going to include inside your "/WEB-
INF/lib" directory.

-->

<!-- Dummy external dependency -->
<!--
<property name="foo.jar"
      value="/path/to/foo.jar"/>
-->


<!-- ==================== Compilation Classpath
=========================== -->

<!--

Rather than relying on the CLASSPATH environment variable,
Ant includes
features that makes it easy to dynamically construct the
classpath you
need for each compilation. The example below constructs
the compile
classpath to include the servlet.jar file, as well as the
other components
that Tomcat makes available to web applications
automatically, plus anything
that you explicitly added.

-->

<path id="compile.classpath">

 <!-- Include all JAR files that will be included in /WEB-
INF/lib -->
 <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION
*** -->
<!--
 <pathelement location="${foo.jar}"/>
-->

 <!-- Include all elements that Tomcat exposes to
applications -->
 <pathelement location="${catalina.home}/common/classes"/>
 <fileset dir="${catalina.home}/common/endorsed">
  <include name="*.jar"/>
 </fileset>
 <fileset dir="${catalina.home}/common/lib">
  <include name="*.jar"/>
 </fileset>
 <pathelement location="${catalina.home}/shared/classes"/>
 <fileset dir="${catalina.home}/shared/lib">
  <include name="*.jar"/>
 </fileset>

</path>



<!-- ==================== All Target
====================================== -->

<!--

The "all" target is a shortcut for running the "clean"
target followed
by the "compile" target, to force a complete recompile.

-->

<target name="all" depends="clean,compile"
description="Clean build and dist directories, then
compile"/>



<!-- ==================== Clean Target
==================================== -->

<!--

The "clean" target deletes any previous "build" and "dist"
directory,
so that you can be ensured the application can be built
from scratch.

-->

<target name="clean"
description="Delete old build and dist directories">
 <delete dir="${build.home}"/>
 <delete dir="${dist.home}"/>
</target>



<!-- ==================== Compile Target
================================== -->

<!--

The "compile" target transforms source files (from
your "src" directory)
into object files in the appropriate location in the build
directory.
This example assumes that you will be including your
classes in an
unpacked directory hierarchy under "/WEB-INF/classes".

-->

<target name="compile" depends="prepare"
description="Compile Java sources">

 <!-- Compile Java classes as necessary -->
 <mkdir   dir="${build.home}/WEB-INF/classes"/>
 <javac srcdir="${src.home}"
     destdir="${build.home}/WEB-INF/classes"
      debug="${compile.debug}"
  deprecation="${compile.deprecation}"
    optimize="${compile.optimize}">
    <classpath refid="compile.classpath"/>
 </javac>

 <!-- Copy application resources -->
 <copy todir="${build.home}/WEB-INF/classes">
  <fileset dir="${src.home}" excludes="**/*.java"/>
 </copy>

</target>



<!-- ==================== Dist Target
===================================== -->


<!--

The "dist" target creates a binary distribution of your
application
in a directory structure ready to be archived in a tar.gz
or zip file.
Note that this target depends on two others:

* "compile" so that the entire web application (including
external
 dependencies) will have been assembled

* "javadoc" so that the application Javadocs will have been
created

-->

<target name="dist" depends="compile,javadoc"
description="Create binary distribution">

 <!-- Copy documentation subdirectories -->
 <mkdir  dir="${dist.home}/docs"/>
 <copy   todir="${dist.home}/docs">
  <fileset dir="${docs.home}"/>
 </copy>

 <!-- Create application JAR file -->
 <jar jarfile="${dist.home}/${app.name}-${app.version}.war"
    basedir="${build.home}"/>

 <!-- Copy additional files to ${dist.home} as necessary --
>

</target>



<!-- ==================== Install Target
================================== -->

<!--

The "install" target tells the specified Tomcat 5
installation to dynamically
install this web application and make it available for
execution. It does
*not* cause the existence of this web application to be
remembered across
Tomcat restarts; if you restart the server, you will need
to re-install all
this web application.

If you have already installed this application, and simply
want Tomcat to
recognize that you have updated Java classes (or the
web.xml file), use the
"reload" target instead.

NOTE: This target will only succeed if it is run from the
same server that
Tomcat is running on.

NOTE: This is the logical opposite of the "remove" target.

-->

<target name="install" depends="compile"
description="Install application to servlet container">

 <deploy url="${manager.url}"
   username="${manager.username}"
   password="${manager.password}"
      path="${app.path}"
   localWar="file://${build.home}"/>

</target>


<!-- ==================== Javadoc Target
================================== -->

<!--

The "javadoc" target creates Javadoc API documentation for
the Java
classes included in your application. Normally, this is
only required
when preparing a distribution release, but is available as
a separate
target in case the developer wants to create Javadocs
independently.

-->

<target name="javadoc" depends="compile"
description="Create Javadoc API documentation">

 <mkdir       dir="${dist.home}/docs/api"/>
 <javadoc sourcepath="${src.home}"
         destdir="${dist.home}/docs/api"
      packagenames="*">
  <classpath refid="compile.classpath"/>
 </javadoc>

</target>



<!-- ====================== List Target
=================================== -->

<!--

The "list" target asks the specified Tomcat 5 installation
to list the
currently running web applications, either loaded at
startup time or
installed dynamically. It is useful to determine whether
or not the
application you are currently developing has been installed.

-->

<target name="list"
description="List installed applications on servlet
container">

 <list   url="${manager.url}"
    username="${manager.username}"
    password="${manager.password}"/>

</target>


<!-- ==================== Prepare Target
================================== -->

<!--

The "prepare" target is used to create the "build"
destination directory,
and copy the static contents of your web application to
it. If you need
to copy static files from external dependencies, you can
customize the
contents of this task.

Normally, this task is executed indirectly when needed.

-->

<target name="prepare">

 <!-- Create build directories as needed -->
 <mkdir dir="${build.home}"/>
 <mkdir dir="${build.home}/WEB-INF"/>
 <mkdir dir="${build.home}/WEB-INF/classes"/>


 <!-- Copy static content of this web application -->
 <copy todir="${build.home}">
  <fileset dir="${web.home}"/>
 </copy>

 <!-- Copy external dependencies as required -->
 <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION
*** -->
 <mkdir dir="${build.home}/WEB-INF/lib"/>
<!--
 <copy todir="${build.home}/WEB-INF/lib"
file="${foo.jar}"/>
-->

 <!-- Copy static files from external dependencies as
needed -->
 <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION
*** -->

</target>


<!-- ==================== Reload Target
=================================== -->

<!--

The "reload" target tells the specified Tomcat 5
installation to dynamically
reload this web application, to reflect changes in the
underlying classes or
the "web.xml" deployment descriptor.

-->

<target name="reload" depends="compile"
description="Reload application on servlet container">

 <reload url="${manager.url}"
   username="${manager.username}"
   password="${manager.password}"
      path="${app.path}"/>

</target>


<!-- ==================== Remove Target
=================================== -->

<!--

The "remove" target tells the specified Tomcat 5
installation to dynamically
remove this web application from service.

NOTE: This is the logical opposite of the "install" target.

-->

<target name="remove"
description="Remove application on servlet container">

 <undeploy url="${manager.url}"
    username="${manager.username}"
    password="${manager.password}"
       path="${app.path}"/>

</target>


</project>

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@(protected)
For additional commands, e-mail: tomcat-user-help@(protected)

©2008 junlu.com - Jax Systems, LLC, U.S.A.