Detailed Information
Product Name: ServletExec/AS 5.0 for UNIX
Hotfix Name: ServletExec_AS_50_Unix_Hotfix_June_2005
Created: 2005-06-07
File Size: 1.00 MB
File URL:
Description: v5.0.0.09
Release Notes
ReleaseNotes.txt for the ServletExec AS for Unix June 2005 hotfix.

* This hotfix contains only those components that are relevant for the   *
* configuration stated above.                                            *
*                                                                        *
* Hotfixes are cummulative, so they contain all the fixes found in their *
* previous hotfix (and patch) counterparts.                              *
*                                                                        *
* Directions to apply this hotfix are at the very end of this file.      *

ServletExec50.jar was updated to v5.0.0.09 to fix the following bugs:

- bug #1813: Using '-' character in a taglib prefix causes the JSP compile
             to fail
- bug #1818: Unable to load classes whose Class.getName() is of the
             form "[L<classname>;"
- bug #1824: unicode strings longer than 64k may be broken in the middle of a
             unicode character 
- bug #1833: ServletContext.getResourcePaths() throws NullPointerException
             when passed a nonexistent path 
- bug #1870: NullPointerException occurs when response.setHeader("val", null)
- bug #1921: Custom tags that use a full closing tag as in <a:b></a:b> should
             be treated the same as those that don't as in <a:b/>
- bug #1926: Webapp custom classloader does not make use of JAR index
             (INDEX.LIST) if present

             This new feature can improve classloader performance (webapp 
             initialization & execution) for the following cases:

             1. when loading a class that's inside a webapp, for the 1st time
                (classes have always been cached after the first load)
             2. when loading a resource via getResourceAsStream()
                (resources have never been cached by SE)

             To use this feature:
             a. Utilize the -i option of the jar tool to generate a Jar Index
                for as many JARs (in WEB-INF/lib) as you wish
                (multiple INDEX.LIST files can be used).
             b. Pass an init parameter named
                to your webapp with a value of true.
                A JVM System Property by the same name could also be used
                to enable this globally for all webapps.
             c. See
                for more information about the JAR Index mechanism.

- bug #1987: Custom tag attribute validation is not enforced for nested tags

- Also fixed a NullPointerException introduced by the bugfix for bug #785:
  "With SE AS, ServletContext.getServerInfo() can sometimes return
  wrong webserver info". This would only occur in the rare case that a servlet
  running inside SE AS causes response headers to be sent to the client
  while running inside it's own privately spawned thread. 

The SE AS native adapters were updated to v5.0.0.09 to fix the following bug: 
- bug #1149: Using ';' character in querystring gives 404

That bug was originally thought to only exist in ServletExec50.jar and
was fixed there in a previous SE 5.0 update/hotfix, but was later found
to exist in the native adapters also and so now we fix it there too. 

ServletExecAdmin.jar was simply carried over (unchanged) from the
previous hotfix.


ReleaseNotes.txt for the ServletExec AS for Unix December 2004 hotfix.
ServletExec v5.0.0.08

ServletExec50.jar was updated to fix the following bug:
- bug #1624: No error displayed when admin GUI changes fail to be written to web.xml

ServletExecAdmin.jar was updated to fix the following bug:
- bug #1520: The Admin UI should list virtual servers alphabetically

All other components were simply carried over (unchanged) from the previous
hotfix, so they are still v5.0.0.07


ReleaseNotes.txt for the ServletExec AS for Unix October 2004 hotfix.
ServletExec v5.0.0.07

The JAR was updated to fix some bugs. 
The native components were updated simply to reflect the current version
[v5.0.0.07] (to avoid confusion).

ServletExec50.jar fixes the following bugs:

- bug #0193: HttpServletRequest.getRemoteUser() returns null when NTLM/IWA Authentication is used
- bug #1391: Custom classloader is not as optimized as it could be 
- bug #1430: Character encoding not being honored for the body of a custom tag
- bug #1438: Webserver default pages not found if default-app deployed without welcome files
             [introduced by the fix for bug #1075 in p03]
- bug #1440: No error occurs if a non DataSource class is configured as a DataSource
- bug #1441: Datasource disappears from Admin UI if datasources.xml uses empty body tags
- bug #1442: Datasource properties disappear from admin UI if an invalid value is specified in datasources.xml


Here is a history of the SE 5.0 bugs that were fixed in
previous 5.0 "patches", and whose fixes are included
in all 5.0 hotfixes (based upon configuration):

from p06
- bug #606: Updating monitor threads refresh interval causes null ptr exception
  This bug also occurs with the Monitor Requests and Monitor Sessions page.
  This patch fixes it for those pages as well.

- The SE Admin UI no longer throws a NullPointerException when it encounters:
  bug #806: "Request parameters disappear after Form-based login"
  (Note: This is NOT a fix for that bug)

- bug #1307: 404 is sometimes returned when request for a static file uses a querystring

an updated version of ServletExec_Adapter.dllIIS32bit which fixes the following IIS-specific bug:

- bug #1292: A single SE AS adapter only allows up to 100 SE AS Java instances

This patch includes updated native adapters for SE AS which address the following bugs:

- bug #1334: Graceful shutdown of SE AS instance can sometimes cause high CPU usage by native adapter
             (bug #1334 may occur with Apache 1.3.x, IIS, or iPlanet, but not with Apache 2)

- bug #1347: An invalid request URI can sometimes cause the webserver to crash

from p05
- bug #1139: request.setAttribute("attName", null) does not remove the attribute
- bug #1149: Using ';' character in querystring gives 404
- bug #1185: Includes fail when filter is invoked

and updated versions of ServletExec_ISAPI.dll & ServletExec_NSAPI.dll
which fix the following bug:

 - bug #1212: Java VM Hotspot Error occurs during Windows XP shutdown 

This patch also includes updated native adapters for Apache 1 & Apache 2
(all supported platforms).
These updated adapters add a new feature in which the name of the SE instance
to which the request is to be routed is stored in apache's request notes table.
This allows the option of using Apache's mod_log_config() to log the SE
instance name that serviced a request, on a per-request basis.
Search the mod_servletexec.c source file for the SE_INSTANCE_NAME_KEY
for comments in the code which provide more information.

from p04
This patch includes updated native adapters for SE AS which address the
following bug:

 - A refix of bug #1099: Native adapter can sometimes fail to read all
                         response data

 - bug #1108: Socket pool configuration settings are ignored when Apache 2 is
              running in multi-threaded mode

from p03
This patch contains patched versions of both native and Java components.
The Java component is ServletExec50.jar, and is for use with all configurations
of ServletExec.

ServletExec50.jar adds fixes for the following bug(s):

 - bug #1075: IIS 6 unable to serve static content for welcome file requests
              to certain webapps
 - bug #1087: 'data already sent to client' error occurs if an errorPage is
              used and an exception occurs after an include

ServletExecAdmin.jar is the same one that came with patch #2

Bug fixes in various native 5.0 adapters include:
 - bug #1038: SE installer displays failed to configure filter message
 - bug #1071: Unable to use uppercase letters in hostnames specified in
              adapter configuration file
 - bug #1075: IIS 6 unable to serve static content for welcome file requests
              to certain webapps
 - bug #1095: SE AS performs slowly on IIS 6  
 - bug #1096: Adapter connection/socket pooling code should be more defensive
 - bug #1099: Native adapter can sometimes fail to read all response data

from p02
This patch contains patched versions of both native and Java components.
The Java components are ServletExec50.jar (patch level 2) and 
ServletExecAdmin.jar. Both Java components are patches for all configurations
of ServletExec.

ServletExec50.jar adds fixes for the following bug(s):
 - bug #874: Sometimes session is not found with MacOS browsers  
 - bug #885: Class.getPackage() returns null  
 - bug #891: Request for header with no user-agent throws a null pointer
 - bug #902: ClassCastException is thrown from JSP in rare cases
 - bug #910: SE admin UI does not indicate the patch level of the ServletExec
             JAR file 
 - bug #924: Java Server Faces - JSFbeta - a NullPointerException is thrown
             when running guessNumber.war example
 - bug #959: Synchronized JSP or Servlet code can cause JVM-wide blocking
             (or be blocked) in rare cases
 - bug #966: The Response wrapper from a filter is ignored when SE returns the
             default 404 response
 - bug #967: Multiple doc roots not being recognized  

ServletExecAdmin.jar fixes the following bug(s):
 - bug #910: SE admin UI does not indicate the patch level of the ServletExec JAR file
 - bug #971: Add webapp page of SE AS admin UI incorrectly says that requires manual update

Note: If you update your ServletExecAdmin.jar then you must also update your

The native components are at patch level 1 (since they are the first
patch to those components in 5.0), and their use does NOT apply to all
configurations. In other words, each native component applies to only
one OS/Web Server combination.
Consult the SE 5.0 Installation Guide in order to learn which native component
your SE installation uses and where it resides.

The patched native components include:

For Windows:


For Unix:
 mod_servletexec.c  (for apache 1.3.x on Unix)
 mod_servletexec2.c (for apache 2.x on Unix)

The IIS and iWS/SunONE adapters include fixes for bugs #886 & #929
The Apache adapters include fixes for bugs #886, #956, & #958

Here is more information about the bugs fixed in the native adapters:
 - bug #886: A single SE AS adapter only allows up to 50 SE AS Java instances
 - bug #929: Adapter may sometimes use an outdated alias cache more than once  
 - bug #956: Unable to Post more than 48k to a servlet running behind Apache 2 
 - bug #958: Protocol between Apache2 se-adapter & se-java may fail (NEVER reported or reproduced)

from p01
- bug #813: Filters can't redirect or setStatus if requested resource does
            not exist and 404 mapping exists
- bug #814: Response status code is not set correctly for Error Page mappings
- bug #815: Requests for /WEB-INF or /META-INF resources return 403 status code
- bug #822: If servlet set to load-on-startup throws error no subsequent app's
            servlets are executed. (actually this bug had already been fixed
            in the unpatched SE 5.0 final, and so should not have been
            mentioned in this list).
- bug #823: Outdated XML parser in webapp prevents successful deployment
- bug #826: ejb-ref classes not found unless in the main SE classpath
- bug #850: Incorrect classloader used when invoking error pages mapped to
            status codes       


How to apply any SE hotfix
Generally this involves:

1. Stopping SE and the webserver
2. Renaming the component to be hotfixed
3. Putting the hotfixed component in place of the un-hotfixed component
   (giving it the original name of the un-hotfixed component)

The specifics of doing this can vary based on which component you are updating.
Consult the ServletExec 5.0 Installation Guide to learn which components were
installed with your configuration of ServletExec and where those components
reside, so that you will be able to hotfix them if hotfixed versions were
provided in this hotfix.

- ServletExecXX.jar can typically be found in the
 <ServletExec Install Directory>/lib/ directory.
- Locations for native components (.so's) will vary with webserver brand.

How to apply a ServletExec_Adapter.dll or .so hotfix to an existing
SE 5.0 installation
1. Stop the web server (IIS, SunONE, or Apache).
   NOTE: With IIS this involves stopping the IIS Admin Service
         from the Services Control Panel.
2. Stop ServletExec.
3. Locate the existing adapter that your webserver is currently
   The location and name of your existing/unhotfixed SE adapter depends upon
   which webserver you are using.
   First look in the appropriate chapter of the SE 5.0 Installation Guide
   under the "What was installed" section to learn the default location for
   your adapter.
   If using iWS/SunONE or Apache, then you may also learn this infomation by
   looking in your webserver's config file (magnus.conf, obj.conf, or
   Once you have located it, rename it to something else.

4. If your hotfixed adapter (from the SE hotfix ZIP file) has been provided in
   prebuilt form (.dll, or .so) then place it where the original/unhotfixed
   adapter resides, making sure to rename it accordingly.

   Here are some examples:
    a. If using SE 5.0 AS on Windows with Apache 2.x as your webserver, you could
       look in your httpd.conf to learn the location of the unhotfixed SE Adapter DLL
       file that's currently in use (typically this would be at:
       Then you would rename it to something else such as ApacheModuleServletExec.dll.orig
       and then put ApacheModuleServletExec.dll.APACHE2.x (from the hotfix ZIP) in its
       place, renaming it to remove the ending ".APACHE2.x" portion of its name.

    b. If using iWS 4.x then look in obj.conf.
    c. If using iWS 6.x or SunONE, look in magnus.conf.

    d. If using SE 5.0 AS on Windows with IIS, the default location is:

5.  If you are using Apache on Unix then your hotfixed adapter (from the SE
    hotfix ZIP file) is delivered in source file form (.c file) and you will
    need to build it yourself.
    Here is how:

    a. Copy the appropriate hotfixed adapter source file into an empty folder.
       If using Apache 1.3.x on Unix... the file is mod_servletexec.c
       If using Apache 2.x on Unix...   the file is mod_servletexec2.c

    b. If the adapter you need is mod_servletexec2.c, then once you have it
       copied to an empty folder, rename it to mod_servletexec.c
       (i.e. remove the '2' from it's name)

    c. Build the adapter.
       The exact command used to build the adapter for Apache on Unix may differ
       depending upon the Apache version and the platform (Solaris, Linux, HP-UX, AIX, etc...).
       Because of this, you should examine the /tmp/SEinstall.log file to locate the exact
       command that was used to build the original/unhotfixed version.
       The command involves the use of apxs. For example with Apache 1 on Solaris, the command
       looks something like this:

          <apache install dir>/bin/apxs -i -a -c -n servletexec mod_servletexec.c

          And with Apache 2 on Linux, the command looks something like this:

          <apache install dir>/bin/apxs -n servletexec -i -a -c -D XP_UNIX mod_servletexec.c

          Note that if you are using a less common Unix variant such as HP-UX,
          you'll need to invoke apxs a bit differently.
          As an example, here is how the SE 5.0 installer invokes apxs for
          Apache 2 on our HP-UX 11.11 box and it works fine:

          <apache install dir>/bin/apxs -n servletexec -i -a -c -D XP_UNIX -D APR_WANT_BYTEFUNC mod_servletexec.c

       Locate your platform's 1-line command in your SEinstall.log file, and issue it
       against the hotfixed version manually from the command line.

Whether using Apache 1 or Apache 2, the final name of the module should be
       "", and you should see that file appear where the
       original/unhotfixed version resides to confirm that you truly have the
       newly built, hotfixed version in place.