Installation FAQ
Resin 3.1

Documentation
Examples
Changes

Overview
Installation
Configuration
Quercus
SOA/IoC
JSP
Servlets and Filters
Admin (JMX)
EJB
Amber
Security
Performance
Hessian
XML and XSLT
Third-party
Troubleshooting/FAQ

Quick Start
Resin Web Server
Apache
IIS
Plugin Dispatch
Linux Boot
FAQ
Scrapbook
Linux Boot
Installation
Scrapbook

Where can I put .jar files so that they are available to all of my web applications?

  1. Make the directory $RESIN_HOME/lib/local/
  2. Place the jars files that will be available to all of your web applications in $RESIN_HOME/lib/local/, for example $RESIN_HOME/lib/local/hogwarts.jar

Any jar file in $RESIN_HOME/lib will be available to all of the web applications.

Resin will also find jars in subdirectories, so you can put your jars in for example $RESIN_HOME/lib/local/hogwarts.jar. If you use the local/ subdirectory, when you upgrade to a new version of Resin you can just copy the local subdirectory over to the new $RESIN_HOME/lib.

What happened to bin/resin?

Resin 2.1 used the bin/resin binary to enable two features: JNI usage (including OpenSSL) and to support user-name and group-name for switching the effective user id of the process after attaching to ports under 1024.

Resin now uses the JNI library from within Java. You don't need a compiled binary to get at the JNI code (that was bin/resin in 2.1.x). So, the java process starts up and then hooks into the JNI libraries. Resin uses JNI for:

  • OpenSSL
  • low level system calls, for things like socket connections etc. (for performance reasons).

So Resin can run without the JNI libraries, it just won't be as Resin as Resin.

user-name and group-name support no longer need the resin binary either. The only place it won't work is on Linux systems that do not use the newer threading model. For those systems, you can use a technique like the one described here.

How can I bind to a port under 1024 and still run as a non-root user?

Most Unix systems can simply use the user-name and group-name configuration tags.

New versions of Linux (with the new threading model) can also use user-name, but using "/sbin/iptables" may be a better solution. The Linux iptables maps port 80 requests to port 8080. This way, your Resin instance can start up as a normal user and listen to port 8080 without needing to start as root.

Linux 2.2.x route port 80 to port 8080
/sbin/ipchains -A input -i eth+ -j REDIRECT 8080 -p tcp \
    --destination-port 80
Linux 2.4.x route port 80 to port 8080
/sbin/iptables -t nat -A PREROUTING -i eth+ -p tcp \
    --dport 80 -j REDIRECT --to-port 8080

Can I run multiple instances of Resin on the same machine?

Yes, as long as you use different http and srun port numbers (so they don't conflict). Also, don't point each instance at the same webapps/ directory, or the same directory for individual web-app's. The two instances will get confused about which is responsible for things like JSP compilation etc.

Why do I get `can't connect to parent' after installing Resin?

This problem is most often seen on Windows machines that you have a "personal" firewall installed. Examples of firewall programs are ZoneAlarm and Sygate Personal Firewall. The solution is to either reconfigure your firewall or turn it off.

When Resin is started with httpd.exe (Windows) or httpd.sh/wrapper.pl (Unix) httpd.exe or wrapper.pl is the parent process that is ultimately in control of the java server.

When the java server is started, it is passed a tcp port so that the java process and the parent can communicate. This is done using the -socketwait arg, if you want to browse the source. This port allows the parent to indicate to the java server that it should stop.

When the java server is started, if the -socketwait parameter is passed then Resin will connect to the parent using the passed port number. It will try this for fifteen seconds, if the connection cannot be made after that time it will result in the "can't connect to parent" error.

The error usually is seen on very slow or overloaded machines. It can also happen (as mentioned above) because a firewall-type program is interfering with the socket connection between the parent and the java process.

If Resin is being started in an init script on *nix, you can put a sleep after the call the httpd.sh to let Resin have a chance to startup before the next initialization steps take up most of the CPU.

What happened to exception-type='connection'?

Resin 3.0 no longer uses the "connection" exception-type. The isapi_srun or mod_caucho plugin, if it cannot contact the backend Resin server, propogates a 503 error to IIS or Apache. So you should be able to use IIS or Apache to define custom error pages, and those will be used for your error display.

The reason for this change is due to a change in the way plugins work. In versions prior to 3.0 the plugin reads and parses the resin.conf file. In version 3.0, the plugin obtains configuration information from the backend Resin server and no longer reads the resin.conf file. So if the backend server is not available, the plugin cannot forward to an error page specified in resin.conf because it does not read resin.conf.

You can use IIS or Apache to define the location of custom error pages for the case where the backend server is down.

Specifying a 503 page with Apache - httpd.conf
ErrorDocument 503 /error/serverDownError.shtml

IIS 6 will not serve .exe files

(thanks to W Hall)

When used with IIS, the isapi_srun.dll plugin will dispatch urls to Resin for jsp's and servlets, but will leave static files for IIS. So this is really an IIS issue, Resin is not even trying to handle the url and IIS is failing to serve the *.exe file.

There is a setting in IIS that prevents .exe files from being downloaded/launched. In IIS (6.0) the setting is found in IIS | Default Website | Properties | Home Directory (tab) | Execute Permissions (drop down) | Change from "Scripts and Executables" to "Scripts Only"


Linux Boot
Installation
Scrapbook
Copyright © 1998-2006 Caucho Technology, Inc. All rights reserved.
Resin ® is a registered trademark, and Quercustm, Ambertm, and Hessiantm are trademarks of Caucho Technology.