# WebLogic Server 5.1 Service Pack 7 |  |
4. Contents Installation and removal instructions Installation Removal Release notes for Service Pack 7 Resolved issues Additional details on new plug-in parameters New WebLogic properties Additional details on WebLogic_RDBMS.jar Additional details on specific issues Known issues Miscellaneous issues and new items BEA WebLogic Enterprise Connectivity README ## Contents This service pack contains files that resolve issues pertaining to the released product. A detailed list of these issues is provided in this document. Service Packs function for both domestic and exportable versions of WebLogic Server. The service pack download is shipped as a .zip file (weblogic510sp7.zip) and contains: 510sp7/SERVICEPACK7_README.html (this file) 510sp7/SERVICEPACK7_README.txt 510sp7/README2.html 510sp7/README2.txt 510sp7/README3.html 510sp7/README3.txt 510sp7/ldaprealm.properties 510sp7/relnotes.html 510sp7/ddl/jms_cloudscape.ddl 510sp7/ddl/jms_db2.ddl 510sp7/ddl/jms_mssql.ddl 510sp7/ddl/jms_oracle.ddl 510sp7/ddl/jms_sybase.ddl 510sp7/wlec/README_wlec.html 510sp7/wlec/README_wlec.txt 510sp7/wlec/weblogic.properties 510sp7/wlec/wlec_classes.jar 510sp7/wlec/wlec_examples.jar 510sp7/wlec/wleorb.jar 510sp7/wlec/wlepool.jar bin/iisproxy.dll bin/iisforward.dll bin/proxy30.dll bin/proxy35.dll bin/proxy36.dll bin/wlconfig.exe bin/wlntio.dll bin/wlntrealm.dll bin/wlserver.exe bin/oci734_7/weblogicoci36.dll bin/oci805_7/weblogicoci36.dll bin/oci805_8/weblogicoci36.dll bin/oci815_8/weblogicoci36.dll bin/win32_12/install.exe bin/win32_12/remove.exe bin/win32_12/wlconfig.exe bin/win32_12/wlserver.exe bin/win32_12/WLService.exe bin/win32_12/wlstartup.dll examples/applets/phonebook1.jsp examples/applets/phonebook2.jsp examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/ConnectionTag.class examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/QueryExtraInfoTag.class examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/QueryTag.class examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/ResultsTag.class examples/servlets/AuthFilterImpl.java examples/webapp/index.html examples/xml/http/StockClient.java lib/weblogic-tags-510.jar lib/weblogic510sp7.jar lib/weblogic510sp7boot.jar lib/aix/libproxy.so lib/aix/libproxy20.so lib/aix/libproxy36.so lib/aix/libproxy40.so lib/aix/libweblogicunix1.so lib/aix/libwlenv.so lib/aix/mod_wl.so lib/aix/mod_wl.ssl.so lib/aix/oci805_7/libweblogicoci36.so lib/hpux11/libproxy.sl lib/hpux11/mod_wl_ssl.so lib/hpux11/mod_wl.so lib/linux/libmuxer.so lib/linux/libwlenv.so lib/linux/mod_wl.so lib/linux/mod_wl_ssl.so lib/linux/mod_wl_ssl_raven.so lib/persistence/WebLogic_RDBMS.jar lib/solaris/libmuxer.so lib/solaris/libproxy.so lib/solaris/libstackdump.so lib/solaris/mod_wl.so lib/solaris/mod_wl_ssl.so lib/solaris/mod_wl.ssl_raven.so lib/solaris/oci734_7/libweblogicoci36.so lib/solaris/oci805_7/libweblogicoci36.so lib/solaris/oci805_8/libweblogicoci36.so lib/solaris/oci806_8/libweblogicoci36.so lib/solaris/oci815_8/libweblogicoci36.so lib/tru64unix/libmuxer.so lib/tru64unix/libproxy.so lib/tru64unix/libweblogicunix1.so lib/tru64unix/libw1env.so lib/tru64unix/mod_wl.so lib/tru64unix/oci805_7/libweblogicoci36.so lib/unixware/oci804_7/libweblogicoci36.so myserver/ca.pem myserver/democert.pem myserver/demokey.pem ## Installation and removal instructions ### Installation Read this document and the release notes. Unzip the contents of the service pack into a temporary directory, such as /temp. Copy weblogic510sp7.jar and weblogic510sp7boot.jar from /temp to a location where it can be referenced by your WebLogic Server installation. If you have installed WebLogic Server in its default location of /weblogic, then an appropriate place to copy the .jar file would be to the directory /weblogic/lib. If you are running the installation from a drive that is not writable, then you will need to copy the service pack jar to a directory outside of the installation, but whose path is accessible. The directory of the weblogic.properties file that you are using to start WebLogic Server is an alternative. Also, if the server is running under Java 2, the jar must be in a directory that has been made accessible in the security policy file. If you are using VisualAge, import both jars to your workspace, first weblogic510sp7.jar and then weblogic510sp7boot.jar. Add the path of weblogic510sp7boot.jar to the beginning of the Java system classpath. Add the path of weblogic510sp7.jar to the beginning of the WebLogic classpath before you start the WebLogic Server:
         $ java ...
             -classpath c:\weblogic\lib\weblogic510sp7boot.jar;
             c:\java\lib\classes.zip;
             c:\weblogic\classes\boot;
             c:\weblogic\eval\cloudscape\lib\cloudscape.jar
             -Dweblogic.class.path=c:\weblogic\lib\weblogic510sp7.jar;
             c:\weblogic\classes;
             c:\weblogic\license;c:\weblogic\lib\weblogicaux.jar;
             c:\weblogic\myserver\serverclasses
             ... weblogic.Server
5. You can do this by editing the command line script that you use to start the WebLogic Server, as described in the Installation Guide, Setting up and Starting WebLogic Server 5.1. If you are running on NT and are using either the Start Menu commands or running as an NT Service, you need to use wlconfig.exe to set values for classpath, weblogic.class.path and JAVA_HOME. Save the current values of your configuration to a file before making changes in case you need to revert your changes:
         C:\> wlconfig > config.txt
   Include the weblogic510sp7boot.jar file at the start of classpath (to be entered on one line):
         C:\> wlconfig -classpath c:\weblogic\lib\weblogic510sp7boot.jar;
               c:\java\lib\classes.zip;
               c:\weblogic\classes\boot;
               c:\weblogic\eval\cloudscape\lib\cloudscape.jar
   Include the weblogic510sp7.jar file at the start of weblogic.class.path (to be entered on one line):
         C:\> wlconfig -Dweblogic.class.path=c:\weblogic\lib\weblogic510sp7.jar;
               c:\weblogic\license;c:\weblogic\classes;
               c:\weblogic\myserver\serverclasses;
               c:\weblogic\lib\weblogicaux.jar
   Next, set JAVA_HOME to point to a JDK that you have installed, as the JREs that were shipped with the distribution do not support multi-byte character sets:
         C:\> wlconfig -JAVA_HOME c:\java117
6. The file lib/persistence/WebLogic_RDBMS.jar will need to be copied to your /weblogic/lib/persistence directory if you are developing or deploying EJBs, and are interested in resolving issues related to WebLogic_RDBMS.jar. To deploy the lib/persistence/WebLogic_RDBMS.jar, make a copy of the original to a safe location and then copy lib/persistence/WebLogic_RDBMS.jar from the service pack to replace the original file that you backed up in another location. For instance, if you installed WebLogic in /weblogic, here are the sample commands:
         $ cp /weblogic/lib/persistence/WebLogic_RDBMS.jar
        /weblogic/lib/persistence/WebLogic_RDBMS.jar.510
         $ cd /tmp
         $ jar xvf weblogic510sp7.zip
         $ cp /tmp/lib/persistence/WebLogic_RDBMS.jar
        /weblogic/lib/persistence/WebLogic_RDBMS.jar
7. If you are using VisualAge, import lib/persistence/WebLogic_RDBMS.jar into your workspace. The following files are also included in the service pack and are not Java class files. Therefore you need to manually copy them into their appropriate locations to use them. This is optional and files should only be copied if you are interested in resolving an issue. Native NT Executables: bin/wlconfig.exe Issue 31853 bin/wlserver.exe Issue 31853 Plug-ins: Issues 10368,10381, 10610,10680,10885,9536, 10228,10399,10428, 10986,11017,31317,31397 ,31532,28929,31034,31315, 31317,31719,31878, 32053,32132,32133, 32136,32060, 38832, 39177, 37035, 37172 , 37837 , 37873 , 37951 , 37992 , 38018 , 38118 , 38377 , 38730 , 38832 , 38995 , 39177 , 39341 , 39411 , 39673 , 39839 bin/iisproxy.dll bin/iisforward.dll bin/proxy30.dll bin/proxy35.dll bin/proxy36.dll lib/aix/libproxy.so lib/aix/libproxy20.so lib/aix/libproxy36.so lib/aix/libproxy40.so lib/aix/libweblogicunix1.so lib/aix/libwlenv.so lib/aix/mod_wl.so lib/aix/mod_wl.ssl.so lib/hpux11/libproxy.sl lib/hpux11/mod_wl_ssl.so lib/hpux11/mod_wl.so lib/linux/libmuxer.so lib/linux/libwlenv.so lib/linux/mod_wl.so lib/linux/mod_wl_ssl.so lib/linux/mod_wl_ssl_raven.so lib/solaris/libmuxer.so lib/solaris/libproxy.so lib/solaris/libstackdump.so lib/solaris/mod_wl.so lib/solaris/mod_wl_ssl.so lib/solaris/mod_wl.ssl_raven.so lib/tru64unix/mod_wl.so Database Drivers: Issues 9765,30410, 32061,32063,36269 ,39238 ,39426 bin/oci734_7/weblogicoci36.dll bin/oci805_7/weblogicoci36.dll bin/oci805_8/weblogicoci36.dll bin/oci815_8/weblogicoci36.dll lib/aix/oci805_7/libweblogicoci36.so lib/solaris/oci734_7/libweblogicoci36.so lib/solaris/oci805_7/libweblogicoci36.so lib/solaris/oci805_8/libweblogicoci36.so lib/solaris/oci806_8/libweblogicoci36.so lib/solaris/oci815_8/libweblogicoci36.so lib/tru64unix/oci805_7/libweblogicoci36.so lib/unixware/oci804_7/libweblogicoci36.so Files for examples: examples/applets/phonebook1.jsp examples/applets/phonebook2.jsp examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/ConnectionTag.class examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/QueryExtraInfoTag.class examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/QueryTag.class examples/jsp/tagext/sql/WEB-INF/classes/weblogic/taglib/sql/ResultsTag.class examples/servlets/AuthFilterImpl.java examples/webapp/index.html examples/xml/http/StockClient.java For each of these files you can follow the same procedure for deployment. As an example, here are the steps for deploying /weblogic/lib/aix/libproxy40.so. You would deploy this shared library if you are interested in resolving issue 32053, otherwise you would not need to use this file at all. To deploy the lib/aix/libproxy40.so, make a copy of the original to a safe location and then copy lib/aix/libproxy40.so from the service pack to replace the original file that you backed up in another location. For instance, if you installed WebLogic in /weblogic and want to use the NSAPI plugin on AIX (/aix/libproxy40.so), then these commands will backup the original library and copy in the new one:
         $ cp /weblogic/lib/aix/libproxy40.so /weblogic/lib/aix/libproxy40.so.backup
         $ cd /tmp
         $ jar xvf weblogic510sp7.zip
         $ cp /tmp/lib/aix/libproxy40.so /weblogic/lib/aix/libproxy40.so
8. #### Installing the Service Pack on the Client (optional) Typically the service pack jar is placed on the server. However, in some instances, it is also required to put the service pack jar on the client as well. It is most likely that this is not necessary for the majority of user's, yet if you are having problems with JMS, check the issues below to see if this may be necessary. To place the Service Pack on the client, The weblogic510sp7.jar has to be prepended to the CLASSPATH of the client. BEA has found that this is required if user's wish to resolve one or more of the following issues:
          	27890
       	30485
       	30527
       	33244
       	33289
        	33794
9. Once you have made all the above necessary changes from steps 1-8, start the WebLogic Server. You can check that installation was successful by checking the server version:
         java weblogic.Admin t3://Host:Port VERSION
   should return
         WebLogic Build: 5.1.0 Service Pack 7 ...
7. ## Removing the Service Pack Shut down the WebLogic Server. Remove weblogic510sp7boot.jar from the start of the Java system classpath and weblogic510sp7.jar from the start of the WebLogic classpath used to start the WebLogic Server. Delete weblogic510sp7boot.jar, weblogic510sp7.jar and any other files unzipped from the service pack download. If you used wlconfig.exe to make changes to your installation configuration as described under Installation, change your configuration back to the previous values: reset the JAVA_HOME if you changed it, remove the weblogic510sp7boot.jar from the start of the classpath and remove the weblogic510sp7.jar from the start of the weblogic.class.path. Restore any non-java class files that you replaced in the installation process (eg WebLogic_RDBMS.jar) You can then start the WebLogic Server without the service pack. Once you have made these changes and started the Server, you can check that the service pack is no longer in use by checking the server version, as shown below:
         java weblogic.Admin t3://Host:Port VERSION
## Release notes for WebLogic Server 5.1 Service Pack 7 ### Resolved issues: Below are the issues resolved in the current Service Pack and a link to the previous Service Pack release notes. Service Packs are cumulative, so all of the issues in Service Pack 1-6 have been fixed in the latest Service Pack. Service Pack 1-6 ### Service Pack 7 The following areas have had changes: Clustering EJB JMS JDBC JSP Plug-ins RMI Servlets Miscellanous Clustering Issues: ISSUE 32952: Fixed a potential deadlock while deserializing the transaction context. ISSUE 34108: Fixed http tunneling to work in a WLS cluster. Ensured that tunneled requests always return to initial cluster node. ISSUE 34478: In a cluster requiring two way ssl the cluster servlet does not propogate the certs.This has been fixed. EJB Issues: ISSUE 26354: When starting a client-demarcated transaction and calling a business method within that transaction, the business method was throwing a RuntimeException. This has been changed so that the server now marks the transaction for rollback and throws a TransactionRolledBackException to the client. ISSUE 29007: Now there is optimization for BMP entity beans so that findByPrimaryKey does not go to the database if the Primary Key is already in the cache. ISSUE 30649: The line, <enable-call-by-reference>False</enable-call-by-reference> in the weblogic-ejb-jar.xml was causing a ClassCastException when the server was trying to instantiate a stateless EJB in the startup class. ISSUE 30679: Fixed a problem where multiple calls to FindyByPrimaryKey occurring within the same transaction caused multiple calls to EJBLoad ISSUE 30700: With stateless session beans, calling get EJBObject on the context was falsely returning null. ISSUE 30841: After the transaction has rolled back and in a subsequent call, the server hangs when the client calls a stateless session bean. This happens as the server attempts to find an associated bean from the first transaction. ISSUE 30895: Now the compliance checker gives an error message if the primary key class doesn't implements Serializable. ISSUE 31202: A "-user" option has been added for weblogic.deploy tool. This was added because of a problem with Hot Deploy not working if weblogic.system.user was used to change the system user. See our EJB docs at www.weblogic.com/docs51/classdocs/API_ejb/EJB_reference.html for more information. ISSUE 31598: The name of a deployed unit was being reserved for the lifetime of the server even though it should have been free to be used once it was undeployed. Now the server removes the names of undeployed units. ISSUE 31699: If security-role and security-role-ref tags are specified in the ejb-jar.xml file, the server was throwing a NullPointerException. This has been fixed. ISSUE 31839: Fixed a problem with BigDecimal not working as a primary key type. ISSUE 32186: Now, the server throws an error message if the <method-param> or <finder-param> in the CMP finder description is not a fully-qualified Java name. ISSUE 32275: From a Bean Managed Tranaction Session Bean getRollbackOnly was being called. This violates the EJB 1.1 specification and has been fixed. ISSUE 32674: In the weblogic-cmp-rdbms-jar.xml file, <finder-list> and <options> are now optional tags and no longer generate errors if they are absent. ISSUE 33207: While executing a stored procedure from a BMP Bean, ClassCastExceptions were occurring when casting the output of prepareCall method of Connection object with weblogic.jdbc.common. OracleCallableStatement ISSUE 33424: Fixed a problem deploying a containerManaged sample EJB on OS/390. Users weren't able to deploy an EJB built on an ASCII platform. ISSUE 33616: Fixed a problem with EJB's when using Security.verify on the client, when no realm structure exists. ISSUE 33786: Now the compliance checker gives an error message when both primary-key-class and primary-key-field are set. ISSUE 34016: Fixed a problem where users were unable to deploy EJB's with external XML parsers. ISSUE 34121: The wrong error message was being thrown in some instances when a CMP container managed Bean was starting a create operation within a session bean transaction. ISSUE 34651: The correct error message is now sent when CMP bean fields are private. ISSUE 35231: Fixed a bug whereby a session bean could not be removed if its caller was involved in a transaction. ISSUE 36462: The CMP EJB code was hardwiring JDBC 1.0 connections. This has been fixed. ISSUE 36671: Fixed a problem with WLS 5.1 Service Pack 6's EJB compiler. The compiler was not dealing properly with char attributes in a container managed entity bean. ISSUE 36851: With Service Packs 2-6, ejbLoad gets called twice on a call to findByPK with CMP read only entity EJB. It is now only called once. ISSUE 37173: The DDConverter was failing to convert the "persistentDirectoryRoot" property to "stateful-session-persistent-store-dir" ISSUE 37429: Transactions were not being rolled back when a system exception like RemoteException or EJBException is thrown. ISSUE 37782: The JNDI environment lookups were not working in the beforeCompletion and afterCompletion callbacks when the session bean was running in the caller's transaction. ISSUE 38592: When bound to the jndi tree, non-serializable objects such as javax.mail.MailSession were getting replicated to other servers in a cluster. JDBC Issues: ISSUE 36269: Fixed a problem in JDBC with BigDecimals. ISSUE 39238: Fixed a problem in JDBC where pools were hoarding broken connections. ISSUE 39426: Fixed a problem when Oracle's thin driver returns a non-JDBC standard -8 value for TYPE with a ROWID column, causing DbKona to fail. JMS Issues: ISSUE 28473: Fixed a bug with jms server objects getting garbage collected too soon. ISSUE 28881: When the server is out of execute threads, SessionState.close can deadlock as it puts a message to the messagesPublished queue. ISSUE 30023: Setting "weblogic.jms.tableNamePrefix" in the properties file results in all destID's=0. Now each message queue has a distinct destID.(See the New WebLogic Properties section) ISSUE 30351: If JMS is used indirectly through an EJB, the JMS connection will close itself down after the caller that invoked the EJB first shuts down. This has been fixed. ISSUE 32363: Fixed a problem in JMS. After sending a message, the client may retain and modify it without affecting the message that has been sent. ISSUE 33227: Added a new property: weblogic.jms.ignoreMemExhaustCheck=[true|false]. If set to true, the memory check is ignored and messages can be sent and published when 75% or more of the server memory is used up. When this property is set to false, the memory check is NOT ignored.(See the New WebLogic Properties section) ISSUE 35328: Fixed a problem when there were more servlet requests than the number of execute threads. ISSUE 35440: This change fixes some race conditions which led to message acknowledgements being lost. ISSUE 36196: Fixed a problem with the JMS connection pool when using setLong or setObject methods on a callable statement and passing in a Long object. JSP Issues: ISSUE 30869: Added weblogic.jsp.windows.caseSensitive property. If set to true, jspc and JspServlet do not change to lower-case the name of the generated file. (See the New WebLogic Properties section) ISSUE 31324: JSP's that had their own propietary classloaders now will be able to notify debuggers of a servlet load. ISSUE 32764: Fixed a problem with JSP 1.1 setProperty and array values. ISSUE 33658: Fixed a problem with the <jsp:plugin> tag not functioning as expected. ISSUE 33781: A Duplicate method declaration: java.lang.String getServletInfo() error was occurring when the page info tag was set above the content type tag in a JSP page. ISSUE 33781: The pageContext.getAttribute(pageContext.REQUEST) was not working correctly with JSP 1.0; it was returning null. ISSUE 34540: Now we throw a FileNotFoundException if the called jsp is not in the docroot. ISSUE 34648: Jview wasn't compiling correctly a JSP with a directive to set the character encoding. This has been fixed. ISSUE 35396: Doing a System.exit(0) in a jsp page was killing the server. This has been fixed. ISSUE 36865: JSPs were being recompiled even when they had been externally recompiled using weblogic.jspc. This has been fixed. ISSUE 36978: Fixed a problem with the jsp:setProperty parameter when set to an empty string. This has been fixed. ISSUE 37746: An error occurred when a Cascading Style Sheet (.css file) was requested that doesn't exist. Users were seeing their jsp pages being invoked twice. Plug-in Issues: ISSUE 37035: Using NES plug-in with WebLogic Service Pack 5 and 6, NES was crasing on NT or starting a Core Dump on Solaris when doing an SSI Include. This has been fixed. ISSUE 37172: There was a problem when the RequestURI length was more than 2k for an apache plugin. Now the server supports up to 4k (in accordance to the Sun specification). ISSUE 37837: The Apache plugin now has the ability to proxy to different WebLogic Servers or WebLogic clusters based on Mime-Type. ISSUE 37873: The WebLogic plug-in wasn't fetching the client certificate from Apache servers when service pack 6 was installed on the WebLogic Server. ISSUE 37951: PathPrepend in <Files> tags did not work in Apache when using virtual hosting. ISSUE 37992: Removed the limit on setting the HungServerRecoverSeconds parameter for NSAPI and ISAPI. ISSUE 38018: Fixed a problem with Apache on Solaris 2.7. The ErrorPage directive was causing the Apache server to close the connection and return nothing. ISSUE 38118: Fixed a problem with the ErrorPage tag where user's could not get their own error page. This problem was only occurring with the mod_wl_ssl.so for Apache that was included with ServicePack 6. ISSUE 38377: Fixed a problem with weblogic.security.acl.CertAuthenticator and RDBMSRealm. ISSUE 38730: The query string was sometimes being lost when using ap_internal_redirect. This has been fixed. ISSUE 38832: Rebuilt the NSAPI plug-in for compatibility with Tru64. ISSUE 38995: Fixed a problem with requests getting routed to the wrong cluster. This was an issue with the Apache plugin when using Virtual Hosts, multiple clusters, and applications deployed on the clusters that use the same cookie name. ISSUE 39177: A new parameter has been introduced for Apache, DisableCookie2Server=[ON|OFF]" (default is OFF). If set to ON, the plugin will not use the server information in cookies. This fixes a problem with WAP devices that have a limitation using cookies. (See the New WebLogic Plug-in Parameters section) ISSUE 39341: Modified the behavior of buffering and rendering JSP's while using the Apache plug-in. Now we flush the buffer once data is recieved from the server. ISSUE 39411: Fixed a problem that was causing the NSAPI plug-in to crash. ISSUE 39673: When the header size is large the plug-ins were not properly handling the headers. ISSUE 39839: Some entries were missing from the third field in the access.log file when using IIS proxy. This has been fixed. RMI Issues: ISSUE 32357: The WebLogic log was receiving harmless error messages that are now no longer reported when not necessary. ISSUE 36136: There was a problem with the setBinaryStream implementation in the RMI and T3 drivers. This has been fixed ISSUE 38050: Soft disconnect timeout RMI error messages are now more comprehensible. Servlet Issues: ISSUE 29792: With Service Pack 6 installed and in a clustered environment, ValueUnbound was not working. This has been fixed. ISSUE 30298: Introduced a new property to signal which encoding to use for the input stream. The property is weblogic.httpd.inputCharset and it allows users to specify charset for the post parameter. See more information in the New WebLogic Properties section. ISSUE 30908: When there was more than one war file per directory, one would overwrite another. This has been fixed. ISSUE 31250: When a session servlet has timed out, it gets removed from the memory. However the corresponding row from the database was not being removed. This has been fixed. ISSUE 32058: Now the server supresses certain 'Servlet failed with Exception java.net.SocketException: Connection reset by peer: socket write errors'. ISSUE 32268: There was a problem fixed with the customized errorPage not working when it was relative to the current request URI. ISSUE 33162: After invoking the servlet from a browser the HTTP responseheader was showing a garbled expiration date when users had set their regional settings to a Japanese (multibyte) environment. Now we use the right Locale for the DateFormat as per the HTTP spec. ISSUE 33624: Fixed a problem with sendRedirect not encoding the URL and losing the session. ISSUE 33642: Added a check to the protocol handler. If it detects that it is running inside an signed-applet javaplugin environment, it does not override the standard HttpProtocolHandler. ISSUE 33657: Invalid deployment of a Web Application was causing a NullPointerException and was also making the server crash. Now the server loads the general servlet context instead of doing System.exit(1), preventing crashes. ISSUE 33914: If you change the WebLogicSession cookie to some invalid value, such as 1, a NullPointerException was being thrown. Now the server checks the validity of the session cookie before using it. ISSUE 34044: The existing behavior of the errorPage directive has been enhanced. ISSUE 34224: If a user was accessing one web application, then another, the original session was being lost. This has been fixed. ISSUE 34306: When a servlet has a load-on-startup tag the server now instantiates the servlet on startup in the order given by the sequence number. ISSUE 34389: Escaping Quotes were not working in the value tag for JSP parameters. This has been fixed. ISSUE 34694: Fixed a problem with Solaris where lots of servlet calls on the cluster side were occurring using the HttpClusterServlet proxy. ISSUE 34859: Fixed a problem with HTTP Tunnelling causing the server to generate error messages. ISSUE 35161: HttpSessionBindingListener was not being called in a clustered web application. ISSUE 35169: Fixed a problem in web applications with form based authentication and the form-login-page. ISSUE 35589: Fixed a problem retrieving mime-type. Added new property, weblogic.httpd.unknownMimeTypeIsDefault=[true|false]. By default this is set to false.(See the New WebLogic Properties section) ISSUE 35953: Fixed a deadlock problem in the server. The deadlock was due to synchronization of two threads, one of which was waiting for the lock that the other was not releasing. ISSUE 36077: Added new abstract class, weblogic.servlet.security.AuthFilter. ISSUE 36499: The method getCreationTime() now throws a java.lang.IllegalStateException if the method is called on an invalidated session. This follows the servlet 2.2 spec. ISSUE 36563: The buffer was getting flushed after a RequestDispatcher include, even if it was not full. ISSUE 36769: Overrided the method getURLFile for HttpsClient, which was missing and causing the message: "Using 2 way authentication with a proxyHost, URL's were being truncated while going through the proxy". ISSUE 36827: Added a new property weblogic.httpd.session.neverReadPostData=[true|false] This prevents the server reading the post data in search of a SessionId. Anyone experiencing problems with missing POST data should try setting the the property to true. (See the New WebLogic Properties section) ISSUE 37070: HttpClusterServlet goes into infinite loop when failing over to secondary server. This has been fixed. ISSUE 37291: When the java weblogic.jspc command was used with -encoding UTF8, it generated a .java file in which the code is different from the generated java file on the same JSP, when this JSP is run in the WebLogic Server. This has been fixed. ISSUE 37698: Fixed a problem in JDBC where the java command utils.schema needed it's arguments set in an exact order. When changing the order, nothing was being recognized other than the verbose flag. Now the arguments can be placed in any order. ISSUE 37804: The implementation of form-based authentication for declarative security was not preserving the current HTTP session when cookies were disabled and all URLs were encoded. This has been fixed. ISSUE 37901: Fixed a problem with seesion timeouts and javax.servlet.http.HttpSession.setMaxInactiveInterval(0). ISSUE 38840: Now we use fully qualified URL's instead of relative URI's when redirecting to a login page. This fixes a problem with WAP gateways that do not accept partial URL's or URI's. ISSUE 38881: In cases where a directory structure is created for a session and no file is created in that directory, the invalidation trigger was not cleaning up the directory structure. This has been fixed. Miscellaneous Issues: ISSUE 26207: There was a problem that was causing the server to display harmless 'SocketException: Bad file number' messages. This has been fixed. ISSUE 30826: A new property "weblogic.system.maxExecuteThreadCount" has been added to configure the maximum number of the threads the weblogic will support. This is the maximum the property "weblogic.system.executeThreadCount" will accept. This property is configurable both from client and server.(See the New WebLogic Properties section) ISSUE 30926: Fixed a problem with ldap and UrlAcl not finding groups. ISSUE 31598: The name of a deployed unit was being reserved for the lifetime of the server even though it should have been free to be used once it had been undeployed. ISSUE 32109: Using groups in the policy file does not work. This has been fixed ISSUE 32633: Fixed ClassNotFoundException. The path to 'weblogic.security.acl.DefaultRealmImpl' was incorrect. ISSUE 32806: Fixed a minor problem with the date based log rotation beginning time. Now the server only honors DAY_OF_WEEK in setting future date for rotation, when the date is already past. ISSUE 33642: This is a problem with the Sun plug-in and has been documented by Sun as Sun Bug 4149667. This fix is a work-around that added a check to the protocol handler. ISSUE 33669: Fixed a problem with mime-type being ignored by web-applications. ISSUE 33792: The contents of the ntrealm.properties file has been moved into the weblogic.properties file. The following property is now used: weblogic.security.ntrealm.domains=hostname1,hostname2 (See the New WebLogic Properties section) ISSUE 33866: Now we report the reasons for peergone messages better. ISSUE 33877: Fixed a problem where a java.io.IOException: Nonexportable ciphersuite requested error was occurring in the DEFAULT ciphers. ISSUE 34067: Enhanced the performance of LDAP realms. When the number of principals was growing, the performance of the LDAP realm was suffering significantly. LDAP realms have been improved. More information is provided in the HTML file ldap2.html and the ldaprealms.properties file that are included with this service pack and on the web. ISSUE 34351: When running WebLogic Server as a Windows service, the HotSpot option of the JVM had to be turned off--it wasn't working using HotSpot Client VM Java 1.3 as NT service ISSUE 34358: Fixed a problem with Windows 2000, native IO and performance packs. ISSUE 34899: Fixed a problem with applet clients making t3s connections to the server. ISSUE 34907: Fixed error in routing logic when delivering exceptions. ISSUE 35012: The build date/time is shown for the native socket muxer libraries if weblogic.system.nativeIO.enable=true. ISSUE 36076: Fixed a problem getting thread dumps using Solaris with the JDK 1.2.1_04. ISSUE 36668: Fixed a problem with the weblogic.security.acl.CertAuthenticator working under the RDBMSRealm. ISSUE 36994: If the connection to the socket fails the server used to try to reconnect irregardless. Now the server throws an exception and terminates unnecessary initialization. ISSUE 37008: WebLogic Server was using a relative path in the "Location" HTTP response header. Now the relative URL is converted to an absolute URL before sending the response to the client. ISSUE 37781: This fixed a problem for users who wanted to use WebLogic Server clustering in a WAP environment and utilize HTTP Get or Post method by HTML FORMs to pass the JSessionId. ISSUE 37785: Fixed a problem on Alpha Tru64 5.0; now we provide a libweblogicunix1.so. ISSUE 38062: Fixed a recent problem with the performance pack for HPUX-11. ISSUE 38376: Added weblogic.httpd.WAPEnabled property (default to false). The plugin did not recognize sticky sessions when WebLogic Server was not clustered. This parameter determines whether or not we include the JVMID.(See the New WebLogic Properties section) ISSUE 38592: When bound to the jndi tree, non-serializable objects such as javax.mail.MailSession should not get replicated to other servers in a cluster. ISSUE 38833: Along with Issue 34067, this issue fixed problems and enhances performance with LDAP realms. More information is provided in the HTML file ldap2.html and the ldaprealms.properties file that are included with this service pack and on the web. ISSUE 39233: Fixed a problem in JTS with maximum timeouts. The maximum size of the timeout parameter for setTransactionTimeout() was not taking MAX_INT. ISSUE 40022: Fixed a problem when classLoadNotify is non-null and the VM vendor is WebGain or Symantec. ISSUE 40026: When the server threw protocol exceptions it did not also include the URI so there was no way to know what had possibly caused the exception. This has been fixed. ## Additional details on new plugin parameters: The following parameters have been added and are available for the specified plugins. For information on how to install plug-ins, see the online administrator's guides.
Parameter Name | Defaults | Pertains To | Description
--- | --- | --- | ---
DynamicServerList | ON/OFF (Default: ON) | ISAPI only | It will be "ON" by default. If set to "OFF" then the dynamic list returned by WebLogic with the response will be ignored by the plugin. There will be some shortcomings if the users go for this architecture. First, they cannot add new servers in the cluster as the plugin will try to connect only to the servers in it's static list. Second, if they add a new server to the list and it becomes the secondary, then the plugin will not failover (because of isServerInList) hence sessions will be lost. Finally, if any server goes down the plugin will hit that dead server again and again. This may affect the performance.
| Debug | ON/OFF (Default: OFF) | All Plug-ins | "Debug" will log the following messages to c:\tmp\wlproxy.log on NT and /tmp/wlproxy.log on UNIX: --All headers coming in from the client/browser --All headers sent to WebLogic --All headers returned by WebLogic --All headers returned back to the browser/client --Dynamic Cluster List --Connection info --Other informational, warning and error messages
| DebugConfigInfo | ON/OFF (Default: OFF) | All Plug-ins | This parameter is used to enable the magic query parameter "__WebLogicBridgeConfig". This is used to get details about configuration parameters from the plugin. For example, if you enable "__WebLogicBridgeConfig" by setting DebugConfigInfo=ON and then send a request like: http://www.mywebserver.com:8000/weblogic/foo.jsp?__WebLogicBridgeConfig, then the plug-in will gather the configuration information and return it back to the browser. Note that it will not connect to the WebLogic Server in this case. This parameter is strictly for debugging and the format of the output message can change with releases. For security purposes it is advised to keep this parameter turned OFF in production systems. | DefaultFileName | filename | All Plug-ins | If the URI is "/" then the default filename will be appended to the URI. This prevents redirects from the WebLogic Server. The DefaultFileName should be set to the default welcome page of the WebLogic Server. If the DefaultFileName is set to welcome.html, a http request like "http://somehost/weblogic" will become "http://somehost/weblogic/welcome.html". For this parameter to function, the same file must be specified in the weblogic properties file. For example, in this case, the weblogic properties file must be set to weblogic.httpd.initArgs.file=defaultfilename=welcome.html.
HungServerRecoverSecs | 10:300:600 for min:default:max | All plugins | You should set this to a very large value. If it is less than the time the servlets take to process, then you will see unexpected results. This implementation takes care of the hung or unresponsive servers in the cluster. So the plugin waits for HungServerRecoverSecs for the the server to respond and then declares that server dead and fails over to the next server.
Idempotent | ON/OFF (Default: ON) | All plugins | This is a URL level flag. By default it will be "ON" so if the servers do not respond within HungServerRecoverSecs, the plugins will failover. If set to "OFF" the plugins will not failover. It can be set differently for different URL's or Mime types.
MaxSkips | 5:10:1000 for min:default:max | ISAPI only | Currently if a server goes down the plugin marks it as bad and skips it for the next ten requests for that server. Ten skips doesn't mean ten requests but ten calls to getNextServer(). This happens when the request comes without the cookie, and the PRIMARY and SECONDARY are down. By using this parameter the user can change the MAX_SKIPS for dead servers.
| DisableCookie2Server | ON/OFF (Default: OFF) | Apache only | If set to ON, the plug-in will not use the server information in cookies. This fixes a problem with WAP devices that have a limitation using cookies.

## New WebLogic Properties

#### weblogic.jms.ignoreMemExhaustCheck=[true|false] (Issue 33227)

If set to true, the JMS memory check is ignored and messages can be sent and published when 75% or more of the server memory is used up. When this property is set to false, the memory check is NOT ignored. By default this is set to false.

#### weblogic.httpd.inputCharset.<Dir name>=<charset name> (Issue 30298)

A new property can be used to specify charset for the getParameter() and getParameterValues().

Using GET/POST requests from a Client or Browser, the servlet container determines charset of the string using the request URI of the HTTP request.

To specify encoding for the string of GET or POST request, the following properties need to be set in the weblogic.properties file:

weblogic.httpd.inputCharset.<Dir name>=<charset name>

<Dir name> is for the resource path used in the request URI. <charset name> is IANA character set name.

For Example: If you want to use EUC-JP charset as a default, Shift_JIS for under /i and iso-8859-1 for under /en, such as:

    public_html ---- products
    (EUC-JP)         (EUC-JP)
                ---- about
                     (EUC-JP)
                ---- download
                     (EUC-JP)
                ---- i
                     (Shift_JIS)
                ---- en
                     (iso-8859-1)

In this case, then the following properties need to be set:

weblogic.httpd.inputCharset./*=EUC-JP weblogic.httpd.inputCharset./i/*=Shift_JIS weblogic.httpd.inputCharset./en/*=iso-8859-1

Additional Notes:

     1) Mapping IANA charset and JAVA encoding

     You can specify mapping between IANA charset and JAVA encoding as follows:

     weblogic.httpd.charsets.<IANA charset>=<Java encoding>

    The following makes mapping from a IANA EUC-JP charset to Java EUCJIS encoding.

     weblogic.httpd.charsets.EUC-JP=EUCJIS

     2) Default Mapping

     WebLogic Server has a default mapping table between IANA charset and Java encoding. Normally, you don't have to specify
     particular mapping specification.

     3) Default charset

     If you don't specify inputCharset, then WebLogicServer handles charset the same as the Server's VM default encoding.

    For example, getParameter works on MS932 on Japanese NT without specification of inputCharset.

#### weblogic.httpd.unkownMimeTypeIsDefault=[true|false] (Issue 35589)

Added new property, weblogic.httpd.unknownMimeTypeIsDefault=[true|false] which fixes a problem retrieving mime-type. By default this is set to false. The J2EE spec says that getMimeType() takes a filename for input as a String, and should return a NULL value if the MIME type is not known. By setting this new parameter to true, the spec is followed and the default mime type is disabled to allow null.

#### weblogic.httpd.session.neverReadPostData=[true|false] (Issue 36827)

Added a new property weblogic.httpd.session.neverReadPostData=[true|false] This prevents the server reading the post data in search of a SessionId. Anyone experiencing problems with missing POST data should try setting the the property to true.

#### weblogic.system.maxExecuteThreadCount (Issue 30826)

A new property "weblogic.system.maxExecuteThreadCount" has been added to configure the maximum number of the threads the weblogic will support. This sets the maximum the property "weblogic.system.executeThreadCount" will take. This property is configurable both from client and server. Note that there may be problems incurred by setting this property too high. See our tuning documentation for more information on performance with the WebLogic Server and execute threads.

#### weblogic.jsp.windowscaseSensitive=[true|false] (Issue 30869)

Added weblogic.jsp.windows.caseSensitive property. The default is false. If set to true, jspc and JspServlet do not change to lower-case the name of the generated file. The property is relevant on Windows only. The default is false (as it should be on Win32).

#### weblogic.security.ntrealm.domains=hostname1,hostname2 (Issue 33792)

The contents of the ntrealm.properties file has been moved into the weblogic.properties file. The following property is now used: weblogic.security.ntrealm.domains=hostname1,hostname2. This property can be set to a string list of hostnames of all the trusted domains. This adds the ability to search multiple trusted domains. If a ntrealm.properties file still exists, it will be used before the weblogic.properties file will, so it's suggested to remove all instances of ntrealm.properties on your system. These can sometimes reside in c:\winnt\, so please search your entire system for the file. The command line is a good way to test connectivity. Use the following command: java weblogic.security.ntrealm.NTRealm username password. This should produce output similar to the following:

    NTDelegate using Primary Domain Controller \\VULCAN
    auth ? joe
    enum users:
       #1 'Administrator'
       #2 'joe'
       #3 'Guest'
       #4 'NTTestUser'
    enum groups:
       #1 'None'
       #2 'Administrators'
       #3 'Backup Operators'
       #4 'Guests'
       #5 'Power Users'
       #6 'Replicator'
       #7 'Users'
    enum groups for user: joe
       #1 'Administrators'
       #2 'Backup Operators'
       #3 'Power Users'
       #4 'Users'
       #5 'None'
    is user joe an Administrator? true
    done

For details on NTRealm see WebLogic's online docs.

#### weblogic.httpd.WAPEnabled=[true|false] (Issue 38376)

Added weblogic.httpd.WAPEnabled property. The default is false. The plugin did not recognize sticky sessions when WebLogic Server was not clustered. This property determines whether or not the server includes the JVMID. If the server is WAP enabled (weblogic.httpd.WAPEnabled=true) we will not send the server info (JVMID) in non-clustered cases.

## Additional details on WebLogic_RDBMS.jar:

We include the lib/persistence/WebLogic_RDBMS.jar file in the service pack to resolve issue 9999. This jar file requires special attention because it is not a jar file that gets pre-appended to any classpaths. Instead, this EJB CMP jar file just needs to replace the original WebLogic_RDBMS.jar file in the lib/persistence directoy. No modifications are needed to the java or weblogic classpaths.

It is important to note that EJBs must be recompiled if the new WebLogic_RDBMS.jar file is installed from a service pack. They must also make sure that their classpaths are set correctly. In general, if you wish to resolve issue 9999, apply the weblogic510sp7.jar file as follows:

- Server - Apply weblogic510sp7.jar to weblogic.class.path
- EJB Deployer/Developer - Apply weblogi510sp7.jar to CLASSPATH
- Client - Do not apply weblogic510sp7.jar

  ## Details on Specific Issues

  #### Additional details on ISSUES 10228, 10399, 10428, and 10986:

    1. mod_wl.so for standard Apache (non EAPI) installations
    2. mod_wl_ssl.so for Apache + SSL/EAPI installations(Stronghold, modssl etc)
    3. mod_wl_ssl_raven.so for Apache + Raven installations
    mod_wl_ssl_raven.so was required because Raven applies frontpage patches which makes it incompatible with mod_wl_ssl.so
    mod_wl_eapi.so is no longer required. That has been removed from the GNUmakefile.
    These binaries have been certified against C2Net's Stronghold/3.0 (Apache/1.3.12) and Covalent's Raven/1.4.3 (Apache/1.3.12).

    #### Additional details on ISSUE 30648:

    If you set mimeType as the following:
    weblogic.httpd.mimeType.text/x-hdml;charset=Shift_JIS=hdml
    It will be stored as:
    extension="hdml"
    mimeType="text/x-hdml;charset=Shift_JIS"
    So that when you do a context.getMimeType("foo.hdml") it will return: "text/x-hdml;charset=Shift_JIS"

    #### Additional details on ISSUE 31492:

    The following properties need to be set in the weblogic.properties file:
    weblogic.system.startupClass.demojoltpoolStart=\
    bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
    weblogic.system.startupArgs.demojoltpoolStart=\
    poolname=demojoltpool,\
    appaddrlist=//lcsol1:6000,\
    failoverlist=//lcsol1:6000,\
    minpoolsize=1,\
    maxpoolsize=3,\
    recvtimeout=200 (number of seconds)

    #### Additional details on ISSUES 31822:

    The following diagram illustrates the differences between setting secureProxy="ON" and secureProxy="OFF".
    This feature is set in the WebLogic properties file.
    secureProxy=ON
    BROWSER<------>HTTPS------>PROXY<------>HTTPS----->WEBLOGIC SERVER CLUSTER
    secureProxy=OFF
    BROWSER<------>HTTPS------>PROXY<------>HTTP----->WEBLOGIC SERVER CLUSTER

    By passing the secureProxy parameter as an initial argument (in WebLogic init.Args) in the cluster servlet and setting it to ON, SSL between the proxy and the clusters will be enabled. Below is a demonstration of how to turn on the secure proxy feature:

    weblogic.httpd.register.cluster=weblogic.servlet.internal.HttpClusterServlet
    weblogic.httpd.initArgs.cluster=\
    defaultServers=server1:7001:7002|server2:7001:7002,\
    secureProxy=ON

    #### Additional details on ISSUES 31877:

- How to get userid: request.getRemoteUser()
- How to get referred/attempted URL: request.getAttribute("weblogic.formauth.targetURL")

  These will both work on the error page of the webapp.

  #### Additional details on ISSUE 32309:

  The WebLogic Server uses the "dispatch in-thread" optimization to handle in-memory replication traffic. Normally the request that is read off the socket is handled by a different thread once the request has been placed on the ExecuteQueue by the socket reader thread. In handling the "in-memory" replication traffic, the updates to the objects that are replicated need to be performed in a timely fashion. Hence the "dispatch in-thread" pattern is used to avoid a context switch and thread contention that is incurred by this request being placed on the ExecuteQueue. However, on rare occasions this pattern results in a deadlock when both sides of the connection try and update objects on behalf of each other. The deadlock has been fixed with this change by introducing an alternate ExecuteQueue--the NonBlockingExecuteQueue to service message traffic that is guaranteed not to block. This queue is used *only* by the Weblogic Server internally i.e. application requests are never placed on this queue--they are handled by placing them on the regular ExecuteQueue.

  #### Additional details on ISSUE 32806:

  Setting up access log rotation
  Note: Access log rotation requires WebLogic Server 5.1, Service Pack sp4 or later.

  Access log rotation allows you to rotate your HTTP access log when it reaches a certain size or after a specified amount of time has passed. When the access log rotates, a new log file with a new file name is started. The access log's file name includes a numeric portion that is incremented upon each rotation.

  To set up access log rotation, set the following properties (in addition to those properties you set to enable access logs) in your weblogic.properties file:

  weblogic.httpd.logRotationType

  Set to date to rotate your access log by date. If you choose this option, you must also set two additional properties: weblogic.httpd.logRotationPeriodMins and weblogic.httpd.logRotationBeginTime.

  Set to size to rotate your access log when it exceeds a certain size. If you choose this option, you must also set the weblogic.httpd.maxLogFileSizeKBytes property. The default value is size.

  weblogic.httpd.logRotationPeriodMins

  If you are rotating your access log by date, set this to the number of minutes after which the access log will rotate. (1440 minutes = 24 hours, 100080 minutes = 1 week). The default value is 1440.

  weblogic.httpd.logRotationBeginTime

  Sets the date when the first access log rotation will occur. If you do not set this property, the access log rotates after the amount of time specified with the weblogic.httpd.logRotationPeriodMins property. Enter the date using the java.text.SimpleDateFormat, MM-dd-yyyy-k:mm:ss. See the javadocs for the java.text.SimpleDateFormat class for more details. For example: 11-24-2000-12:30:00

  If, when you start WebLogic Server, this date has already passed, the first access log rotation will occur on the day you start WebLogic Server, at the hour, minute, and second specified by weblogic.httpd.logRotationBeginTime.

  weblogic.httpd.maxLogFileSizeKBytes

  Set to the maximum size, in kilobytes, for your access log file. When the access log reaches this size, it is rotated. If set to 0 (the default value) access log files do not rotate based on size. This property is ignored when weblogic.httpd.logRotationType is set to date.

  #### Additional details on ISSUE 33258:

  Sun's ldap does not work with Microsoft's Site Server, but Netscape's ldap 4.1 does. Please follow the following steps to configure WLS5.1 with MS Site Server 3.0.

  1. Download Netscape's ldap 4.1 from Netscape's web site http://www.iplanet.com/downloads/developer/index.html and decompress it to your local directory.

  2. Include Netscape's ldap4.1's jar files (ldapfilt.jar, ldapjdk.jar, ldapsp.jar) from your local directory in WEBLOGICCLASSPATH in the startweblogic startup script.

  3. Add the following line to your ldaprealm.properties file. weblogic.security.ldaprealm.factory=com.netscape.jndi.ldap.LdapContextFactory

  #### Additional details on ISSUE 31335 and ISSUE 30768:

  1. The "ntrealm.properties" file is no longer necessary for single domain systems.
  In the case of a single domain, the ntrealm.properties file need to be either removed or renamed from the system. Search for the existence of this file by doing a search on the root directory.
  2. If an additional trusted domain is to be added to the default domain, the ntrealm.properties file is still needed. In this case, in the ntrealm.properties, give the hostname of the other, trusted domain (note: not the domain name, the hostname).
  3. However the following property needs to be set in the weblogic.properties file in either case:
  weblogic.security.realmClass=weblogic.security.ntrealm.NTRealm
  4. For details on NTRealm see online docs.

  ## Known Issues

  ISSUE 30561 : There was a typo in the weblogic.properties file shipped with the release.

  The weblogic.properties file with the release says:

  # Add a TXDataSource for the connection pool:
  #weblogic.jdbc.TXDataSource.weblogic.jdbc.jts.demoPool=demoPool

  It should actually be:

  # Add a TXDataSource for the connection pool:
  #weblogic.jdbc.TXDataSource=demoPool

  ## Miscellaneous

- General files included with every service pack:

  - utils/version.class

    This file will update the message returned when you use
    the version utility to show that you are using "Service Pack 7".

- We have included demo security certificates with extended expiration dates in this release.

- We have included Apache plugins for Solaris, HP, AIX, Linux, and Tru64 in this release.

  Copyright © 2000 BEA Systems, Inc. All rights reserved.
  Required browser: Netscape 4.0 or higher, or Microsoft Internet Explorer 4.0 or higher.
  Last updated 12/11/2000