Application Server Solutions for Microsoft IIS and ASP.NET
       solutions   products   partners   company   support   downloads         store
ServletExec Self-Help: FAQ
Back to Search >  Back to Search Results

Faq ID 302
Product ServletExec
Category System Requirements, Web Server Support
Question What can you tell me about 64-bit CPUs for Windows and SE's support for them?

Currently there are a few different 64-bit architectures available for Windows.
They fall into 2 categories:

  1. A 32-bit chip that has had 64-bit capabilities added to it (64-bit Extensions, refered to as X64)
  2. A full-blown 64-bit chip

Here are some details:

  1. In the second quarter of 2004, Intel outfitted its 32-bit Xeon processors with the ability to run 64-bit as well as 32-bit applications. They call it Intel Extended Memory 64 Technology, or Intel EM64T

    2 reasons they did this are:
    • For users who currently are running 32-bit applications on Xeon-based systems and who want to gradually migrate into 64-bit computing.
    • To compete with AMD's Opteron chips, which also run 32- and 64-bit x86 applications, and which came out about 1 year before Intel's EM64T.
  2. Intel's Itanium is a higher-end 64-bit CPU for customers with needs for more memory and higher performance. Itanium systems can run 32-bit applications, but only through an emulation software layer, and at a lower level of performance than 64-bit software.

SE 5.0 ISAPI supports 64-bit IIS running on Intel's Itanium architecture.
When run on an Itanium machine, the ServletExec_ISAPI.dll file that the 5.0 ISAPI installer will install, will be a 64-bit version of that DLL which was built for the Itanium architecture. This way the 64-bit IIS running there will be able to load the 64-bit DLL. So long as your JVM is also 64-bit, then SE should work fine. New Atlanta has tested this on an Itanium machine using Windows 2003 Server, Enterprise and found that it worked fine.

Wikipedia has an excellent article about 64-bit CPUs complete with a detailed timeline.

Before running the SE 5.0 ISAPI installer on an Intel EM64T machine, you must have a 32-bit JVM installed and you must configure IIS to run in 32-bit mode as described in FAQ #296. This must be done before installing SE 5.0 ISAPI. If you are using the SE ISAPI installer or later then no other installation steps are necessary. Older SE 5.0 ISAPI installers incorrectly install the ISAPI DLL for Itanium onto the machine (wrong architecture). This has been identified as SE Bug #2131. This will never work. But since IIS on EM64T is actually a 32-bit application, the solution is very simple. Right next to the ServletExec_ISAPI.dll file (which is a 64-bit Itanium DLL) you should see a file named ServletExec_ISAPI32.dll (likely in the C:\Inetpub\Scripts\ folder unless you selected some other location during the SE installation process). You just need to stop the IIS admin service, rename ServletExec_ISAPI.dll to something like ServletExec_ISAPI.dll_5.0_Itanium, and then copy ServletExec_ISAPI32.dll, to ServletExec_ISAPI.dll. Note that you must leave a file named ServletExec_ISAPI32.dll in this location so that ServletExec will uninstall properly. Then start your website and try to request <hostname>/servletexec/admin.

It has also been found that Bug #2131 (see above) occurs with the SE AS installer when run against the IIS webserver (definitely on Win 2003 Server R2, and possibly on other Windows versions). When this problem occurs, the ServletExec_Adapter.dll file that is placed into the ...\Inetpub\Scripts\ folder on the hard-drive will be about 249KB in size. This is a DLL that's intended for the Itanium Architecture which again... will never work on a Xeon machine. The result would be that IIS is unable to load that DLL (SE Filter in IIS would show with red arrow pointing downward, and Event Viewer messages would indicate that IIS could not load that DLL). The solution in this case is to manually apply the August 2006 Hotfix (or a newer one if available). This is mainly to replace the incorrectly installed Itanium DLL with one that will work on Xeon (about 89KB in size). FAQ #195 tells how to obtain and apply the latest hotfix.

A variation of bug #2131 has been found to occur (in rare cases) with the SE AS 6.0 installer on 32-bit Xeon CPU Windows, when run against IIS.
SE 6.0 does not support the Itanium CPU.

Here is the problem description:
On Xeon CPU machines running 32-bit Windows, the installer for SE 6.0 AS on Windows will incorrectly install the AMD/Intel 64-bit (x64) version of ServletExec_Adapter.dll. This occurs on machines that have SQL Server Reporting Services installed (the SQL Server Database need not be installed for this problem to occur).
The reason this problem occurs is because the SE 6.0 AS installer looks in the Windows registry in order to decide if the OS is 32-bit or 64-bit. It looks for the presence of this Registry key:

It appears that that key is present even on a 32-bit OS when the SQL Server Reporting Services are installed.
So the installer then installs a 64-bit DLL which is incorrect... resulting in the 32-bit IIS not starting up properly and Windows Event Viewer messages indicating that ServletExec_Adapter.dll is not the correct bitness for IIS to be able to load it. The solution is to stop the IIS Admin Service, rename C:\Inetpub\Scripts\ServletExec_Adapter.dll to ServletExec_Adapter_x64.dll, and then copy C:\Program Files\New Atlanta\ServletExec AS\bin\isapi\ServletExec_Adapter.dll to C:\Inetpub\Scripts\

Then IIS should be able to load that DLL so that SE can function.

Here is a detailed breakdown of the various SE 6.0 native DLLs required when using SE 6.0 AS with IIS.
Platform Architecture ServletExec Configuration File size (Kb) File Location
x86 AS 296 C:\Program Files\New Atlanta\ServletExec AS\bin\isapi\ServletExec_Adapter.dll
x64 AS 485 C:\Program Files\New Atlanta\ServletExec AS\bin\isapi\ServletExec_Adapter64.dll
x86 ISAPI 312 C:\Program Files\New Atlanta\ServletExec AS\bin\isapi\ServletExec_ISAPI.dll
x64 ISAPI 355 C:\Program Files\New Atlanta\ServletExec AS\bin\isapi64\ServletExec_ISAPI.dll
(NOTE: SE AS does require ServletExec_ISAPI.dll during installation and uninstallation, but does NOT need that file during runtime. The reason it needs that DLL is because that DLL also contains some code that is used to hook/unhook SE from IIS).

One other point about using SE AS on a 64-bit Windows OS:
Be sure to add the -Xrs JVM option to your StartServletExec.bat file.
For more details, see:

SE 5.0 ISAPI has not been tested on an AMD x64 version of Windows.
If IIS runs as a 32-bit application on that architecture, then most likely the workaround described above would work. But if IIS runs as a 64-bit application on that architecuture, then you should know that it likely won't work.


The only 64-bit architecture for which SE 5.0 ISAPI currently has a DLL is Itanium.
The bitness of your IIS matters.
A search on the web turned up the following relevant postings from a Microsoft engineer:
  • IIS is the same bitness as the underlying OS.
    There is no such thing as 32bit IIS on 64bit Windows or 64bit IIS on 32bit
    Also, 64bit IIS will support running 32bit web applications with WS03SP1.
    Unless you are running WS03SP1 on AMD64 or running WS03 on Itanium, you are
    likely running 32bit OS and IIS.

    The quote above was found here

  •    I believe the instructions you followed resulted in building an IA64 binary
    for the Intel Itanium Family of Servers. It is NOT the same as X64
    architecture of the popular AMD64 nor Xeon 64. Thus, when you try to run
    IA64 binary code on an X64 architecture machine, it is incompatible and
    failed by design.
    You are going to have to compile an X64 binary to natively run it on AMD64
    or Intel X64.

    The quote above was found here
    NOTE: It is not you (the customer of New Atlanta) that needs to compile the SE DLL. It is New Atlanta that may need to do this depending on your Architecture and the bitness of your IIS.

You may also find FAQ #296 to be of interest.

company media information terms of use privacy policy contact us