caucho
 Troubleshooting

  1. JSP uses the wrong JDK version
  2. Apache won't start on Win32
  3. srun/install.sh won't compile with Apache 1.3.9
  4. Apache/IIS cannot contact to servlet runner
  5. File not found
  6. browser returns test.jsp source
  7. How to get debugging information
  8. Resin doesn't update changed servlets and JSP pages
  9. Java JSP doesn't compile
  10. How do I get exception line numbers?
  11. How do I enable session url rewriting?
  12. How do I keep the generated .java files?
  13. How do I use multiple resin.conf files?

JSP uses the wrong JDK version

On Win32, Resin tries to find Java in the following order:
  • The command-line argument, -java_home
  • The environment variable JAVA_HOME
  • The registry, using JavaSoft's CurrentVersion of the JDK.
  • Following the PATH of the java executable.
To find out which Java version Caucho JSP is using, use the '-version' argument on the command line:

resin1.1> bin/httpd -version

Apache won't start on Win32

The error message might be something like:

"Syntax error on line 785 of
C:\PROGRA~1\APACHE~1\APACHE/conf/httpd.conf:
Cannot load c:\resin1.1\srun\win32-1.3.6\mod_caucho.dll into server:"
This will happen if the dll is incompatible with the Apache version. Send us a message and we'll make sure you get the right compiled version.

srun/install.sh won't compile with Apache 1.3.9

This appears to be a problem with Apache for some versions of Unix. Apache's apxs script is missing loader commands. You'll have to modify the apxs script (in /usr/local/apache/bin/apxs) to look something like:

my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE';
my $CFG_LD_SHLIB      = 'ld';
my $CFG_LDFLAGS_SHLIB = '-Bshareable';

Apache/IIS cannot contact to servlet runner

The particular error message is something like:

Cannot connect to servlet runner at localhost:6802

The servlet runner process needs to be started. In resin1.1/bin the srun executable will start the servlet runner.

The srun executable will start Java and wait for connections from the web server.

File not found

The web server (IIS or Apache) and the servlet runner (srun), need to find the web pages. The resin.conf file configures srun. You need to add a 'app-dir' property, to tell srun where to look for the root directory.

<caucho.com>
  <http-server app-dir='d:\InetPub\wwwroot'>
    <servlet-mapping url-pattern='*.jsp'
      servlet-name='com.caucho.jsp.JspServlet'>
  </http-server>
</caucho.com>

browser returns test.jsp source

If you're running Resin with IIS or Apache, the web server might not know how to handle *.jsp files. On Apache, the httpd.conf needs to add Resin. On IIS, the IIS configuration needs to dispatch *.jsp files to srun_iis.dll.

Both may need restarting to see the changes.

To test if this is the problem, stop the srun executable. If you browse http://localhost/test.jsp, you should get the 'Cannot connect to servlet runner' message.

How to get debugging information

Resin can write debugging information to standard output or to any file. To add debugging information add a log directive to the resin.conf file.

<caucho.com>
  <log id='/' href='stderr:'/>
</caucho.com>
href can be any path. stderr: is perhaps the most useful. id can select which portions of Resin to get logging information. Here are some useful patterns:

/ Debug everything
/caucho.com/jsp Debug jsp
/caucho.com/jsp/java See the JSP generated Java
/caucho.com/jsp/js See the JSP generated Java
/caucho.com/xsl XSL debugging
/caucho.com/tcp-server See thread creation and deletion
/caucho.com/http HTTP related information

Resin doesn't update changed servlets and JSP pages

Resin has a delay for testing updated servlets and JSP pages. The configuration variable for both is 'class-update-interval' in resin.conf. It's an application-level variable. The default is 15 seconds. So Resin will only check every 15 seconds for an updated page. You can set this value to 0 for development work.

<http-config class-update-interval='0'>
  ...
</http-config>

If you want Resin to check servlets for updates every hour, your resin.conf might look like:

<http-config class-update-interval='3600'>
  ...
</http-config>

Java JSP doesn't compile

java.lang.NoClassDefFoundError: sun/tools/javac/Main

The JRE does not contain a Java compiler. You either need to get the JDK or use another compiler. To configure another compiler use:

<caucho.com>
  <java compiler='/usr/local/bin/jikes'/>
  ...
</caucho.com>

How do I get exception line numbers?

For debugging, it is crucial to get proper line numbers. Unfortunately, Java JITs (just-in-time compilers) remove the line numbers.

For development we recomment you turn jit compiling off. On unix, start the server as:

unix> httpd.sh -nojit

How do I enable session url rewriting?

This is only supported in Resin 1.1.b1 and later. You can disable cookies in the resin.conf with a configuration like

<http-server>

  <session-config
   enable-cookies='false'
   enable-url-rewriting='true'/>

</http-server>

How do I keep the generated .java files?

By default, Resin removes the generated .java files from a .jsp. To keep the files, you need to add a special logging statement. (Don't worry, it won't generate any output.)

<caucho.com>
  <log id='/caucho.com/jsp/source' href='stderr:'/>

  <http-server>
    ...
  </http-server>
</caucho.com>

How do I use multiple resin.conf files?

This is especially important if you want to use a different workspace for development than deployment. Just call the httpd or srun executable with the -conf flag.

unix> httpd.sh start -conf devel.conf -verbose

d:\> httpd.exe -conf devel.conf -verbose

 
Copyright © 1998-2000 Caucho Technology. All rights reserved.
Last modified: Thu, 23 Mar 2000 13:27:58 -0800 (PST)