As some of you may know, I’ve been working on a deployment of BEA Weblogic these past couple of weeks. We were doing some testing today and found an interesting side effect that was positively unexpected. Let me first say that the issues we encountered were with IIS configuration, not specifically with Weblogic. However, the issue wouldn’t have come up if we weren’t working on configuring the BEA-provided iisproxy.dll IIS plug-in.

Here’s the issue: We want to configure our production server to run two sites. The primary site is the production site and the secondary site is a staging site which we’re going to try to configure to behave exactly like production and have a configuration that matches production as well. So, we want to have two separate Weblogic Domains (that listen on different ports) and two separate IIS servers (that listen on separate ports). The desired configuration looks something like this:

The configuration required to connect IIS to Weblogic is a dll and some configuration in IIS plus an external configuration file (iisproxy.ini) that tells the iisproxy.dll plug-in where to locate the “back end” Weblogic server. This configuration is explained well in the Weblogic IIS Plug-In documentation. However, what you wouldn’t necessarily expect is that Windows’ IIS 6.0 (and 5.0, for that matter) default behavior causes you to only be able to load the information in one of the iisproxy.ini files. That means that you’ll only be able to connect to one of the Weblogic servers and no matter which IIS server you access, you’ll ultimately end up working with the same Weblogic server.

What surprised me was that if you define two different directories in IIS for the two different sites, place the proper configuration files in each one and configure each site per the instructions, you’ll only end up using one of the two Weblogic servers. This, we learned, has to do with IIS configuration and the fact that it loads ISAPI extensions one time per host (not per website) by default. If you want it to use separate, independent loads of the ISAPI extensions for each site, you need to change the default settings. The details are buried in the documentation (step #7), but as we learned, while the documentation says this is just for virtual hosting configurations, it also applies to our configuration (which doesn’t use virtual hosting). We also learned that the items in step #7 are more challenging in IIS 6.0 than in IIS 5.0.

For IIS 6.0, follow these steps to make the two changes necessary:

  1. you must first go to IIS Manager and then right-click on the Web Sites folder and choose Properties.
  2. Then navigate to the Service tab and choose the checkbox next to “Run WWW service in IIS 5.0 isolation mode”. Click OK back to the IIS Manager.
    weblogic-websites-props
  3. Next, go to the production website within the Web Sites folder and right-click to access the properties.
  4. Navigate to the Home Directory tab and near the bottom, choose High (isolation) in the Application Protection pulldown at the bottom of the panel.weblogic-app-prot
  5. Follow the steps to make the same change for the stage website as well.
  6. For good measure, I restarted both the websites and the Web Publishing Service in Windows Services Control Panel.

That’s it. If you have suggestions or alternatives to this process, feel free to post in comments.

Thanks to Keyur and Prashasta for their help identifying the solution to this issue!

  • Robert Jones

    Actually, in IIS6 the more correct way would actually be to create a different Application Pool (or memory space) for each web site. We have done this for years, with no problems.

  • http://www.dannorris.com/ Dan Norris

    I'm definitely not an IIS expert, so I figured it was a matter of time before someone gave a better way to solve this issue. This was somewhat documented by BEA (now Oracle), so we elected to stay in their good graces and follow their lead.

  • Hament

    Hi , I have similar requirement, but following your steps, Its asking for credentials when i am trying to browse the applictaion.

    Can you please help here.

    Regards, Hament.

  • Hament

    I created multiple application pool, and that fixed the issue.

  • http://www.dannorris.com/ Dan Norris

    Glad you were able to resolve your issue. Thanks for posting the
    follow up with the solution too.

  • mans

    thank you very much
    but when i have a projcet(web application) and i want to take it in the iis, after that i want every body to open it in the inner network , how can i do that

  • http://www.dannorris.com/ Dan Norris

    I don't think I understand the question. Depending on how your network and DNS records are configured, users on the internet and intranet should have equal and same access to the environment.

  • Name

    The illusive iisproxy.dll – does anyone know if there is somewhere to download it from. I have not been able to find it anywhere on my Weblogic installation, and yes I have changed settings so that system fils are not hidden.

    Thanks

  • http://www.dannorris.com/ Dan Norris

    I don't recall the pathname, sorry. However, do know that this was done over 18 months ago, so the version you're using now may have an alternate mechansim for interconnecting with IIS than the version used for this article.

  • ismail590

    path where you find it

    E:name_of_installation_folderwlserver_10.3serverpluginwin32

  • pacific

    This way we can successfully configure Each Virtual website( running on different ports). I have tested it and it works.

    Now I want to use the same IIS web server and same Port ( but different Proxy URL prefix) to proxy from IIS to different Weblogic server Instances. Is there a soultion for this?

  • pacific

    This way we can successfully configure Each Virtual website( running on different ports). I have tested it and it works.

    Now I want to use the same IIS web server and same Port ( but different Proxy URL prefix) to proxy from IIS to different Weblogic server Instances. Is there a soultion for this?

  • Xcool101Man

    Interesting topic although I have been working with weblogic and apache only but it is very benefitial to how to configure it with IIS