Directory structure in Tomcat for JSP

I am new to JSP/Tomcat
I have the following jsp page, classtest.jsp stored in %tomcat%webapps/myproject
<html>
<head>
</head>
<body>
<%@ page import="com.clanda.mypack.*" %>
<%
Sayhi myhi = new Sayhi();
int x = myhi.doSpeak();
out.println(x);
%>
</body>
</html>and the class file defining Sayhi is in %tomcat%webapps/myproject/WEB-INF/classes/com/clanda/mypack/Sayhi.class
package mypack;
public class Sayhi {
     public int doSpeak() {
          return 123;
}I get the following Tomcat/Jasper error "Sayhi cannot be resolved to a type". I have run out of ideas? Can some one please put me right.
Many thanks
Bob

You have defined your Sayhi class to be in the mypack package but you have put it under com/clanda/mypack/.
Recompile your Sayhi class in the correct package:
package com.clanda.mypack;Then replace the Sayhi .class file under %tomcat%webapps/myproject/WEB-INF/classes/com/clanda/mypack/

Similar Messages

  • Directory Structure ?s for an Exploded Web Application

    We have an application that consists only of JSPs and Servlets, no
    EJBs. I am researching whether or not it's worthwhile to start using
    EJBs. We're also migrating from Weblogic 5 to 6.1. I've managed to
    migrate our application fine and have it up and running on WLS 6.1.
    I'm confused about the exploded directory structure, the
    application.xml file, where to put the EJBs and whether or not I have
    to jar them. Here's our current directory structure:
    DefaultWebApp/               JSPs here
    DefaultWebApp/WEB-INF          web.xml and weblogic.xml here
    DefaultWebApp/WEB-INF/classes     Servlets and other classes here
    DefaultWebApp/WEB-INF/lib     do my un-jar-ed EJBs go here?
    I've been reading a lot of BEA's documentation, particularly
    ‘Deploying an Exploded J2EE Application' and a ‘Web Application PDF',
    and looking for relevant threads on the weblogic.developer.interest
    groups. It looks like the application.xml should go in a new
    DefaultWebApp/META-INF directory. But where do the EJBs go?
    I also see some directory structures with another /web directory
    that's confusing me.
    Oh, I've also managed to compile and jar up a trial Stateless Session
    EJB. Then I think I ‘auto-deployed' it into the /applications
    directory, and Weblogic seems to recognize it. But when I tried to
    reference it in a JSP, I got an error message ‘class x is public,
    should be declared in a file named x.java'. I'm assuming this is
    related to the application.xml, where I need to define the ejb
    directory.
    Thanks.

    To deploy your web app together with your EJBs, you need to create
    an "EAR" structure. Both your webapp and your EJB jars will be within
    this new structure, at the same level. You may jar up your EJBs, or you
    may explode their structure, it's up to you.
    The resulting structure should look something like below:
    EnterpriseApp/ <-- new top level
    EnterpriseApp/META-INF/
    EnterpriseApp/META-INF/application.xml
    EnterpriseApp/lib/ <-- shared libraries (if any)
    EnterpriseApp/EJB/ <-- ejbs go here
    EnterpriseApp/EJB/META-INF/ejb-jar.xml
    EnterpriseApp/EJB/META-INF/weblogic-ejb-jar.xml
    EnterpriseApp/EJB/com/your/ejb/classes/here
    EnterpriseApp/WebApp/ <-- move your current app here
    EnterpriseApp/WebApp/index.jsp <-- JSPs goes here
    EnterpriseApp/WebApp/other.jsp
    EnterpriseApp/WebApp/WEB-INF/web.xml
    EnterpriseApp/WebApp/WEB-INF/weblogic.xml
    EnterpriseApp/WebApp/WEB-INF/lib <-- ui libraries go here
    EnterpriseApp/WebApp/WEB-INF/classes <-- servlets go here
    The above structure is identical to the structure to an EAR file, only "exploded"
    as actual files and directories instead of being "jarred" into a single EAR file.
    Your application.xml in this case would specify something like:
    <application>
    <display-name>EnterpriseApp</display-name>
    <description>My Enterprise Application</display-name>
    <module>
    <ejb>EJB</ejb>
    </module>
    <module>
    <web>
    <web-uri>WebApp</web-uri>
    <context-root>/yourAppRoot</context-root>
    </web>
    </module>
    </application>
    And in config.xml you would have an entry similar to:
    <Application Deployed="true" Name="EnterpriseApp"
    Path=".\config\mydomain\applications\EnterpriseApp">
    <WebAppComponent Name="ui" Targets="myserver" URI="WebApp"/>
    <EJBComponent Name="ejb" Targets="myserver" URI="EJB"/>
    </Application>
    regards,
    -Ade

  • Using OCI driver with Tomcat for JSP?Servlets

    We have a need to switch to OCI drivers instead of JDBC thin driver. Our tomcat is running on Sun and Linix platform. Does anyone have real world experience in terms of configuring the OCI driver and connection pooling? Please help to provide some configuration tips.

    You should repost this in the JDBC forum here on OTN so that you can get some better expertise in this area.
    The URL is http://forums.oracle.com/forums/forum.jsp?forum=99
    Hope this helps,
    Rob

  • Default Directory for JSP

    Using Eclipse with Tomcat 6.0 Server, I have the following directory structure:
    /Project
    /WebContent
      webpage.jsp
      /PicsI am trying to access files within the Pics directory through the JSP. I figure this should be possible by getting the JSP document's directory and calling the Pics directory from that. However, I can't seem to figure out how to do this. I have tried
    new File(".").getCanonicalPath();but that returns a path to my user directory within the operating system. I feel like this should be really easy, and I feel pretty dumb being unable to figure it out (nor able to find this on Google/SDN), so if somebody could just put me out of my misery with a line or two of code (or even just the call I need to make) I would really appreciate it.
    Thanks!

    ServletContext#getRealPath() returns the absolute path for the given relative web path.
    String absolutePathOfWebRoot = getServletContextSomehow().getRealPath("/");
    String absolutePathOfPicsDirectory = getServletContextSomehow().getRealPath("/Pics");

  • Project directory structure

    I'm do jsp development onto Tomcat and about 3 months ago moved to Jdev. I've set up my project to go against the Tomcat directory structure but am not sure this is the best thing to do when using jdev. Does anybody have a recommended directory structure to use for a project?

    I got this worked out.

  • What is the directory structure of EJB applications?

    I am new to EJB program. I know that after the development is done, we package the EJB components into .jar file, and package the Web components (HTML/JSP/Servlets/JavaBeans) into .war file, and then together we package .jar file and .war file into a single .ear file. Then we just deploy the .ear file into WebLogic's application directory.
    But, before the deployment, I mean during the development, what kind of directory structure is good for us to develop our EJB, HTML, JSP, Servlets, and JavaBean components?
    Previously, when I was doing JSP/Servlets applications, my directoy structure is:
    webapps\
    --------myapplication\
    -----------------------*.html
    -----------------------images\
    ------------------------------*.jpeg, *.gif
    -----------------------jsp\
    ------------------------------*.jsp
    -----------------------WEB-INF\
    ------------------------------web.xml
    ------------------------------classes\
    -------------------------------------Java Servlets located here
    -------------------------------------beans\
    -------------------------------------------JavaBeans are located here
    Now, I am doing EJB applications, what should be the directory structure?
    Thank you very much for your help!
    Jingzhi

    I have been involved in a few enterprise applications but have not been happy with the packaging structures used and am starting a new one now and am looking for other examples.
    this is what I've used before.
    web/
    classes/
    client/
    server/
    but if a class was used in the client and server it was put under the server/ package. I feel that more separation is needed.

  • Directory Structures in sun one Web Server 6.1

    I am struggling to run my j2ee application on newly set up sun one web server 6.1 on my pc.
    Can somebody please help me expalining directory structure in detail for sun one web server 6.1?
    Where should I place my java beans and it's class files?
    what should WEB-INF -> lib folder contains?
    I make war file using j2ee deployment tool. Do i need to change anything in web.xml and sun-web.xml?
    Thanks in advance.

    Thanks chris.
    It looks better now. still it gives following errors in error log. I only have java beans not the EJB.
    here are the error.
    [20/Oct/2003:11:35:59] info ( 632): Internal Info: loading servlet /peoplechannel/SearchLDAPIn.jsp
    [20/Oct/2003:11:35:59] warning ( 632): Internal error: newInstance failed (servlet class=_jsps._peoplechannel._SearchLDAPIn_jsp): java.lang.IllegalAccessException: Class com.iplanet.server.http.servlet.NSServletEntity can not access a member of class jsps.peoplechannel._SearchLDAPIn_jsp with modifiers "public"
    [20/Oct/2003:11:35:59] warning ( 632): Internal error: Failed to get GenericServlet. (uri=/peoplechannel/SearchLDAPIn.jsp,SCRIPT_NAME=/peoplechannel/SearchLDAPIn.jsp)
    what's the syntax to change loading precompiled jsp to force web server to compile jsp?
    I really need urgent help.
    Thanks,
    naimesh

  • Directory Structures

    Hi,
    This is about the directory structures to use for development and
    deployment under weblogic. By default, as you all know, weblogic comes with
    a server called "myserver" whose directory strcuture has within it the
    public_html, serverclasses, servletclasses and clientclasses directories,
    with the jar files for the examples all residing in the myserver directory.
    The general tendency for developers is to use simply use that very structure
    as is. I think that may prove to be unwieldy during deployment (especially
    when there will be multiple servers running on multiple machines, etc.) as
    well as during development (integrating with source code control, etc.)
    Here are my questions:
    1) How have people weblogic developers organized their directory structures
    for deployment? It seems to me that it would make sense to have a directory
    structure that has at least a "lib" directory under which the jar files were
    put, a "log" directory for log files, a "cert" directory for certificates,
    etc.
    2) In addition, is there an absloute need for the myserver directory to sit
    under the weblogic tree? I would think it would make sense to not have the
    deployment directory structures not tied to the weblogic installation's
    location.
    3) If there are multiple servers that will be deployed (each instantiating
    its own set of services that are implemented as session and entity EJBs),
    does one introduce an entire directory structure for each server or have a
    common directory structure with each server having its own properties file ?
    Currently, I have it setup so that each server that is introduced, e.g.,
    pricing servers, fulfillment servers, etc. has its own properties file and
    that the entire directory tree sits separate from the weblogic installation,
    to facilitate tight integration with source code control. Having resolved
    the regular issues that arise with the CLASSPATH, ClassCastExceptions, etc.,
    we're up and running, but I have had a tough time convincing my developers
    about the merits of deviating from the standard development tree stcucture.
    Do people have any opinions about this, and are there any experiences they
    can share with me? I'd be more than willing to to change course based on
    others' experiences.
    Sorry for the long-winded message.
    TIA,
    Prashanth

    Prashanth Nandavanam wrote:
    >
    Hi,
    This is about the directory structures to use for development and
    deployment under weblogic. By default, as you all know, weblogic comes with
    a server called "myserver" whose directory strcuture has within it the
    public_html, serverclasses, servletclasses and clientclasses directories,
    with the jar files for the examples all residing in the myserver directory.
    The general tendency for developers is to use simply use that very structure
    as is. I think that may prove to be unwieldy during deployment (especially
    when there will be multiple servers running on multiple machines, etc.) as
    well as during development (integrating with source code control, etc.)
    Here are my questions:
    1) How have people weblogic developers organized their directory structures
    for deployment? It seems to me that it would make sense to have a directory
    structure that has at least a "lib" directory under which the jar files were
    put, a "log" directory for log files, a "cert" directory for certificates,
    etc.That's how I'd do it. I think that the locations of all the
    resources you need are configurable. If they're not, let us know.
    2) In addition, is there an absloute need for the myserver directory to sit
    under the weblogic tree? I would think it would make sense to not have the
    deployment directory structures not tied to the weblogic installation's
    location.No, it can be anywhere you like. Make sure you adjust the security
    policy
    file so Java 2 will let the server access your classes.
    3) If there are multiple servers that will be deployed (each instantiating
    its own set of services that are implemented as session and entity EJBs),
    does one introduce an entire directory structure for each server or have a
    common directory structure with each server having its own properties file ?
    Currently, I have it setup so that each server that is introduced, e.g.,
    pricing servers, fulfillment servers, etc. has its own properties file and
    that the entire directory tree sits separate from the weblogic installation,
    to facilitate tight integration with source code control. Having resolved
    the regular issues that arise with the CLASSPATH, ClassCastExceptions, etc.,
    we're up and running, but I have had a tough time convincing my developers
    about the merits of deviating from the standard development tree stcucture.The "standard" directory tree exists only for the purpose of running
    the examples that are shipped with WLS. The WebLogic development
    team does exactly what you propose to do, and for the reasons you
    state: to keep our deployment configuration under source control in a
    location that keeps it separate from the examples support in myserver
    and to make it easy to re-install the server without disturbing our
    configuration files. We routinely run WebLogic Server from a
    configuration
    that completely ignores the WEBLOGICHOME/myserver directory.
    Do people have any opinions about this, and are there any experiences they
    can share with me? I'd be more than willing to to change course based on
    others' experiences.
    Sorry for the long-winded message.
    TIA,
    Prashanth--
    Chuck Karish BEA Systems
    (415) 402-7692 http://www.bea.com/

  • Tomcat directory structure + jsp

    Hi all,
    I have been trying for a long time now to setup my tomcat-directory as described, but I don't get my application running... My directory structure is currently as follows:
    d:\
        webapp\
             web\
                  WEB-INF\
                        classes\
                             servlet
                        libThe path for tomcat is set to d:\webapp\web, where my JSPs are. From the JSPs, I start some applets - the problem is, where do I have to put them? They are in the directory project; if I put this directory in WEB-INF/classes, they are not found. If I put them directly in the web-directory, they are found, but not the classes they depend on... I can then put all the classes I need in the web-directory, and my application runs, but as far as I understood, this is not the supposed setting :-( And besides, the only reason for the WEB-INF directory would then be the servlets inside (which run without problems!)
    Might I do something wrong in calling the applets? In the moment, I start them with <applet code="project/Start.class"> Or do I need to change something in the web.xml file?
    Thanks for any hints,
    Thea

    but as far as I understood, this is not the supposed setting That IS the appropriate setting.
    An applet runs on the client machine.
    Therefore the client has to download all the class files to run the applet.
    The client cannot download any classes that are under WEB-INF. WEB-INF directory is for the server only.
    Therefore any classes needed to run your applet must be outside of the WEB-INF folder, so they can be downloaded.
    JSP/Servlet code runs on the server side. The code for this you can put under WEB-INF, and it will only be available to the server. That way you have your application, but don't have the code freely downloadable.
    Cheers,
    evnafets

  • Problem with Configuring Tomcat for running jsp web applications..Plz HELP

    I am using Tomcat 5.5 and Jdk 1.5.0_12 and Oracle 10g. I am using jdbc-odbc bridge connection
    to connect to the database. I have placed my project folder called
    tdm under the webapps folder in Tomcat. This 'tdm' folder consists of
    a collection of html pages,jsp pages and images of my project. Also I created a
    WEB-INF folderand in that I have lib folder which contains catalina-root.jar
    , classes12.jar and nls_charset.jar files. And also in the WEB-INF folder I have the web.xml
    file which looks like this
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!--
    Copyright 2004 The Apache Software Foundation
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    -->
    <web-app>
    <resource-ref>
    <description>Oracle Datasource example</description>
    <res-ref-name>jdbc/gdn</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    My Server.xml file in Tomcat\conf folder is as follows
    <!-- Example Server Configuration File -->
    <!-- Note that component elements are nested corresponding to their
    parent-child relationships with each other -->
    <!-- A "Server" is a singleton element that represents the entire JVM,
    which may contain one or more "Service" instances. The Server
    listens for a shutdown command on the indicated port.
    Note: A "Server" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <Server port="8005" shutdown="SHUTDOWN">
    <!-- Comment these entries out to disable JMX MBeans support used for the
    administration web application -->
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    <!-- Global JNDI resources -->
    <GlobalNamingResources>
    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    <!-- Editable user database that can also be used by
    UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
    type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    pathname="conf/tomcat-users.xml" />
    <Resource name="jdbc/gdn" auth="Container"
    type="javax.sql.DataSource" driverClassName="sun.jdbc.odbc.JdbcOdbcDriver"
    url="jdbc:odbc:gdn"
    username="system" password="tiger" maxActive="20" maxIdle="10"
    maxWait="-1"/>
    </GlobalNamingResources>
    <!-- A "Service" is a collection of one or more "Connectors" that share
    a single "Container" (and therefore the web applications visible
    within that Container). Normally, that Container is an "Engine",
    but this is not required.
    Note: A "Service" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <!-- Define the Tomcat Stand-Alone Service -->
    <Service name="Catalina">
    <!-- A "Connector" represents an endpoint by which requests are received
    and responses are returned. Each Connector passes requests on to the
    associated "Container" (normally an Engine) for processing.
    By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
    You can also enable an SSL HTTP/1.1 Connector on port 8443 by
    following the instructions below and uncommenting the second Connector
    entry. SSL support requires the following steps (see the SSL Config
    HOWTO in the Tomcat 5 documentation bundle for more detailed
    instructions):
    * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
    later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
    * Execute:
    %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
    $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)
    with a password value of "changeit" for both the certificate and
    the keystore itself.
    By default, DNS lookups are enabled when a web application calls
    request.getRemoteHost(). This can have an adverse impact on
    performance, so you can disable it by setting the
    "enableLookups" attribute to "false". When DNS lookups are disabled,
    request.getRemoteHost() will return the String version of the
    IP address of the remote client.
    -->
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector
    port="5050" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" />
    <!-- Note : To disable connection timeouts, set connectionTimeout value
    to 0 -->
         <!-- Note : To use gzip compression you could set the following properties :
                   compression="on"
                   compressionMinSize="2048"
                   noCompressionUserAgents="gozilla, traviata"
                   compressableMimeType="text/html,text/xml"
         -->
    <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
    <!--
    <Connector port="8443"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" disableUploadTimeout="true"
    acceptCount="100" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" />
    -->
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009"
    enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
    <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
    <!-- See proxy documentation for more information about using this. -->
    <!--
    <Connector port="8082"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" acceptCount="100" connectionTimeout="20000"
    proxyPort="80" disableUploadTimeout="true" />
    -->
    <!-- An Engine represents the entry point (within Catalina) that processes
    every request. The Engine implementation for Tomcat stand alone
    analyzes the HTTP headers included with the request, and passes them
    on to the appropriate Host (virtual host). -->
    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Catalina" defaultHost="localhost">
    <!-- The request dumper valve dumps useful debugging information about
    the request headers and cookies that were received, and the response
    headers and cookies that were sent, for all requests received by
    this instance of Tomcat. If you care only about requests to a
    particular virtual host, or a particular application, nest this
    element inside the corresponding <Host> or <Context> entry instead.
    For a similar mechanism that is portable to all Servlet 2.4
    containers, check out the "RequestDumperFilter" Filter in the
    example application (the source for this filter may be found in
    "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
    Request dumping is disabled by default. Uncomment the following
    element to enable it. -->
    <!--
    <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
    -->
    <!-- Because this Realm is here, an instance will be shared globally -->
    <!-- This Realm uses the UserDatabase configured in the global JNDI
    resources under the key "UserDatabase". Any edits
    that are performed against this UserDatabase are immediately
    available for use by the Realm. -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase"/>
    <!-- Comment out the old realm but leave here for now in case we
    need to go back quickly -->
    <!--
    <Realm className="org.apache.catalina.realm.MemoryRealm" />
    -->
    <!-- Replace the above Realm with one of the following to get a Realm
    stored in a database and accessed via JDBC -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="org.gjt.mm.mysql.Driver"
    connectionURL="jdbc:mysql://localhost/authority"
    connectionName="test" connectionPassword="test"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="oracle.jdbc.driver.OracleDriver"
    connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
    connectionName="scott" connectionPassword="tiger"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="sun.jdbc.odbc.JdbcOdbcDriver"
    connectionURL="jdbc:odbc:CATALINA"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!-- Define the default virtual host
    Note: XML Schema validation will not work with Xerces 2.2.
    -->
    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <!-- Defines a cluster for this node,
    By defining this element, means that every manager will be changed.
    So when running a cluster, only make sure that you have webapps in there
    that need to be clustered and remove the other ones.
    A cluster has the following parameters:
    className = the fully qualified name of the cluster class
    name = a descriptive name for your cluster, can be anything
    mcastAddr = the multicast address, has to be the same for all the nodes
    mcastPort = the multicast port, has to be the same for all the nodes
    mcastBindAddr = bind the multicast socket to a specific address
    mcastTTL = the multicast TTL if you want to limit your broadcast
    mcastSoTimeout = the multicast readtimeout
    mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
    mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
    tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes
    tcpListenAddress = the listen address (bind address) for TCP cluster request on this host,
    in case of multiple ethernet cards.
    auto means that address becomes
    InetAddress.getLocalHost().getHostAddress()
    tcpListenPort = the tcp listen port
    tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
    has a wakup bug in java.nio. Set to 0 for no timeout
    printToScreen = true means that managers will also print to std.out
    expireSessionsOnShutdown = true means that
    useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
    false means to replicate the session after each request.
    false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager)
    <%
    HashMap map = (HashMap)session.getAttribute("map");
    map.put("key","value");
    %>
    replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
    * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
    * Synchronous means that the thread that executes the request, is also the
    thread the replicates the data to the other nodes, and will not return until all
    nodes have received the information.
    * Asynchronous means that there is a specific 'sender' thread for each cluster node,
    so the request thread will queue the replication request into a "smart" queue,
    and then return to the client.
    The "smart" queue is a queue where when a session is added to the queue, and the same session
    already exists in the queue from a previous request, that session will be replaced
    in the queue instead of replicating two requests. This almost never happens, unless there is a
    large network delay.
    -->
    <!--
    When configuring for clustering, you also add in a valve to catch all the requests
    coming in, at the end of the request, the session may or may not be replicated.
    A session is replicated if and only if all the conditions are met:
    1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
    2. a session exists (has been created)
    3. the request is not trapped by the "filter" attribute
    The filter attribute is to filter out requests that could not modify the session,
    hence we don't replicate the session after the end of this request.
    The filter is negative, ie, anything you put in the filter, you mean to filter out,
    ie, no replication will be done on requests that match one of the filters.
    The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
    filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
    ending with .gif and .js are intercepted.
    The deployer element can be used to deploy apps cluster wide.
    Currently the deployment only deploys/undeploys to working members in the cluster
    so no WARs are copied upons startup of a broken node.
    The deployer watches a directory (watchDir) for WAR files when watchEnabled="true"
    When a new war file is added the war gets deployed to the local instance,
    and then deployed to the other instances in the cluster.
    When a war file is deleted from the watchDir the war is undeployed locally
    and cluster wide
    -->
    <!--
    <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
    managerClassName="org.apache.catalina.cluster.session.DeltaManager"
    expireSessionsOnShutdown="false"
    useDirtyFlag="true"
    notifyListenersOnReplication="true">
    <Membership
    className="org.apache.catalina.cluster.mcast.McastService"
    mcastAddr="228.0.0.4"
    mcastPort="45564"
    mcastFrequency="500"
    mcastDropTime="3000"/>
    <Receiver
    className="org.apache.catalina.cluster.tcp.ReplicationListener"
    tcpListenAddress="auto"
    tcpListenPort="4001"
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>
    <Sender
    className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
    replicationMode="pooled"
    ackTimeout="15000"/>
    <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
    filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
    <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
    tempDir="/tmp/war-temp/"
    deployDir="/tmp/war-deploy/"
    watchDir="/tmp/war-listen/"
    watchEnabled="false"/>
    </Cluster>
    -->
    <!-- Normally, users must authenticate themselves to each web app
    individually. Uncomment the following entry if you would like
    a user to be authenticated the first time they encounter a
    resource protected by a security constraint, and then have that
    user identity maintained across all web applications contained
    in this virtual host. -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->
    <!-- Access log processes all requests for this virtual host. By
    default, log files are created in the "logs" directory relative to
    $CATALINA_HOME. If you wish, you can specify a different
    directory with the "directory" attribute. Specify either a relative
    (to $CATALINA_HOME) or absolute path to the desired directory.
    -->
    <!--
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="common" resolveHosts="false"/>
    -->
    <!-- Access log processes all requests for this virtual host. By
    default, log files are created in the "logs" directory relative to
    $CATALINA_HOME. If you wish, you can specify a different
    directory with the "directory" attribute. Specify either a relative
    (to $CATALINA_HOME) or absolute path to the desired directory.
    This access log implementation is optimized for maximum performance,
    but is hardcoded to support only the "common" and "combined" patterns.
    -->
    <!--
    <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="common" resolveHosts="false"/>
    -->
    <Context path="/tdm" docBase="tdm" debug="0" reloadable="true" />
    </Host>
    </Engine>
    </Service>
    </Server>
    I have set the context path to /tdm in the server.xml file. Should this be placed in context.xml?
    My first page in the project is called Homepage.html. To start my project I give http://localhost:5050/tdm/homepage.html
    in a browser. Here I accept a username and password from the user and then do the validation in
    a valid.jsp file, where I connect to the database and check and use jsp:forward to go to next pages
    accordingly. However when I enter the username and password and click Go in the homepage, nothing is
    displayed on the next page. The URL in the browser says valid.jsp but a blank screen appears.
    WHY DOES IT HAPPEN SO? DOES IT MEAN THAT TOMCAT IS NOT RECOGNIZING JAVA IN MY SYSTEM OR IS IT A PROBLEM
    WITH THE DATABASE CONNECTION OR SOMETHING ELSE? I FEEL THAT TOMCAT IS NOT EXECUTING JSP COMMANDS?
    IS IT POSSIBLE?WHY WILL THIS HAPPEN?
    I set the JAVA_HOME and CATALINA_HOME environment to the jdk and tomcat folders resp.
    Is there any other thing that I need to set in classpath? Should I have my project as a
    WAR file in the webapps of TOMCAT or just a folder i.e. directory structure will fine?

    I am using Tomcat 5.5 and Jdk 1.5.0_12 and Oracle 10g. I am using jdbc-odbc bridge connection
    to connect to the database. I have placed my project folder called
    tdm under the webapps folder in Tomcat. This 'tdm' folder consists of
    a collection of html pages,jsp pages and images of my project. Also I created a
    WEB-INF folderand in that I have lib folder which contains catalina-root.jar
    , classes12.jar and nls_charset.jar files. And also in the WEB-INF folder I have the web.xml
    file which looks like this
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!--
    Copyright 2004 The Apache Software Foundation
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    -->
    <web-app>
    <resource-ref>
    <description>Oracle Datasource example</description>
    <res-ref-name>jdbc/gdn</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    My Server.xml file in Tomcat\conf folder is as follows
    <!-- Example Server Configuration File -->
    <!-- Note that component elements are nested corresponding to their
    parent-child relationships with each other -->
    <!-- A "Server" is a singleton element that represents the entire JVM,
    which may contain one or more "Service" instances. The Server
    listens for a shutdown command on the indicated port.
    Note: A "Server" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <Server port="8005" shutdown="SHUTDOWN">
    <!-- Comment these entries out to disable JMX MBeans support used for the
    administration web application -->
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    <!-- Global JNDI resources -->
    <GlobalNamingResources>
    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    <!-- Editable user database that can also be used by
    UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
    type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    pathname="conf/tomcat-users.xml" />
    <Resource name="jdbc/gdn" auth="Container"
    type="javax.sql.DataSource" driverClassName="sun.jdbc.odbc.JdbcOdbcDriver"
    url="jdbc:odbc:gdn"
    username="system" password="tiger" maxActive="20" maxIdle="10"
    maxWait="-1"/>
    </GlobalNamingResources>
    <!-- A "Service" is a collection of one or more "Connectors" that share
    a single "Container" (and therefore the web applications visible
    within that Container). Normally, that Container is an "Engine",
    but this is not required.
    Note: A "Service" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <!-- Define the Tomcat Stand-Alone Service -->
    <Service name="Catalina">
    <!-- A "Connector" represents an endpoint by which requests are received
    and responses are returned. Each Connector passes requests on to the
    associated "Container" (normally an Engine) for processing.
    By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
    You can also enable an SSL HTTP/1.1 Connector on port 8443 by
    following the instructions below and uncommenting the second Connector
    entry. SSL support requires the following steps (see the SSL Config
    HOWTO in the Tomcat 5 documentation bundle for more detailed
    instructions):
    * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
    later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
    * Execute:
    %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
    $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)
    with a password value of "changeit" for both the certificate and
    the keystore itself.
    By default, DNS lookups are enabled when a web application calls
    request.getRemoteHost(). This can have an adverse impact on
    performance, so you can disable it by setting the
    "enableLookups" attribute to "false". When DNS lookups are disabled,
    request.getRemoteHost() will return the String version of the
    IP address of the remote client.
    -->
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector
    port="5050" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" />
    <!-- Note : To disable connection timeouts, set connectionTimeout value
    to 0 -->
         <!-- Note : To use gzip compression you could set the following properties :
                   compression="on"
                   compressionMinSize="2048"
                   noCompressionUserAgents="gozilla, traviata"
                   compressableMimeType="text/html,text/xml"
         -->
    <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
    <!--
    <Connector port="8443"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" disableUploadTimeout="true"
    acceptCount="100" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" />
    -->
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009"
    enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
    <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
    <!-- See proxy documentation for more information about using this. -->
    <!--
    <Connector port="8082"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" acceptCount="100" connectionTimeout="20000"
    proxyPort="80" disableUploadTimeout="true" />
    -->
    <!-- An Engine represents the entry point (within Catalina) that processes
    every request. The Engine implementation for Tomcat stand alone
    analyzes the HTTP headers included with the request, and passes them
    on to the appropriate Host (virtual host). -->
    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Catalina" defaultHost="localhost">
    <!-- The request dumper valve dumps useful debugging information about
    the request headers and cookies that were received, and the response
    headers and cookies that were sent, for all requests received by
    this instance of Tomcat. If you care only about requests to a
    particular virtual host, or a particular application, nest this
    element inside the corresponding <Host> or <Context> entry instead.
    For a similar mechanism that is portable to all Servlet 2.4
    containers, check out the "RequestDumperFilter" Filter in the
    example application (the source for this filter may be found in
    "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
    Request dumping is disabled by default. Uncomment the following
    element to enable it. -->
    <!--
    <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
    -->
    <!-- Because this Realm is here, an instance will be shared globally -->
    <!-- This Realm uses the UserDatabase configured in the global JNDI
    resources under the key "UserDatabase". Any edits
    that are performed against this UserDatabase are immediately
    available for use by the Realm. -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase"/>
    <!-- Comment out the old realm but leave here for now in case we
    need to go back quickly -->
    <!--
    <Realm className="org.apache.catalina.realm.MemoryRealm" />
    -->
    <!-- Replace the above Realm with one of the following to get a Realm
    stored in a database and accessed via JDBC -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="org.gjt.mm.mysql.Driver"
    connectionURL="jdbc:mysql://localhost/authority"
    connectionName="test" connectionPassword="test"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="oracle.jdbc.driver.OracleDriver"
    connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
    connectionName="scott" connectionPassword="tiger"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="sun.jdbc.odbc.JdbcOdbcDriver"
    connectionURL="jdbc:odbc:CATALINA"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!-- Define the default virtual host
    Note: XML Schema validation will not work with Xerces 2.2.
    -->
    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <!-- Defines a cluster for this node,
    By defining this element, means that every manager will be changed.
    So when running a cluster, only make sure that you have webapps in there
    that need to be clustered and remove the other ones.
    A cluster has the following parameters:
    className = the fully qualified name of the cluster class
    name = a descriptive name for your cluster, can be anything
    mcastAddr = the multicast address, has to be the same for all the nodes
    mcastPort = the multicast port, has to be the same for all the nodes
    mcastBindAddr = bind the multicast socket to a specific address
    mcastTTL = the multicast TTL if you want to limit your broadcast
    mcastSoTimeout = the multicast readtimeout
    mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
    mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
    tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes
    tcpListenAddress = the listen address (bind address) for TCP cluster request on this host,
    in case of multiple ethernet cards.
    auto means that address becomes
    InetAddress.getLocalHost().getHostAddress()
    tcpListenPort = the tcp listen port
    tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
    has a wakup bug in java.nio. Set to 0 for no timeout
    printToScreen = true means that managers will also print to std.out
    expireSessionsOnShutdown = true means that
    useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
    false means to replicate the session after each request.
    false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager)
    <%
    HashMap map = (HashMap)session.getAttribute("map");
    map.put("key","value");
    %>
    replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
    * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
    * Synchronous means that the thread that executes the request, is also the
    thread the replicates the data to the other nodes, and will not return until all
    nodes have received the information.
    * Asynchronous means that there is a specific 'sender' thread for each cluster node,
    so the request thread will queue the replication request into a "smart" queue,
    and then return to the client.
    The "smart" queue is a queue where when a session is added to the queue, and the same session
    already exists in the queue from a previous request, that session will be replaced
    in the queue instead of replicating two requests. This almost never happens, unless there is a
    large network delay.
    -->
    <!--
    When configuring for clustering, you also add in a valve to catch all the requests
    coming in, at the end of the request, the session may or may not be replicated.
    A session is replicated if and only if all the conditions are met:
    1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
    2. a session exists (has been created)
    3. the request is not trapped by the "filter" attribute
    The filter attribute is to filter out requests that could not modify the session,
    hence we don't replicate the session after the end of this request.
    The filter is negative, ie, anything you put in the filter, you mean to filter out,
    ie, no replication will be done on requests that match one of the filters.
    The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
    filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
    ending with .gif and .js are intercepted.
    The deployer element can be used to deploy apps cluster wide.
    Currently the deployment only deploys/undeploys to working members in the cluster
    so no WARs are copied upons startup of a broken node.
    The deployer watches a directory (watchDir) for WAR files when watchEnabled="true"
    When a new war file is added the war gets deployed to the local instance,
    and then deployed to the other instances in the cluster.
    When a war file is deleted from the watchDir the war is undeployed locally
    and cluster wide
    -->
    <!--
    <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
    managerClassName="org.apache.catalina.cluster.session.DeltaManager"
    expireSessionsOnShutdown="false"
    useDirtyFlag="true"
    notifyListenersOnReplication="true">
    <Membership
    className="org.apache.catalina.cluster.mcast.McastService"
    mcastAddr="228.0.0.4"
    mcastPort="45564"
    mcastFrequency="500"
    mcastDropTime="3000"/>
    <Receiver
    className="org.apache.catalina.cluster.tcp.ReplicationListener"
    tcpListenAddress="auto"
    tcpListenPort="4001"
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>
    <Sender
    className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
    replicationMode="pooled"
    ackTimeout="15000"/>
    <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
    filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
    <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
    tempDir="/tmp/war-temp/"
    deployDir="/tmp/war-deploy/"
    watchDir="/tmp/war-listen/"
    watchEnabled="false"/>
    </Cluster>
    -->
    <!-- Normally, users must authenticate themselves to each web app
    individually. Uncomment the following entry if you would like
    a user to be authenticated the first time they encounter a
    resource protected by a security constraint, and then have that
    user identity maintained across all web applications contained
    in this virtual host. -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->
    <!-- Access log processes all requests for this virtual host. By
    default, log files are created in the "logs" directory relative to
    $CATALINA_HOME. If you wish, you can specify a different
    directory with the "directory" attribute. Specify either a relative
    (to $CATALINA_HOME) or absolute path to the desired directory.
    -->
    <!--
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="common" resolveHosts="false"/>
    -->
    <!-- Access log processes all requests for this virtual host. By
    default, log files are created in the "logs" directory relative to
    $CATALINA_HOME. If you wish, you can specify a different
    directory with the "directory" attribute. Specify either a relative
    (to $CATALINA_HOME) or absolute path to the desired directory.
    This access log implementation is optimized for maximum performance,
    but is hardcoded to support only the "common" and "combined" patterns.
    -->
    <!--
    <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="common" resolveHosts="false"/>
    -->
    <Context path="/tdm" docBase="tdm" debug="0" reloadable="true" />
    </Host>
    </Engine>
    </Service>
    </Server>
    I have set the context path to /tdm in the server.xml file. Should this be placed in context.xml?
    My first page in the project is called Homepage.html. To start my project I give http://localhost:5050/tdm/homepage.html
    in a browser. Here I accept a username and password from the user and then do the validation in
    a valid.jsp file, where I connect to the database and check and use jsp:forward to go to next pages
    accordingly. However when I enter the username and password and click Go in the homepage, nothing is
    displayed on the next page. The URL in the browser says valid.jsp but a blank screen appears.
    WHY DOES IT HAPPEN SO? DOES IT MEAN THAT TOMCAT IS NOT RECOGNIZING JAVA IN MY SYSTEM OR IS IT A PROBLEM
    WITH THE DATABASE CONNECTION OR SOMETHING ELSE? I FEEL THAT TOMCAT IS NOT EXECUTING JSP COMMANDS?
    IS IT POSSIBLE?WHY WILL THIS HAPPEN?
    I set the JAVA_HOME and CATALINA_HOME environment to the jdk and tomcat folders resp.
    Is there any other thing that I need to set in classpath? Should I have my project as a
    WAR file in the webapps of TOMCAT or just a folder i.e. directory structure will fine?

  • Looking for Directory structure

    Hi i am new bie to Tomcat .
    i was wondering if some explain me the directory structure for a web Application.
    like where to put the HTML files and where to put the Java classes and where to keep the JSP
    and what is the Importance of WEB-INF dir
    Thanks in Advance.

    You should create a directory under the webapps and name any name, for example, name it projects and under the projects there should a WEB-INF directory which has a classes directory, under which you keep the .class files, may it be servlets or beans which are used in jsp's. And the normal html, pages from which you call either a servlet or a jsp on clicking a button or something will directly under the projects directory in our example.
    for example a LoginServlet will be in classes directory, the path will be
    C:\progra~1\apache~1.0\webapps\projects\WEB-INF\classes\LoginServlet.java
    and you can access the LoginServlet by giving this url
    http://localhost:8080/projects/servlet/LoginServlet
    hope this helps
    </ksenji>

  • Directory structure for a J2SE+J2EE project: suggestions are very welcome

    Hi, I have to start coding and organizing the CVS tree of an already mature project which is J2SE. This J2SE project can be described as a "core engine" for something else, and is a quite large project, and up to now has only a command line User Interface. I organized the dir structure as this:
    /build.xml
    /src/
    /src/java/<package>/...../*.java
    /src/demo/<package/...../*.java
    /src/test/<package>/....../*.java
    when I ant compile, all the .classes will be done in the "build" directory (reflecting the structure in the "src" dir):
    /build/
    /build/java/<package>/....../*.class
    /build/demo/<package/...../*.class
    /build/test/<package>/..../*.class
    I am happy with this, but now comes the issue: a web interface to use this core engine (it will have the same package namespace) is in developing progess, so I have to put somewhere the *.jsp, the WEB-INF dir with web.xml and servlet sources: how would you do this? And where would you let Ant put the compiled servlet classes?
    I can modify the previous directory structure to accomodate the J2EE part, this is really not a problem!
    Thanks to who can suggest me a clean solution
    Alessio

    Create a web-inf folder at the same level of src and
    jsp folder inside src
    i mean
    /build.xml
    /src/
    /src/java/<package>/...../*.java
    /src/demo/<package/...../*.java
    /src/test/<package>/....../*.java
    /src/jsp
    /web-infSo, would you put in /src/jsp only the *.jsp?
    And what in /WEB-INF ? What woud you put there? Would you do something like:
    /WEB-INF/web.xml
    /WEB-INF/src/<package>/..../<my_servlets_and_j2ee_stuff>.java
    /WEB-INF/classes/<package>/..../<my_servlets_and_j2ee_stuff>.java
    In this manner sources and classes are in the same tree, it does not seem very clean to me, expecially if you consider that probably I must have a "test" directory to unit test some j2ee stuff (as for the j2se stuff in "src"): how would you do that?
    Is this directory structure anyway what you meant or not?
    alessio

  • Directory structure for the new Data Services Project

    1) I do as prescribed in the manual "Building and deploying
    Flex 2 Applications", page 325
    "To create a web application make a copy of the /flex
    directory and its contents. Rename the copy and store it in the
    same location under /servers/default directory."
    ("flex" is an empty Flex Data Services application that
    serves as a template for creating your custom application)
    2) I create a corresponding project from Flex Builder 2 :
    Project type: Flex Data Services
    Root folder: C:\fds2\jrun4\servers\default\MyDS
    Root URL:
    http://localhost:8700/default/MyDS
    Project name: MyDS
    Project contents: C:\fds2\jrun4\servers\default\MyDS
    2) I build the project
    Immediately after "build project" the directory structure at
    C:\fds2\jrun4\servers\default\MyDS becomes the following:
    .settings
    bin
    ----------------META-INF
    ----------------WEB-INF
    ---------------- --------------- classes
    ---------------- ---------------flex
    --------------------------------jsp
    --------------------------------lib
    -------------------------------sessions
    html-template
    META-INF
    WEB-INF
    ----------------classes
    ----------------flex
    ----------------jsp
    ----------------lib
    ----------------sessions
    Notice that bin directory now contains another pair of
    META-INF and WEB-INF in addition to those already existing in the
    template project "flex".
    Can anybody comment on this directory structure?
    Which META-INF and WEB-INF are supposed to be used for
    configuration?
    What is the purpose of having two pairs of META-INF and
    WEB-INF in the same web app?

    Hello -
    first, those folders are necessary in deployment - You need
    only the contents of the bin folder for deployment, not the
    sources. Since you're compiling the application locally in FB2 it
    places all of the supporting and necessary files into one location
    namely the "bin" folder. You'd deploy the "bin" folder's contents
    to the FDS server, perhaps another FDS server that is not your
    "development" server -- like a production server. The data and
    configuration information that your app needs for FDS services are
    stored in the WEB-INF and META-INF folders so these need to travel
    with the final product. On the production server you'd just cop the
    "bin" folder and it's contents to the /servers/default folder -
    where you could then rename your bin folder to "MyDS"
    HTH, Bill

  • Unable to compile class for JSP. apache-tomcat-6. What could be wrong?

    Hello, I am new to JSP and I am trying a very basic jsp and class file on Windows XP. I get the Unable to compile class for JSP.
    Steps that I have done:
    javac ch06_01.java , placed the ch06_01.class under
    C:\Apps\apache-tomcat-6.0.16\webapps\ch06\WEB-INF\classes
    Then grabbed the ch06_02.jsp and placed it under
    C:\Apps\apache-tomcat-6.0.16\webapps\ch06\
    When I run it (by placing this into Explorer or Firefox URL
    http://localhost:8080/ch06/ch06_02.jsp) I get the error further
    below. Things I have done and made sure they are in place are:
    set up JAVA_HOME to C:\Apps\jdk1.6.0_06
    Using CATALINA_BASE: C:\Apps\apache-tomcat-6.0.16
    Using CATALINA_HOME: C:\Apps\apache-tomcat-6.0.16
    Using CATALINA_TMPDIR: C:\Apps\apache-tomcat-6.0.16\temp
    Using JRE_HOME: C:\Apps\jre1.6.0_06
    I did a google on the error and I found people saying to place the
    tools.jar from the jsk into the lib directory under CATALINA_HOME. But
    the examples still don't work. What step could I be missing? Your help is greatly
    appreciated.
    This is the simple jsp file:
    <%@ page import="ch06_01" %>
    <HTML>
    <HEAD>
    <TITLE>Using a JavaBean</TITLE>
    </HEAD>
    <BODY>
    <H1>Using a JavaBean</H1>
    <% ch06_01 messager = new ch06_01(); %>
    The message is: <%= messager.msg() %>
    </BODY>
    </HTML>
    this is the simple ch6_01 java file:
    public class ch06_01
    public ch06_01()
    public String msg()
    return "Hello from JSP!";
    HTTP Status 500 -
    type Exception report
    message
    description The server encountered an internal error () that prevented
    it from fulfilling this request.
    exception
    org.apache.jasper.JasperException: Unable to compile class for JSP:
    An error occurred at line: 6 in the generated java file
    The import ch06_01 cannot be resolved
    An error occurred at line: 9 in the jsp file: /ch06_02.jsp
    ch06_01 cannot be resolved to a type
    6: <BODY>
    7: <H1>Using a JavaBean</H1>
    8:
    9: <% ch06_01 messager = new ch06_01(); %>
    10:
    11: The message is: <%= messager.msg() %>
    12:
    An error occurred at line: 9 in the jsp file: /ch06_02.jsp
    ch06_01 cannot be resolved to a type
    6: <BODY>
    7: <H1>Using a JavaBean</H1>
    8:
    9: <% ch06_01 messager = new ch06_01(); %>
    10:
    11: The message is: <%= messager.msg() %>
    12:
    Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:316)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:294)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:281)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Edited by: indikon1 on Jun 12, 2008 1:18 PM
    I just updated the directories of the variables to reflect the current status of my system.

    What is wrong is that you are using an "old" jsp tutorial :-)
    Since Java 1.4, JSPs have been unable to access classes in the "default" package.
    What you need to do:
    Put the java class ch06_01 in a package.
    Steps to do this
    - Edit ch06_01 and add the following to the very top of the file (without the quotes): "package mypackage;"
    - create a folder "mypackage"
    - move ch06_01.java into that folder
    - compile that class (now in the mypackage package)
    - place ch06_01.class under C:\Apps\apache-tomcat-6.0.16\webapps\ch06\WEB-INF\classes\mypackage
    In your jsp:
    <%@ page import="mypackage.ch06_01" %>
    I would suggest using a more up-to-date tutorial that uses JSTL.
    Take a look at this [Apache Tomcat tutorial|http://www.coreservlets.com/Apache-Tomcat-Tutorial/index.html]

  • Directory Structure for Discoverer

    Hi,
    I have couple of queries...
    1. What is the directory structure for discoverer on Unix in Application Server?
    2. Is there any extention for the woekbook saved in the database like .dis?
    I am working on discoverer 10g with Oracle Apps.
    Thanks...

    1. On a Solaris machine where I have Discoverer 10g (9.0.4.3) installed the directory structure for the Oracle home looks like this:
    $ cd h9043
    $ pwd
    $ /home2/h9043
    $ ls
    Apache install.platform opmn srvm
    BC4J inventory oracore sso
    JRE j2ee ord syndication
    OPatch javacache otrace sysman
    assistants javavm oui tk
    bibeans jdbc owm tools
    bin jdk perl uat
    browser jinit plsql uddi
    cfgtoollogs jis portal uix
    chgip jlib precomp ultrasearch
    config jpi procbuilder90 upgrade
    dbs jre rdbms ut
    dcm jsp relnotes vbroker4
    diagnostics lbs reports wcs
    discoverer ldap root.sh webcache
    error.txt lib root.sh.old webservices
    forms90 mesg slax wireless
    guicommon9 mp soap xdk
    iaspt network sqlj zrc
    install ocommon sqlplus
    2. The ability to save workbooks to a file system is available only on Discoverer Dekstop, which runs on Windows.
    Thanks
    Abhinav
    Oracle Business Intelligence Product Management
    BI on Oracle: http://www.oracle.com/bi/
    BI on OTN: http://www.oracle.com/technology/products/bi/
    Documentation: http://docs.oracle.com/
    Discoverer: http://www.oracle.com/technology/products/discoverer/
    BI Software: http://www.oracle.com/technology/software/products/ias/devuse.html
    BI Samples: http://www.oracle.com/technology/products/bi/samples/
    Blog: http://oraclebi.blogspot.com/

Maybe you are looking for