• IIS Admin Blog

  • How To Configure IIS 7.0 and Tomcat with the IIS ARR Module

3rd September 2010

How To Configure IIS 7.0 and Tomcat with the IIS ARR Module

posted in ARR, IIS 7.0, Tomcat |

Some time ago I wrote an installation guide for Apache Tomcat and IIS 7.0 using the JK 1.2 connector which you can find elsewhere on this blog. However, in response to a number of questions being asked on the Microsoft IIS forums I have decided to write a new installation guide for Apache Tomcat using the Microsoft IIS Application Request Routing (ARR) module. Using the IIS ARR module means that there is no longer any need to use the Tomcat JK 1.2 ISAPI Connector.

For the purposes of this installation guide I used Java Runtime Version 6 Update 21, Apache Tomcat 6.0.29 and the Microsoft IIS Application Request Routing (ARR) 2.0 module.

You can download the software that I used in this guide from the following locations :

Java JRE Version 6 Update 21
http://www.oracle.com/technetwork/java/javase/downloads/index.html

Apache Tomcat (32-bit/64-bit Windows Service Installer)
http://tomcat.apache.org/download-60.cgi

IIS Application Request Routing (ARR) 2.0
http://www.iis.net/download/applicationrequestrouting

Start by installing the Java runtime (JRE) and accept the license agreement.

Then change the installation target folder to C:\Java and then click OK and wait while Java installs

Once you have installed Java you can start installing Tomcat. Double-click the apache-tomcat-6.0.29.exe file to invoke the Apache Tomcat Setup Wizard.

Choose a Custom installation and ensure that the Examples are selected as shown here. You wouldn’t necessarily want to install the sample applications in a production environment but we will be using them in this walkthrough so we need to install them.

Select to install Tomcat in the C:\Tomcat folder as shown here and then click Next.

Leave the default HTTP/1.1 Connector port set to 8080 and choose a password for the admin account.

The setup wizard should find your Java installation automatically.

Click install and wait while Tomcat setup completes. When the installation is complete click Finish.

Pages: 1 2 3

This entry was posted on Friday, September 3rd, 2010 at 3:11 pm and is filed under ARR, IIS 7.0, Tomcat. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

There are currently 26 responses to “How To Configure IIS 7.0 and Tomcat with the IIS ARR Module”

Why not let us know what you think by adding your own comment! Your opinion is as valid as anyone elses, so come on... let us know what you think.

  1. 1 On September 16th, 2010, Stefan said:

    Thanx for this nice explanation.
    I ran into problems when trying to install the ARR module. Maybe you should point out to disable the WAS and WMSVC services first.
    Just to be absolute clear about this: The module is not simply redirecting the browser to the tomcat server, it is actually forwarding the request, picks up the response and returns the response to the browser. The expression “rewrite url” is a little misleading.

  2. 2 On September 16th, 2010, Paul Lynch said:

    @Stefan,

    I didn’t have to disable any services in order to install the ARR module. I’m not sure why you had to do this. Also, I think the article makes it quite clear that ARR acts as a proxy which forwards requests onto Tomcat.

    Regards,

    Paul Lynch

  3. 3 On September 19th, 2010, Rob said:

    Thanks for taking the time to post this - worked very well. Thanks.

    Just wondering why you pattern match for ‘examples’; if you didnt pattern match for examples would it mean web request to iis being routed to the tomcat folder? I guess so? Anyhow, thanks for the tips - very useful.

    Rob

  4. 4 On September 24th, 2010, Slava said:

    Thank’s a lot for this!
    It solved my problems)
    Much easier, than using JKConnector.

  5. 5 On September 28th, 2010, Luc said:

    Hi and thanks for your tuto.
    It works for me but I had to create the Inbound Rule at the server level and not the site level.

  6. 6 On October 6th, 2010, Dave said:

    Thanks for putting this together!
    I have everything working except for authentication it looks like. In the tomcat snoop.jps example, “null” is returned for remote user via request.getRemoteAddr()
    What is needed to have credentials passed to tomcat?
    Thanks!

  7. 7 On November 5th, 2010, Julie said:

    Thank you for the excellent instructions. It worked beautifully up until the final step. I cannot view the ‘Request Headers’ sample application on port 80. There is no IIS log file (so no error). Followed the instructions exactly - am new at this obviously. Any suggestions on things to check? Thank you.

  8. 8 On December 1st, 2010, Todd said:

    I ahd the same problem as Julie (above) It worked up until the final step. I cannot view the ‘Request Headers’ sample application on port 80. Followed the instructions exactly - am new at this also.
    any advice on what to do next?

  9. 9 On December 15th, 2010, Riana said:

    For those who dont see the page on port 80, just make sure you dont have any other application set on port 80 and your default website service is started. Thanks!

  10. 10 On February 4th, 2011, Reg Ramos said:

    This worked well for me too. Thank you!

    A quick question though, after setting up ARR to work with Tomcat, I am still able to access my Tomcat server through the URL like so: http://myTomcat:8080/myApp. I don’t want this to happen since I want it to be accessible only through ARR like so: http://myIIS/myApp.

    Any ideas on how I could do this? I have tried editing Tomcat’s server.xml and adding this:
    to limit access to the Tomcat server but it only seems to work when Tomcat is installed as a standalone server. It does not work with ARR.

    Any help would be appreciated. Thanks!

  11. 11 On February 8th, 2011, Viresh said:

    Hi,

    I have “successfully” installed the ARR Module and the redirect is working. I am using it for my Liferay installation. I used “liferay” as the pattern, which points to my tomcat installation on port 8080. It finds the website, but all my templates and css files are not showing. I have a feeling this has something to do with paths not being mapped properly. Can you shed some light on this? Thanks in advance.

  12. 12 On February 22nd, 2011, David said:

    I’m trying out this.

    My application needs the username of the authenticated user, via the REMOTE_USER header.. however this doesnt seem to be available..

    Have you worked around this?

  13. 13 On March 8th, 2011, Trevor said:

    I am trying to do this and we are at our end with it. It seems simple but what we need to do is secure over https I was able to make the AJP work for a couple days then that blew up when we had to restart the server. what I am running into is that it is not redirecting from tomcat it is looking for the redirected url and adding it onto the physical path of the IIS site

  14. 14 On April 17th, 2011, Mayank said:

    Hi ,

    This works perfectly for me. But the BIG problem is that after I install ARR , my plesk will not start. I need plesk in place because it manages my email server.

    I get issues with starting router.dll .

    My configuration :

    Windows 2008 Server - 64 Bit
    IIS - 7.5
    ARR module - 2.5

  15. 15 On April 18th, 2011, Stan said:

    Hi,
    I’m trying to connect using a link like this:
    https://localhost/myapp/index.html

    which resides in:
    C:\apache-tomcat-6.0.26\webapps\myapp\index.html

    I want to use URL Rewrite to point to the proper location, but I’m not sure what to sed the pattern to to get the redirect to work properly. How would I do that when my Connector port is 9181 in my server.xml file in Tomcat?

    Currently I’m getting this after I choose my certificate:
    HTTP Error 502.3 - Bad Gateway
    Requested URL https://localhost:443/share/index.html
    Physical Path C:\inetpub\wwwroot\share\index.html

    Thanks,
    Stan

  16. 16 On April 19th, 2011, Paul Lynch said:

    Hi Stan,

    You would need to ensure that you forward requests to port 9181 if that is the port you have Tomcat listening on. This thread might also provid some help :
    http://forums.iis.net/t/1150362.aspx

    Regards,

    Paul Lynch

  17. 17 On April 19th, 2011, Stan said:

    Hi Paul,
    Thanks for the page, I believe that I got the URL Rewrite set up right, but I don’t think it’s being called. I’m still getting:
    Error Summary

    HTTP Error 404.0 - Not Found
    The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. Detailed Error Information
    Module IIS Web Core
    Notification MapRequestHandler
    Handler StaticFile
    Error Code 0×80070002
    Requested URL https://localhost:443/myapp/index.html
    Physical Path C:\inetpub\wwwroot\myapp\index.html

    The actual location is in c:\tomcat\webapps\myapp\index.html.

    I know I can point to the physical location, but that won’t really be using the redirect and I need to because the site needs to use the users certificates to get into the site.

    I used the defaults for the Server Proxy Settings in the ARR section of the manage server section.

    I added the URL Rewrite to the Default Web Site with the following settings:

    Match URL Section:
    Requested URL: Matches the Pattern
    Using: Regular Expressions
    Pattern: ([_0-9a-z-./:]+)
    Ignore Case: checked

    Conditions Section:
    {HTTPS} Matches the Pattern myapp/([_0-9a-z-.]+)
    Ignore Case: checked

    Action Section:
    Action type: Rewrite
    Rewrite URL: http://localhost:9181/{C:0}
    Appent query string: checked
    Log rewritten URL: checked
    Stop processing of subsequent rules: checked

    The {C:0} is in reference to the output of the condition which should append the “myapp\index.html” to the end of the “http://localhost:9181/”. This doesn’t happen and I get a 404 when I try to go to “https://localhost/myapp/index.html”.

    I’m not too sure what the deal is. Do I need to add this same exact URL rewrite to the server management URL Rewrite in order for this to actually work? I looked at the Server Proxy Settings in the ARR of the Manage Server section of IIS and noticed the “Use URL Rewrite to inspect incoming requests” I tried clicking that but then it wants something in the “Reverse proxy:” field. I don’t know if I need reverse proxy. Do you have any suggestions? I recently switched to ARR because ISAPI doesn’t seem to want to work on Windows Server 2008 on a 64 bit machine that is running 64 bit tomcat 6.0.26 and java 1.6.0_24(which is also 64 bit). I need to get the redirect working to just get to the integration of our site and this new environment. haha, and then I can get to coding/integration testing!

    Thanks,
    Stan

  18. 18 On April 19th, 2011, Mayank said:

    Hi Paul,

    The issue I am highlighting is a genuine issue. Can you please share your views on that.

    thanks,
    Mayank

  19. 19 On July 4th, 2011, Patrice said:

    Hi all,

    i’ve follwed the tutorial to connect a Liferay Portal running on Tomcat to an IIS 7.5 web server.
    I’m facing the same proble as Viresh (post 11), the css and images are not loaded properly.
    I’ve found a work around putting the images in IIS publication folder but i still have layout problems, and would like to know how to do this the right way.
    Any suggestion on how to set this properly ?

    Thanks in advance.

  20. 20 On August 18th, 2011, Yang said:

    Hi all,

    We’re trying to expose our user’s AD accounts to our webapp (which is deployed to tomcat 6) … the way we wanted to do this was to have IIS7 as the forward-facing component, with the single-signon enabled, and redirect to our tomcat.

    we were able to get the tutorial to work (thanks for the very clear faq by the way!) …

    but as soon as we turned on single-sign (we followed this faq … we got a HTTP 400 - Bad Request … is there an additional setting we need to look out for?

    Thanks!

  21. 21 On September 13th, 2011, Nate said:

    Is there any comparison between how the Tomcat connector works compared with ARR? For example, the Tomcat connector uses AJP by default and it seems that ARR uses HTTP. AJP should be more efficient than HTTP, so when considered on its own, this fact would mean that the Tomcat connector is more efficient that ARR. I would guess there are other technical aspects of the two technologies that should also be considered when evaluating them. I’m not talking about which technology is easier to configure and manage, but more about which technology works better from a performance and scalability standpoint.

  22. 22 On September 19th, 2011, Alec said:

    Nate: I can’t answer your question from a real technical standpoint as I’ve been having issues with all of this, but when I was using the ISAPI filter, which worked perfectly after a few funky issues, I then had to use some kind of rewrite rule, which didn’t work at all no matter what. According to some wonderful people at IIS.net, they found out that the reason it wasn’t working correctly was that the URL Rewrite module was being called after the isapi_redirect. So the URL is rewritten too late in the process, hence the 404 I was getting. They then suggested I look to ARR to see if that would work.

    However, with that, I have installed ARR and I don’t see the Application Request Routing Cache anywhere in IIS. Do that first part of the configuration, I can’t figure out how to do. I’ve set up the URL rewrite rule almost exactly like the tutorial (I don’t have an examples as it’s a Tomcat packaged with 3rd party software), so I tried another URL pattern just like it. But that didn’t work at all. I can still get to the app through 8080, but the moment I switch to 80, it gets a 404.

  23. 23 On September 29th, 2011, Alec said:

    So for anyone reading this, I figured out why I couldn’t see the ARR Cache icon. I had to use Run and type in “inetmgr” (no quotes) and for some reason that allowed it to show up.

    But now I’m also having an issue with the images showing up for some reason like the issue Patrice was having.

  24. 24 On November 24th, 2011, Eddie said:

    Wow, this just works! I’ve been fiddling with the ISAPI connector for a day or so. This just worked out the box. Brilliant and thanks for the tutorial!

  25. 25 On March 21st, 2012, Michael Klin said:

    Great article!!!
    I spent hours trying to configure using the ISAPI method.. This just making like so much easier !

  26. 26 On March 27th, 2012, Deva Karthik said:

    Thanks for the article,
    However at times it throws was 502 error saying

    “502 - Web Server received an invalid response while acting as a gateway or proxy server”.

    “There is a problem with the page you are looking for and it cannot be displayed. when the Web server(while acting as a gateway or proxy) contacted the updstream content server,
    it received an invalid response from the content server”.

    Any fix for this.

Leave a Reply

You must be logged in to post a comment.

  • Calendar

  • August 2014
    M T W T F S S
    « Sep    
     123
    45678910
    11121314151617
    18192021222324
    25262728293031