TITLE
    WebObjects 4.0.1 Patch 2 Overview
Article ID:
Created:
Modified:
70141
12/29/99
1/26/00

TOPIC

    This document contains an overview and download information for Apple's Patch 2 for WebObjects Release 4.0.1. Apple recommends that all users of WebObjects 4.0.1 install this patch set on all platforms except Mac OS X Server 1.2.

    WebObjects 4.0.1 Patch 2 includes all of the fixes from WebObjects 4.0.1 Patch 1. If you have already installed WebObjects 4.0.1 Patch 1 on your system, you can install Patch 2 over your existing installation. If you have not installed Patch 1, you do not need to.

    The WebObjects Current Patch List, TIL article 70037 , contains information on all available patches and workarounds for all versions of WebObjects, including EOF patches. Please read this document if you're not sure which patches you need on your system.


DISCUSSION

    Before You Install (Windows NT)

    Windows NT users who have customized their WindowsName.table time zone assignment file should back up that file before installing this patch and restore their custom file after this patch is installed. This patch installs a new copy of WindowsName.table which contains different default assignments for some Windows time zones.

    Before You Install (Mac OS X Server)

    This version of the patch is intended for Mac OS X Server versions prior to 1.2. Do not install this patch on Mac OS X Server 1.2.

    Mac OS X Server users who have customized their tnsnames.ora Oracle database configuration file should back up that file before installing this patch and restore their custom file after this patch is installed. This patch will overwrite your tnsnames.ora file.

    Installing WebObjects 4.0.1 Patch 2 on MacOS X Server 1.0

    1. Download WO401OSXPatch2.pkg.compressed , the patch installer for Mac OS X Server.

    NOTE: Some versions of OmniWeb for Mac OS X Server incorrectly add a .Z file extension to downloads in .compressed format. If the file you download has an extension of .compressed.Z, rename it to .compressed or it will not be correctly uncompressed by OpenUp.

    2. Uncompress the patch file. Your web browser or FTP client may perform this step for you.

    2. Log in as root on your Mac OS X Server system. If you're not sure how to log in as root, see your system administrator.

    3. Double-click on the WO401MacOSXSPatch2.pkg file.

    4. Click the Install button in the Installer package window. An Install Package panel will open.

    5. Make sure that there are no other WebObjects or EOF applications running.

    6. Click 'Install' in the Install Package panel and, when prompted for confirmation, click OK to proceed. The Installer window displays information about the progress of the installation, which may take several minutes.

    7. When the installation completes, the system must be rebooted. Log out and use the reboot button on the login panel.

    Installing WebObjects 4.0.1 Patch 2 on Windows NT 4.0
    1. Download WO401NTPatch2.exe , the patch installer for Windows NT.

    2. Log in as a user with Administrator privileges.

    3. Make sure that there are no WebObjects, OPENSTEP or EOF applications running.

    4. Double-click on the patch installer, WO401NTPatch2.exe, to start the install process.

    5. A screen will appear with some information about this patch. After you have read it, click "Next" to continue.

    6. The license agreement for this patch will appear. To agree to the license and continue the installation, click "Yes".

    7. The patch will now be installed on your system and you will be asked if you want to reboot. Select "Yes, I want to restart my computer now" to reboot your Windows NT system. The WinZip self-extractor will automatically quit and remove the temporary installation in about 20 seconds.

    8. For WebObjects developer installations, see TIL article 70135 . There are manual steps you must take to avoid some century issues

    Installing WebObjects 4.0.1 Patch 2 on Solaris and HP-UX

    1. Download WO401SolarisPatch2.TAR.Z , the patch installer for Solaris, or WO401HPUXPatch2.TAR.Z , the patch installer for HP-UX. Also download the patch installer, patcher.sh .

    2. Log in as root. If you're not sure how to log in as root, see your system administrator.

    3. Make sure that there are no WebObjects, OPENSTEP or EOF applications running.

    4. Change to the directory containing the patch and the patch installer, "patcher.sh".

    5. At a shell prompt, type:

    patcher.sh -install WO401SolarisPatch2.TAR.Z

    or

    patcher.sh -install WO401HPUXPatch2.TAR.Z

    For more information on using the "patcher.sh" program, type the following at the command prompt:

    patcher.sh -help

    6. Reboot your Unix system

    Issues Addressed

    Corrected in WebObjects 4.0.1 Patch 2

    Application hangs if a Sybase stored procedure is missing from the database
    Apple reference #2309889

    ISSUE:

    If an EOF application called a stored procedure that was not actually in the database, the db_ctx structure that ct_lib uses was not cleaned up, leaving the entire application unusable.

    RESOLUTION:
    EOF now detects that a stored procedure is missing, cleans up the server command structure, and raises an exception normally in the application.


    SybaseChannel doesn't raise an exception when execution of a stored procedure fails.
    Apple reference # 2309891

    ISSUE:

    The SybaseEOAdaptor did not raise the current exception if execution of a stored procedure failed. Thus, in some cases, the developer had no way to handle the failure.

    RESOLUTION:
    An exception is now raised in the failure case. See also Apple Reference 2309889.

    String conversion for case-insensitive comparison should all be done by the database
    Apple reference #2309907

    ISSUE:

    In case-insensitive comparison of a value string with a database column, the EOF adaptors uppercased the value string but relied on the database itself to uppercase the column. If there was any difference in the way uppercasing was performed by the adaptor and the database, comparison would fail incorrectly.

    RESOLUTION:
    The EOF adaptors now have the database uppercase both the value string and the column, to eliminate possible inconsistency.


    Sybase varbinary type mapped to incorrect Foundation type
    Apple reference #2309912


    ISSUE:
    The SybaseEOAdaptor's -internalTypeForExternalType: model: method incorrectly mapped the Sybase "varbinary" type to "NSString".

    RESOLUTION:
    This method now correctly maps "varbinary" to "NSData".

    SybaseEOAdaptor's binaryID prototype should map to Sybase binary type
    Apple reference #2309918


    ISSUE:
    The SybaseEOAdaptor's binaryID prototype should be mapped to the Sybase binary type rather than the varbinary type.

    RESOLUTION:
    The EOSybaseAdaptorPrototype.plist mapping of binaryID has been changed to Sybase binary.

    EOF fails silently if an entity name is typed incorrectly.
    Apple reference #2309929

    ISSUE:

    EOF could silently fail in cases where an entity name had been typed incorrectly (misspelled or miscased), the model name had been updated in the model file but not in the program code, or the model group had been constructed incorrectly.

    RESOLUTION:
    EOObjectStoreCoordinator's -objectsWithFetchSpecification: editingContext: method now detects these conditions and raises appropriate exceptions.


    Can't use object-based qualifiers with raw row fetches.
    Apple reference #2309931

    ISSUE:

    Object-based qualifiers could not be used with raw row fetches.

    RESOLUTION:
    The raw row fetch code has been changed to transform object-based qualifiers to schema-based qualifiers before performing the fetch.

    ODBC adaptor generates spurious login error message
    Apple reference #2309933


    ISSUE:
    The first time the user tried to connect to the ODBC database when defining a new model (or switching adaptors to ODBC), an invalid login error message was encountered. If the user proceeded to log in with the correct name and password everything worked, but the error was misleading.

    RESOLUTION:
    The connnection information for the initial login panel is now properly constructed.

    Leak in EODatabaseContext avaliableChannel method
    Apple reference #2309934

    ISSUE:

    The -availableChannel method of EODatabaseContext leaked one object for each EODatabaseChannel object allocated.

    RESOLUTION:
    This leak has been fixed.

    EODatabase never releases snapshots
    Apple reference #2315267

    ISSUE:

    Snapshots associated with enterprise objects were never released.

    RESOLUTION:
    EOF now tracks references to an object and releases the object's snapshot when there are no more references to it.

    Optimistic locking fails on Oracle for rows with trailing spaces
    Apple reference #2315268

    ISSUE:

    OracleEOAdaptor stripped trailing spaces from VARCHAR2 data fetched from or committed to an Oracle database. If VARCHAR2 data containing trailing spaces had been inserted by another tool, optimistic locking failed for any affected row and the row could not be updated.

    RESOLUTION:
    OracleEOAdaptor no longer strips trailing spaces from VARCHAR2 data.

    Deleting newly inserted objects fails
    Apple reference #2315270

    ISSUE:

    An object created and inserted into an editing context or relationship, then deleted before being saved to the database, was not completely removed from the editing context. This caused an exception to be raised the next time the editing context was saved.

    RESOLUTION:
    Deletion of a newly-inserted object now completely removes the object from the editing context.

    Exception logging into SQL Server 7.0 via ODBCEOAdaptor
    Apple reference #2315283

    ISSUE:

    The ODBC adaptor shipped with WebObjects 4.0.1 did not work with version 7.0 of Microsoft's SQL Server product.

    RESOLUTION:
    The ODBC adaptor has been updated to work with SQL Server 7.0 as well as SQL Server 6.5.

    Incorrect time zone conversion in EOAccess layer
    Apple reference #2315287

    ISSUE:

    When converting a time value to the server time zone, the EOAccess layer substituted the sever's time zone without actually adjusting the time value for the zone difference.

    RESOLUTION:
    EOAttribute now performs the conversion of the time value to the corresponding value in the server's time zone.

    Incorrect time zone conversion in SybaseEOAdaptor
    Apple reference #2316883

    ISSUE:

    When converting a time value to the server's time zone, SybaseEOAdaptor only substituted the server's time zone without actually adjusting the time value for the zone difference.

    RESOLUTION:
    SybaseEOAdaptor now performs the conversion of the time value to the corresponding value in the server's time zone.

    Special characters crash Sybase adaptor
    Apple reference #2316889

    ISSUE:
    The SybaseEOAdaptor crashed when saving Text or BLOB data containing characters which could not be successfully encoded using the specified database encoding.

    RESOLUTION:
    The adaptor has been fixed to detect the encoding failure and raise an exception, so that a database encoding which is able to handle the problem characters may be specified in the connection dictionary.

    OracleEOAdaptor generates incorrect SQL for left and right outer joins
    Apple reference #2316963

    ISSUE:

    The SQL generated by the Oracle adaptor for a left outer join was actually the syntax for a right outer join, and vice versa.

    RESOLUTION:
    The OracleEOAdaptor now generates the correct SQL for left and right outer joins.

    Some exceptions not passed across Java Bridge
    Apple reference #2317188

    ISSUE:

    If an Objective C exception was raised in an Objective C method called from Java, the bridge correctly converted the NSException to a Java exception and threw it in Java. However, if the conversion of the NSException itself raised an exception, the subsequent behaviour of the application was undefined.

    RESOLUTION:
    The conversion exception is now caught, both exceptions are logged, and a JavaUnknownError is thrown in the Java VM with the message: "Failed to convert Objective C exception to Java exception. Refer to log output for more information."

    Java access violation error when bridge cannot find a class
    Apple reference #2317205

    ISSUE:

    If a Java exception occurred while WebObjects was attempting to look up a Java class, the exception might not be re-raised in Objective C. If this occurred, the JavaBridge sometimes crashed when it failed to load the wrapper class.

    RESOLUTION:
    The JavaBridge now raises an appropriate exception in Objective C when a wrapper class can not be found.

    Garbage collector frees wrapped objects prematurely
    Apple reference #2317214

    ISSUE:

    When a wrapped Objective C object was created in a Java method, the Objective C proxy was not retained. Java garbage collection could then release this object while it was still in scope.

    RESOLUTION:
    Objective C proxy objects are now retained until the approriate autorelease pool is deallocated.

    alloc or init returning nil confuses the Java bridge
    Apple reference #2317215

    ISSUE:

    The JavaBridge did not correctly handle the case where the Objective C base of a hybrid object returned nil from its Objective C init method.

    RESOLUTION:
    In this case, a NullPointerException is now raised in Java. This fix included a change to one of the header files used by the bridget utility. All Java projects must be rebuilt to take advantage of this fix. Please note that your code still needs to wrap Java constructors in try/catch statements to catch instantiation exceptions; see TIL article 70035 for more details.

    Case-insensitive matching sometimes fails
    Apple reference #2318841

    ISSUE:

    Case-insensitive matching did not correctly match uppercase letters in the search pattern with lowercase letters in the receiving string.

    RESOLUTION:
    Case-insensitive matching now works correctly for all combinations of uppercase and lowercase comparison.

    ODBC adaptor prepends owner to table name
    Apple reference #2319115

    ISSUE:

    When reversing engineering a Microsoft SQL Server database with ODBC database, the table names all had the form OWNER.NAME instead of just NAME.

    RESOLUTION:
    The entity names no longer have the owner prefixed to the name.

    selectObject: method return values don't match documentation
    Apple reference #2319284

    ISSUE:

    The [EODisplayGroup selectObject:] method only returned 'NO' if it could not end editing or if the delegate refused the change. According to the class documentation, it should also return 'NO' if the EODisplayGroup's displayedObjects array does not contain a match with the method's object argument.

    RESOLUTION:
    As stated in the documentation, this method now returns 'NO' when it cannot find a match for the argument oject.

    WebObjects applications set unnecessary cookies
    Apple reference #2319507

    ISSUE:

    A WebObjects application could erroneously set two cookies, wosid and woinst, in the browser.

    RESOLUTION:
    WebObjects applications no longer set these unnecessary cookies.

    Can't compile EOArchive subclasses containing JavaBeans
    Apple reference #2319614

    ISSUE:

    An EOArchive method needed by subclasses containing JavaBeans was incorrectly declared private. This leads to a compilation error in any JavaBean-bearing EOArchive.

    RESOLUTION:
    This method is now declared protected.

    DirectToWeb generation fails on MacOS X Server
    Apple reference #2319617

    ISSUE:

    DirectToWeb generation on MacOS X Server can generate the following exception:

    [DTWTemplate writeAndAddToProjectComponentNamed:]: selector not recognized

    RESOLUTION:
    This has been corrected.

    OracleEOAdaptor state not reset when closing the database channel fails
    Apple reference #2319664

    ISSUE:

    If the OracleEOAdaptor encountered an error while closing the database channel, the adaptor's state was not reset completely. As a result, the database connection could not be re-established on that channel once the database came back up.

    RESOLUTION:
    The OracleEOAdaptor now sets its internal state correctly before raising the error, allowing the connection to be re-established once the database is restored.

    EnterpriseObjects examples Rental data contains an invalid date value
    Apple reference #2324048

    ISSUE:

    The data with which the Rentals database is populated in the EnterpriseObjects examples contained an invalid credit card expiration date, 2597. With SQL Server 7.0, Microsoft's ODBC Driver fails to convert this date to the smalldatetime type, causing the examples' install_database script to fail and the Rentals data to be incompletely installed.

    RESOLUTION:
    The problem date has been changed to a value within SQL Server 7.0's valid range, 1900 to 2079.

    Calls to NSLog() are very slow on Windows NT
    Apple reference #2338242

    ISSUE:

    Calls made by an application to the NSLog() function may take as long as six seconds to return on Windows NT.

    RESOLUTION:
    NSLog()'s usage of the Windows API has been optimized to provide much better performance.

    Raw row fetch ignores CustomQuery hint
    Apple Reference #2343246

    ISSUE:

    In WebObjects 4.0.1, any CustomQuery hint was ignored during raw row fetches.

    RESOLUTION:
    The EOAccess layer now checks for a CustomQuery hint during raw row fetches and uses it if one is provided.

    Applications using multiple databases may experience unexpected interactions.
    Apple Reference #2343328

    ISSUE:

    In WebObjects 4.0.1, applications that use multiple databases could sometimes experience strange interactions due to an error in the EOAccess layer in the caching of database records.

    RESLOUTION:
    The EOAccess layer no longer caches database records in the manner that caused this problem, and the interaction between databases has been eliminated.

    WebObjects example "FDF1040EZ" uses deprecated java.util.Date API
    Apple reference #2405646

    ISSUE:

    The WebObjects Java example "FDF1040EZ" called deprecated java.util.Date API which returned a two-digit year. This is inconsistent with good Year 2000 programming practice.

    RESOLUTION:
    This example has been corrected to use the java.util.Date API correctly.

    Enterprise Objects "ModelerBundle" example uses two-digit year format
    Apple reference #2405647

    ISSUE:

    The ModelerBundler example in the Enterprise Objects Examples uses a two-digit year format for dates. This is not prefered usage for Year 2000 compliant applications.

    RESOLUTION:
    This example has been changed to use a four-digit year format.

    WebObjects example "ElementTour" uses deprecated java.util.Date API
    Apple reference #2405648

    ISSUE:

    The WebObjects Java example "ElementTour" called deprecated java.util.Date API which returned a two-digit year. This is inconsistent with good Year 2000 programming practice.

    RESOLUTION:
    This example has been corrected to use the java.util.Date API correctly.

    NSTimeZone method +timeZoneForSecondsFromGMT returns incorrect results
    Apple Reference #2406594

    ISSUE:

    The NSTimeZone method +timeZoneForSecondsFromGMT returned incorrect values in WebObjects 4.x.

    RESOLUTION:
    This method has been corrected.

    Mapping of old time zone names and abbreviations not completely accurate.
    Apple reference #2406610

    ISSUE:

    In the Foundation framework shipped with WebObjects 4.0.1, the mapping of old time zone names and abbreviations to the new names and abbreviations contained several errors and omissions.

    RESOLUTION:
    These issues have been corrected.

    WOApplication raises a released exception .
    Apple reference #2425076

    ISSUE:

    There were two places (one in WOApplication and one in WOSessionTimeOutManager) where an exception was caught, an autoreleasepool was released, and the exception was re-raised. This resulted in a message (-raise) being sent to a freed object.

    RESOLUTION:
    The exception is now properly retained before the pool is released, and is autoreleased before being raised again.


    Corrected in WebObjects 4.0.1 Patch 1

    'gnutar' command didn't accept dates later than 1999
    Apple Reference #2405644

    ISSUE:
    The 'gnutar' command has an option to only write files newer than a given date, but version 1.11.2, the version shipped with WebObjects 4.0.1, didn't accept dates past the end of 1999, even using four-digit years.


    RESOLUTION:
    'gnutar' has been updated to version 1.12, which accepts dates after 1999.


Document Information
Product Area: WebObjects
Category: WebObjects 4
Sub Category: Patches

Copyright © 2000 Apple Computer, Inc. All rights reserved.