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
Similar Messages
-
Hi, I've programmed a client - server application based on an applet - servlet communication and all is running ok. I've my applet and all the classes needed by it in Root/ directory and my servlet and all the classes needed by it in Root/WEB-INF/classes/ directory. All clases have no structure. Te problem appears when I want to give a certain structure to all my classes (put them in certain packages).
For example, if my applet belongs to the packate myPackage I put it in Root/myPackage/ and if my servlet belongs to the package myServletPackage I put it in Root/WEB-INF/classes/myServletPackage/ and so on.
Finally I configure my web.xml file like this:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>myServletPackage.ElServlet</servlet-class>
</servlet>
After restarting tomcat when I try to run the application It appear a No class foun exception.
Can anyone tell me what I'm doing wrong?
Thks and sorry for my english.Sorry for my bad example. In fact I put the Root directory as an example, It's real name is MetroNet and, as I say on the previous topic the problem appear when I try to organize my classes in different packages.
thnks -
Web Application directory structure
Please can someone help me with directing me to any online guide as to how webapp could be created and web.xml configuration in Sun Application server 8.
I do not understand the directory structure of sun, unlike Tomcat the webapps contains all the virtual context part with a default ROOT direct set in the server.xml as the default docbase.
Now, where is the default ROOT in Sun server? Where can I put my index file. When I create a web context, where will I put it? Does J2EE has similar WEB-INF structure in Tomcat? Does it have web.xml to configure the webapp
Finally, I have written a simple EJB called Hello World using stateless protocol. I have my Hello.class, HelloHome.class and HelloBean.class. I also have ejb-jar.xml for container configuration. I have jar then up to hello.jar and have deployed them. Now I want to access the beans, Home bean to be precises. I have written a hello.jsp and I put it in the orignal directory where the main index.html file is in Sun server which is /user/Sun/AppServer/domains/domain1/docroot, I got errors.
Could someone shade a light on this please.
Thanks Guys.
NB
Do not point me to online reference
I have awared max point for this questionThe developer's guide discusses in pretty clear terms how to deploy a J2EE app from a directory structure.
The tomcat directory structure is really the same as a packaged war which once you read the documentation you will see is basically no different with SJSAS.
You need to deploy an application. See previous posts on how to have docroot be the top level (search for posts by janluehe) -
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.
-
Hi i am niew to EJB
my directory structure is like this
App
-----JSP,s
-----WEB-INF
--------classes
-------package name
-----------servlet class file
-----PAckage Name
-----------Sesion Bean Class File
my servlet is calling the session bean but when i open this app in weblogic builder it only shows jsp/servlet related setting
what is the correct directory structure
jsp is calling a servlet which in turn calles a session bean
kindly tell me
PuneetI don't know why but weblogic builder sometimes behaves weird. Anyway, my suggestion is to try out to edit your application.xml manually.
good luck,
Fehmi -
I deployed the ear file.Now i try calling http://localhost/myapps/test.jsp ??
i'm i doing the right thing ?Hi,
This is right provided you have installed the webserver & app server
on the same machine and the port number for the web server is 80 by
default.
Regards
Raj
Arif Khan wrote:
I have a created a directory structure
ias\ias-samples\myapps\src\docroot.In docroot folder i have a single
jsp.i created a war file having that jsp,and ear file having the war
file
I deployed the ear file.Now i try calling
http://localhost/myapps/test.jsp ??
i'm i doing the right thing ?
Try our New Web Based Forum at http://softwareforum.sun.com
Includes Access to our Product Knowledge Base! -
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? -
Directory structure of web sphere
i did not get the directory structure of the web sphere 6.1 to deploy a sample application like webapps->dirname->WEB-INF->classes etc in tomcat server.
The project is developed under tomcat but it has to be convert to the web sphere.please google..
http://www.exforsys.com/tutorials/websphere/websphere-v5.0-workbench-basics-create-j2ee-projects.html
http://publib.boulder.ibm.com/infocenter/wpfhelp/v6r1m2/index.jsp?topic=/com.bowstreet.designer.doc/designer/c_devenv_dir_structure.htm -
Can't I change the directory structure?
Hello Everybody,
So far everything is working when use the default directory structure,i.e. mydomain/applications/myWebApp/WEB-INF/classes/some package structure.
But we have application with lot of html files which call servlets like this..myWebApp/WebApp/myServlet.
In order not to change my html files, I've created this WebApp directory under weblogic directory structure shown above.
I've done some trial and error in web.xml file to make servlets execute. But 404 error is showing up.
I tried putting in web.xml like this...
<servlet>
<servlet-name>/WebApp/HelloWorldServlet</servlet-name>
<servlet-class>com.reliable.servlets.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/WebApp/HelloWorldServlet/*</url-pattern>
</servlet-mapping>
I also tried taking out slash(/) before WebApp but no luck.
Can any one guide how to make this work.
Thanks so much,
Sri
What he needs is something like:
<servlet>
<servlet-name>HHH</servlet-name>
<servlet-class>com.reliable.servlets.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HHH</servlet-name>
<url-pattern>HelloWorldServlet/*</url-pattern>
</servlet-mapping>
HHH is simply to link the mapping declaration to the servlet declaration.
Then the URL would be something like:
http://myserver:8801/appname/HelloWorldServlet/abc
If this is the default app, then appname/ drops out.
There is a good discussion of this in our docs and
the servlet spec discusses this as well.
mark
Keith wrote:
> Hi Sri and Alfonso,
> Did you ever get the code? I am interested in seeing how I can do that too. I
> have to migrate my servlets and jsp from tomcat and all the html files are referencing
> the servlets with this format:
> http://abc/servlet/servletA
>
> Thanks!
> keith
>
> "sri" <[email protected]> wrote:
> >
> >Hi Alfonso,
> >Thanks for trying to help me. In your response you said "Just copy my code".
> >But I didn't find any code in your reply.
> >Can you please clarify.
> >Thanks so much,
> >Sri
> >"alfonso" <[email protected]> wrote:
> >>
> >>You are in wrong, the servlet name is a short name to identify the servlet
> >in xml file not in URL. You can not load many servlet without to register
> >it,one by one. But i found a solution, that you can find in servlet without
> >registration subject. (pe: we have servlets calls as http;//b2web/servlet/XXX)
> >>just copy my code, or email me if you have problems to [email protected]
> >>
> >>"sri" <[email protected]> wrote:
> >>>
> >>>Hello Everybody,
> >>>So far everything is working when use the default directory structure,i.e.
> >mydomain/applications/myWebApp/WEB-INF/classes/some package structure.
> >>>
> >>>But we have application with lot of html files which call servlets like
> >this..myWebApp/WebApp/myServlet.
> >>>
> >>>In order not to change my html files, I've created this WebApp directory
> >under weblogic directory structure shown above.
> >>>I've done some trial and error in web.xml file to make servlets execute.
> >But 404 error is showing up.
> >>>I tried putting in web.xml like this...
> >>you are in wrong, the servlet name is
> >>> <servlet>
> >>> <servlet-name>/WebApp/HelloWorldServlet</servlet-name>
> >>> <servlet-class>com.reliable.servlets.HelloWorldServlet</servlet-class>
> >>> </servlet>
> >>> <servlet-mapping>
> >>> <servlet-name>HelloWorldServlet</servlet-name>
> >>> <url-pattern>/WebApp/HelloWorldServlet/*</url-pattern>
> >>> </servlet-mapping>
> >>>
> >>>I also tried taking out slash(/) before WebApp but no luck.
> >>>
> >>>Can any one guide how to make this work.
> >>>
> >>>Thanks so much,
> >>>Sri
> >>
> >
-
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> -
How to not let others see tomcat directory
I don't want to others see my tomcat's directory in my webapps. in other words, i want to prevent people from knowing my tomcat server directory structure by typing the url "http://202.38.248.1/Basic/"(Basic is a directory in ROOT which contain a lot of JSP pages). How to make it?
Go to where your default Servlet is defined (probably in Tomcat/conf/web.xml) and add the init parameter:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>to the <servlet>
<servlet-name>default</servlet-nam>definition. -
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"); -
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
AlessioCreate 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 ?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 -
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
Maybe you are looking for
-
My iPod Mini has a lock on the left side of the clock and an arrow, on the left side of the lock pointing toward the lock . The last song played remains on the display. The display remains dark and does light up when attached to my computer or plugge
-
Hi All, I created one SOAP Sender adapter in XI using that i am calling an RFC and getting response. But when i tested the webservice, it is asking for userid & password of XI user. How can I avoid this ?? Can I specify uid/pwd somewhere in URL ?? Ho
-
I recently received my Oracle Associate's in PL/SQL Development and I have been looking for opportunities as a PL/SQL Developer. I do plan on going for the Professional Certificate very soon. The problem is that a lot of companies are looking for som
-
Sslservice: Exception was: java.lang.NullPointerException
After having upgraded from 4.30 to 4.40 I get 2008/01/31 20:30:08.324 (pid 3787) server/services/error #1201807808324 Sun Secure Global Desktop Software (4.4) ERROR: Failed to start the service sslservice. Exception was: java.lang.NullPointerExceptio
-
AirPort Extreme drops the 5ghz link
I have an AirPort Extreme latest version connected to an airport express previous generation through the 5ghz band. When ever I access the shared drive on the AirPort Extreme the 5GZ link shuts out and no devices can be connected to that band. The 2.