ARR with Tomcat

Recently I have seen forum posts regarding how to set up Tomcat 6 as Java Servlet/JSP container with IIS 7 as a web server. When I read trough the doc, it requires quite cumbersome steps required to configure.

The basic idea is that we want to use IIS 7 as a native web server in front end and put Tomcat as application server to handle Servlet and JSP request in back end. The Servlet/JSP needs to run in JVM, which is not directly executable in native web server address apace. Other non-Java based web server is pretty much the same story. Ex) apache jk mod.

We need a mediator who can determine whether the request is for Servlet/JSP, and route it to the application server, and send back to the client. In other words, the front end web server 1) receives a client request, and 2) forwards Servlet/JSP request to Tomcat which generates content, and finally 3) delivers the response back to a client. The classic solution is JK Connector which uses ISAPI filter and configures through .properies.

IIS 7 offers a better solution; Application Request Routing (ARR).

 

At your application server:

Install the Tomcat 6 and JRE 6 on the application server.

 

At ARR server:

Install ARR and do basic configuration.

The basic configuration is as simple as adding Tomcat server into server farm. The rest is taken care of by ARR and URL Rewrite. Note that the default port is 8080 when installs Tomcat server, so you need to expalnd "Advanced Settings" and set the correct port when adds server.

 

Comparing with JK Connector solution, it is pretty simple and neat configuration to make it work. You do not need ISAPI filter (Isapi_redirect.dll) and .properties files (isapi_redirect.properties, workers.properties, uriworkermap.properties). And, the combination of ARR and URL Rewrite provides much more powerful solution.

2 Comments

  • Check it -> ccsp

  • Eok:
    ARR is a good starting point if you want to connect Apache Tomcat to IIS 7, however, there are some issues especially under load that make this less than ideal solution.
    a) There are still differences in the way headers are handled between ARR and Tomcat and not all are transferred.
    b) ARR will be heavier on the network as it requires that http data is transferred in full byte length without being able to take advantage of binary compression and byte encoding the AJP protocol offers.
    c) Under load ARR will not be aware of Tomcat thread handling resulting in unnecessarily dropped connections.
    d) Secure (https) connections cannot be easily handled if tomcat needs to be aware of certificates used.

    Thus a true connector is needed if this is to be used in production. Unfortunately, not many choices in the market. The closest thing in active development is the open source boncode connector:
    http://tomcatiis.riaforge.org

    Best,
    John

Comments have been disabled for this content.