Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tomcat Wiki" for change 
notification.

The following page has been changed by GianlucaVarisco:
http://wiki.apache.org/tomcat/FAQ/Miscellaneous

New page:
== Preface ==
This section contains various miscellaneous questions that are asked frequently 
enough to be listed here.

== Questions ==

'''I'm having a problem with character encoding in tomcat 5'''

In Tomcat 5 - there have been issues with respect to character encoding. ( 
Usually of the the form "request.setCharacterEncoding(String) doesn't work" ) 
Odds are, its not a bug. Before filing a bug report, see these bug reports as 
well as any bug reports linked to these bug reports: 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=23929 23929], 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=25360 25360], 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=25231 25231], 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=25235 25235], 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=22666 22666], 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=24557 24557], 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=24345 24345], 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=25848 25848]

'''I have a problem with webapp reloading in tomcat 4.1.27.'''

Update to a later tomcat version, preferably the latest stable one. If you must 
stay with 4.1.27, get this hotfix: 
[http://issues.apache.org/bugzilla/show_bug.cgi?id=22096 Bugzilla 22096].

'''I am unable to compile my JSP!'''

Are you seeing this?

{{{      org.apache.jasper.JasperException: Unable to compile
      class for JSP

      An error occurred at line: -1 in the jsp file: null

      Generated servlet error:
          [javac] Since fork is true, ignoring compiler
      setting.
          [javac] Compiling 1 source file
         [javac] Since fork is true, ignoring compiler
      setting. }}}
    
If so, here is some solutions:

 * [http://marc.theaimsgroup.com/?l=tomcat-user&m=104949554010352&w=2 
Environment variable issue]
 * [http://issues.apache.org/bugzilla/show_bug.cgi?id=16688 Environment issue] 
or [http://issues.apache.org/bugzilla/show_bug.cgi?id=20527 Ant issue]
 * Others have had success by added JAVA_HOME/bin to their PATH. 
[http://marc.theaimsgroup.com/?l=tomcat-user&m=105525594928279&w=2 1] ... 
[http://marc.theaimsgroup.com/?l=tomcat-user&m=105526353505541&w=2 2] and make 
sure you are using the full JDK and not the JRE.

In the case of the Environment issues, it is typical that on Windows, the 
startup scripts work fine and the service does not. The service uses registry 
values to look for java and other "stuff". To save yourself some trouble, see 
if the [http://web.bvu.edu/staff/david/tcservcfg/ NT Service Config Utility] is 
helpful.

'''I can't get servlets to work under /servlet/*!'''

Using /servlet/ to map servlets is evil, absolutely evil. Even more evil than 
[http://www.eviloverlord.com/lists/overlord.html this] . That being said, here 
are some threads that may answer this:

 * [http://marc.theaimsgroup.com/?l=tomcat-user&m=103417249925541&w=2 
[SECURITY] Apache Tomcat 4.x JSP source disclosure] vulnerability
 * [http://marc.theaimsgroup.com/?t=103945337100003&r=1&w=2 Cannot Run 
Servlets, only JSP's, Part II]
 * [http://marc.theaimsgroup.com/?t=104326854100001&r=1&w=2 Tomcat 
configuration problem: JSPs work, servlets don]

'''Why is the invoker evil?'''

This is opinions of the writer (YMMV)
Quickie about the invoker: The invoker is a dynamic servlet which allows 
run-time loading of other servlets based on class name. This servlet is the one 
that allows http://localhost/servlet/com.foo.MyClass?more=cowbell, where 
com.foo.MyClass is some class which can be loaded as a servlet but was never 
explicitly declared in a config file.

Evil because:

 * Security risk ... see links above
 * Configuration hiding - There is NO way to determine which servlets are used 
vs which are not used. In web.xml, every servlet is declared and mapped. In 
that one file you instantly have a road map to how the webapp works.
 * Back doors. Servlets which '''are''' mapped can be alternately called via 
the invoker by class name. Since the URL is different, all security constraints 
might be ignored since the URL pattern is VERY different.
 * Back doors. Bad programmers make it easier to do bad things.
 * Back doors. It may be common to use common 3rd party jars in a shared area. 
If that shared jar has servlets in them and that servlet has a hole in it, bad 
things happen.
 * Configuration hiding - it's important enough to say twice. Explicit 
declaration while a PITA, will be more helpful in the maintenance scheme of 
your webapp.

For another explanation of the invoker servlet, why it's evil, and what to do 
about it, see [http://test.javaranch.com/wiki/view?InvokerServlet JavaRanch 
FAQ].

'''How to I get Tomcat's version number?'''

javax.servlet.ServletContext.getServerInfo();

Starting with tomcat 5.0.28 - there is now a version.sh (or version.bat) 
program in the bin directory. It will print the version number of tomcat to 
Standard output.

'''Tomcat eats 100% of the CPU!'''

Odds are, it might be the garbage collector going wacky.

In 1.4.1 JVMs there is a memory leak which could hampering the garbage 
collector. [http://developer.java.sun.com/developer/bugParade/bugs/4724129.html 
More information] Otherwise - get a memory profiler and/or tweak your memory 
settings.

How do I set system properties at startup?
Set JAVA_OPTS to be something BEFORE calling startup.bat or before calling 
catalina.bat. (or you can edit those files, but it isn't advised)

Example (windows): SET JAVA_OPTS='-DpropName=propValue'

Example (UNIX): export JAVA_OPTS='-DpropName=propValue'

Windows service users - use [http://web.bvu.edu/staff/david/tcservcfg/ this]

'''How do I get a customized error page?'''

In web.xml ...

{{{        <error-page>
            <error-code>404</error-code>
            <location>/error/404.html</location>
        </error-page>
}}} 

You may also catch error 500's as well as other specific exceptions or 
exceptions which extend Throwable.
For more information, see the Servlet Specification for all the gory details of 
how you can play with this.

'''Should I use the LE version?'''

No. It was an experiment, it failed. (YMMV) The original purpose of LE was 
because jdk1.4 provides a LOT of standard functionality that Tomcat uses that 
was not in jdk1.3. So to save some space two distributions were made to save 
some bandwidth. Since then, it has been an exercise in confusion. (Flame me if 
you disagree) [http://marc.theaimsgroup.com/?l=tomcat-user&=105341005928071&w=2 
More info]

'''How do I configure Tomcat to NOT to store the sessions during shutdown?'''

[http://tomcat.apache.org/tomcat-4.1-doc/config/manager.html Look at the 
Session manager component and tweak accordingly. One way is to tell tomcat to 
persist sessions to a path which does not exist. (So tomcat will not store, or 
be able to load the sessions)]

'''How do I disable tag pooling?'''

To disable tag pooling: See $TOMCAT_HOME/conf/web.xml --> enablePooling=false 
for the jsp servlet declaration.

'''Is there a DTD for server.xml?'''

No! Nor can one accurately exist. 
[http://marc.theaimsgroup.com/?l=tomcat-user&m=104205666221372&w=2 Here's why]

'''How do I change the welcome file? ( I want to show index.jsp instead of 
index.html)'''

This is done in web.xml by changing welcome-files-list. 
[http://marc.theaimsgroup.com/?l=tomcat-user&m=104566785828794&w=2 More detail].

'''How do I enable/disable directory listings?'''

This is done in TOMCAT_HOME/conf/web.xml by changing the listings property for 
the default servlet.

'''How do I make Tomcat listen on a specific IP address instead of all 
available addresses?'''

RTFM! [Add the property address='127.0.0.1' to your Connector config.] For more 
detail: [http://tomcat.apache.org/tomcat-4.1-doc/config/jk.html JK], 
[http://tomcat.apache.org/tomcat-4.1-doc/config/http11.html http] (legacy), 
[http://tomcat.apache.org/tomcat-4.1-doc/config/coyote.html http] (coyote).

'''How do I use symbolic links with jars?'''

You'll need to tweak with server.xml and 
[http://marc.theaimsgroup.com/?l=tomcat-user&m=105159411609623&w=2 do this]. 
(Don't worry - its really easy!)

'''How do I get UTF-8?

[http://marc.theaimsgroup.com/?t=105524444400002&r=1&w=2 This thread] should 
answer that.

'''How do I change the name of the file in the download Save-As dialog from a 
servlet? (or jsp)'''

Use the [http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/index3.html 
Content-Disposition] header.

'''Is tag pooling broken? It doesn't call release!'''

It is not broken, your tag probably is. Many bug reports have been filed about 
this. Here is the bug report with all the gory details.

'''Why do I get java.lang.IllegalStateException?'''

These are the most common reasons how you can get an 
java.lang.IllegalStateException:

 * Calling setBufferSize and content has been written.
 * The response has been committed and you do any of the following:
   * Calling ServletResponse.reset() or ServletResponse.resetBuffer()
   * Calling either HttpServletResponse.sendError() or 
HttpServletResponse.sendRedirect().
   * Calling RequestDispatcher.forward() which includes performing a jsp:forward
   * Calling RequestDispatcher.forward() which includes performing a jsp:forward

Remember that if you call forward() or sendRedirect(), any following lines of 
code will still execute. For example:
{{{             
{
  ...
  response.sendRedirect("foo.jsp");
  // At this point, you should probably have a return statement otherwise
  // the following code will run
  System.out.println("After redirect! By the way ...");
  System.out.println("Use commons-logging or log4j, not System.out");
  System.out.println("System.out is a bad practice!");

  response.sendRedirect("bar.jsp"); /* This will throw an error! */

}
}}}    

'''How do I make a scheduled event on Tomcat?'''

Tomcat does not support this directly. Its not part of the Servlet or JSP 
Specification.
If you do need this functionality see 
[http://marc.theaimsgroup.com/?t=106192918700004&r=1&w=2 this thread] or 
[http://marc.theaimsgroup.com/?l=tomcat-user&m=106157051231075&w=2 this link].

'''What is Element "web-app" does not allow "servlet" here?'''

Your web.xml is not well formed or it is not conforming to the DTD as defined 
by the servlet spec. Use an XML validator to ensure your web.xml file is ok.

'''Where does System.out go? How do I rotate catalina.out?'''

See the [http://wiki.apache.org/tomcat/FAQ/Logging Logging] section of the FAQ.

''' How do open a file for reading in my webapp?'''

Use ServletContext.getResourceAsStream().

'''Can I run tomcat with the JRE, or do I need the full JDK?'''

Tomcat officially requires the full JDK, because it needs javac in order to 
compile JSPs. If you pre-compile all your JSPs, you can get away with running 
tomcat on a JRE only, but you do so at your own risk.

'''Is tomcat an EJB server? Can I use EJBs with tomcat?'''

Tomcat is not an EJB server. Tomcat is not a full J2EE server. Tomcat is a 
Servlet container. Tomcat does support those parts of the J2EE specification 
that are required for Servlets, such as a subset of JNDI functionality. 
Furthermore, you can connect to remote J2EE servers, or run tomcat embedded 
inside a full J2EE server.

'''Can I access Tomcat's JNDI provider from outside tomcat?'''

Not at this time.

'''Who uses tomcat in production?'''

Numerous organizations across various industries all over the world. A full 
listing can be found at the [http://wiki.apache.org/tomcat/PoweredBy Wiki].

'''How do I configure commons-logging and log4j in tomcat 5?'''

See the [http://wiki.apache.org/tomcat/FAQ/Logging Logging] section of the FAQ.

'''I'm getting java.lang.ThreadDeath exceptions when reloading my webapp.'''

See [http://issues.apache.org/bugzilla/show_bug.cgi?id=26372 Bugzilla 
discussion] of this.

'''Help! Even though I run shutdown.sh (or shutdown.bat), Tomcat does not 
stop!'''

Most likely, a non-daemon thread is running. JVM's do not shutdown until there 
are 0 non-daemon threads. You will need to perform a thread dump [kill -3 pid 
for Unix or CTRL+Break for Windows] to determine the code which started the 
thread.

'''How do I debug JSP errors in the Admin web application?'''

The admin web application that ships with Tomcat's binary distribution contains 
pre-compiled JSPs and mappings for them. In order to debug these JSPs, you need 
to get the source versions, place them in the admin webapp directory, and 
disable the JSPC-generated web.xml servlet mappings. Here's how to do it from 
scratch for a clean Tomcat installation:

 1. Download Tomcat's base and admin webapp distributions (binaries), unzip to 
a directory of your choice. We'll use c:\temp in this example.
 2. Edit c:\temp\server\webapps\admin\WEB-INF\web.xml to remove the 
JSPC-generated servlet mappings. These are marked in the web.xml file with 
comments indicating the beginning and end of the JSPC section. You can simply 
comment out all these servlet-mappping elements. Be careful not to comment out 
other servlet mappings such as the Struts dispatcher servlet.
 3. Open c:\temp\server\webapps\admin\WEB-INF\lib\catalina-admin.jar with a zip 
file program like WinZip. Remove the files named *_jsp.class, as these are the 
compiled JSPs. Do not remove the other class files, the ones under the 
org/apache/ paths.
 4. Download a Tomcat source distribution and unzip it to a directory of your 
choice, but not the same directory that you used above. We'll use c:\src in 
this example.
 5. Copy everything '''except''' the WEB-INF/lib directory from 
c:\src\container\webapps\admin to c:\temp\server\webapps\admin. Now you will 
have the uncompiled admin webapp JSPs.
 6. If you haven't already, define an admin user in 
%CATALINA_HOME%\conf\tomcat-users.xml.
 7. Start Tomcat, navigate to http://localhost:8080 (or your actual server:port 
if you have modified the default values), and access the admin web application. 
It will run slower because Tomcat is now compiling the JSPs on-demand the first 
time you access them, but should otherwise appear normal.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to