WebObjects: About the 5.2.3 Update

This document contains an overview and download information for the WebObjects 5.2.3 Update. WebObjects 5.2 users who want formal qualification and support for Java 1.4.2 should install this update. WebObjects 5.2 users who plan to develop their WebObjects applications on Mac OS X 10.3.3 or who use the Xcode development tool suite or plan to deploy their WO 5.2 applications on Mac OS X Server 10.3.3, Windows, or Solaris should also install this update.
The WebObjects Current Patch List contains information on all available patches and updates for all versions of WebObjects. Read this document if you're not sure which update you need on your system.

This update address issues with CLOSE_WAIT states in deployment using JavaMonitor and wotaskd. It also addresses a number of issues related to EOF under high load.

WebObjects 5.2.3 Developer for Mac OS X 10.3.3

Important: There are two mutually exclusive updates for this platform. If you have WebObjects 5.2 Developer installed on Mac OS X 10.3, you need the WebObjects 5.2.3 Developer update. If you have WebObjects 5.2 Deployment installed on Mac OS X Server 10.3, you need the WebObjects 5.2.3 Deployment update. You do not need both on any system.

This update is available through the Software Update feature of Mac OS X. If you use this method, only the proper update for the software which you have installed on your system is visible and available for download. If you prefer to download and install the package manually, follow the instructions below.

System requirements

WebObjects 5.2.3 Developer requires:
If you have not yet updated to the correct version of Mac OS X or Developer Tools, you must do so before installing WebObjects 5.2.3. Mac OS X 10.3.3 and the Xcode 1.1 Developer tools are available through Software Update.

If you are creating a new Mac OS X WebObjects 5.2.3 development system, you should install the software in the following order:
  1. Install Mac OS X 10.3
  2. Update to Mac OS X 10.3.3
  3. Xcode Developer tools CD
  4. Xcode 1.1 Software Update
  5. WebObjects 5.2 Developer
  6. WebObjects 5.2.2 Developer
  7. WebObjects 5.2.3 Developer

Manually installing WebObjects 5.2.3 Developer on Mac OS X 10.3.3

These instructions are for manually downloading and installing WebObjects 5.2.3 Developer. If you are installing using Software Update, see the previous section of this document.

System requirements

WebObjects 5.2.3 Developer requires:
If you have not yet updated to the correct version of Mac OS X, Java, or Developer Tools, you must do so before installing WebObjects 5.2.3.
  1. Go to http://www.apple.com/support/downloads and download the WebObjects 5.2.3 Developer update. The disk image should expand after downloading, leaving WO523Developer.pkg.
  2. Open WO523Developer.pkg. The Authenticate panel opens.
    Important: Only an administrator can install the update.
  3. Type the proper administrator name and password to authenticate.
  4. Click OK to proceed. The Introduction panel appears.
  5. Click Continue. The Software License Agreement appears.
  6. Read the software license agreement, then click Continue.
  7. Click Agree to agree to the license agreement, and continue the installation.
  8. Select the volume containing Mac OS X and WebObjects 5.2 Developer.
  9. Click Continue.
  10. Make sure that there are no WebObjects or EOF applications running.
  11. Click Install to proceed with installation. The Installer window displays information about the progress of the installation, which may take several minutes.
  12. Restart your computer.

WebObjects 5.2.3 Deployment for Mac OS X 10.3.3 Server

This update is available through the Software Update feature of Mac OS X. If you use this method, only the proper update for the software which you have installed on your system is visible and available for download. See document 107869 for more information on the Applications Servers update for Mac OS X Server.

Important: If you have installed the Application Servers update and have WebObjects services that do not run upon restart, see document 107909.

System requirements

WebObjects 5.2.3 Deployment requires:
If you have not yet updated to the correct version of Mac OS X Server, you must do so before installing WebObjects 5.2.3. Mac OS X Server 10.3.3 is available through Software Update

If you are creating a new Mac OS X WebObjects 5.2.3 deployment system, you should install the software in the following order:
  1. Mac OS X Server 10.3
  2. Mac OS X Server 10.3.3
  3. Application Server Update

Configuration tasks:
  1. wotaskd is not configured to autostart by default. Open the file /System/Library/StartupItems/WebObjects/WebObjects and uncomment the following line:

    "$WOSERVICE" -appPath "$WOTASKD" >/var/log/webobjects.log 2>&1 &

  2. If you are planning to use Apache, you will need to update the httpd.config file. Add the following to the end of the file /etc/httpd/httpd.config:

    # Including WebObjects Configs Include /System/Library/WebObjects/Adaptors/Apache/apache.conf


Manually Installing WebObjects 5.2.3 Deployment on Mac OS X Server 10.3.3

These instructions are for manually downloading and installing WebObjects 5.2.3 Deployment. If you are installing using Software Update, see the previous deployment section of this document, WebObjects 5.2.3 for Mac OS X Server 10.3.

System requirements

WebObjects 5.2.3 Deployment requires:
Follow these steps:
  1. Go to http://www.apple.com/support/downloads
  2. Download the Application Servers Update package for Mac OS X Server 10.3.3. Stuffit Expander should automatically expand the archive, leaving a disk image with the ApplicationsServerUpdate.pkg.
  3. Open ApplicationsServerUpdate.pkg. The Authenticate panel opens.
    Important: Only an administrator can install the update.
  4. Type the proper administrator Name and Password to authenticate.
  5. Click OK to proceed. The Introduction panel appears.
  6. Click Continue. The Software License Agreement appears.
  7. Read the software license agreement, then click Continue.
  8. Click Agree to agree to the license agreement and continue the installation.
  9. Select the volume containing Mac OS X and WebObjects 5.2 Deployment.
  10. Click Continue.
  11. Make sure that there are no WebObjects or EOF applications running.
  12. Click Install to proceed with installation. The Installer window displays information about the progress of the installation, which may take several minutes.
  13. Restart your computer.

Installing WebObjects 5.2.3 on Windows 2000

System Requirements

WebObjects 5.2.3 Developer/Deployment requires:
If you see panels indicating that certain files being replaced by the update are "locked" during installation, click Reboot to continue the installation. The files will be replaced upon restarting.

This update cannot be uninstalled alone. Once you have upgraded to WebObjects 5.2.3 you cannot revert to a previous version of WebObjects 5.2. However, the entire WebObjects 5.2.3 installation can be uninstalled using the Add/Remove Programs control panel.

Follow these steps:
  1. Download the self-extracting update installer for Windows 2000.
  2. Log in as a user with Administrator privileges.
  3. Make sure that there are no WebObjects or EOF applications running.
  4. Open WO523.exe to start the installation process. A screen appears with some information about this update.
  5. After you have read the information screen, click Next to continue. The license agreement for this update appears.
  6. To agree to the license and continue the installation, click Yes. The update will be installed on your system and you will be asked if you want to restart.
  7. Select "Yes, I want to restart my computer now" to restart Windows.
  8. The WinZip self-extractor automatically quits and removes its temporary files in about 20 seconds.

Installing WebObjects 5.2.3 on Solaris

System Requirements

WebObjects 5.2.3 Deployment requires:
If you have not yet updated to these versions, you must do so before installing WebObjects 5.2.3.

Follow these steps:
  1. Download the update installer for Solaris and the update installation script, patcher.sh.
  2. After you have downloaded the files, the patcher.sh script needs its executable bit set. At the command prompt enter:

    chmod 511 patcher.sh

  3. Log in as root.
  4. Ensure that there are no WebObjects or EOF applications running, including Monitor.
  5. If a web server is running on the computer on which you are installing the update, stop it.
  6. Stop WebObjects services (wotaskd and woservice) using the WOServices script. At the command prompt enter:

    cd $NEXT_ROOT/Library/WebObjects/Executables ./WOServices stop

    These services will restart when you restart the computer after installing the update.

  7. To Install the update, cd to the directory containing the update and the patcher.sh installation script. Then at the command prompt enter:

    patcher.sh -install WO523Solaris.tar.gzip

    For more information on using patcher.sh, at the command prompt enter:

    patcher.sh -help

  8. Copy the updated WODocument root to your web server's document root.

    cp -r $NEXT_ROOT/Library/WebObjects/WODocumentRoot/WebObjects <webserver doc root>/WebObjects

  9. Restart your computer.


Issues resolved in WebObjects 5.2.3

Support for single byte numbers broken

Apple Reference 3100683

ISSUE:

Specifying an attribute that mapped to a single byte external database type with a value type of 'b' and NSNumber value class was broken.

RESOLUTION:

This specific case has been enabled.

Checked boxes generated by WOCheckedboxMatrix do not align correctly in some cases.

Apple Reference 3148863

ISSUE:

If the text to the right of the checked boxes takes more than one line and if it wraps, the checked boxes are aligned between the lines instead of aligning at the first line.

RESOLUTION:

This issue has been resolved.

The escapeHTML binding was missing in certain WOComponent such as WOSubmitButton.

Apple Reference 3197639

ISSUE:

The logic for handling the escapeHMTL binding of WOSubmitButton was missing.
As a result, JavaWebObjects.framework always replaced the "&" character with the "&amp;" string.

RESOLUTION:

The logic for handling the escapeHTML binding has been added to WOInput. The escapeHMTL binding can be manually added to subclasses of WOInput such as WOSubmitButton by using the Binding Inspector of WebObjects Builder.

NullPonterException raised in com.webobjects.eocontrol.EOEditingContext._eoForGID

Apple Reference 3206657

ISSUE:

Under some circumstances, this exception is thrown when calling EOEditingContext.saveChanges().

RESOLUTION:

This issue has been resolved.

Multithreaded EOF access causes NPE in EODatabaseContext

Apple Reference 3219139

ISSUE:

Under heavy load, multithreaded EOF throws a NullPointerException while saving changes.

java.lang.NullPointerException
        at com.webobjects.eoaccess.EODatabaseContext.createAdaptorOperationsForDatabaseOperation(EODatabaseContext.java:5467)
        at com.webobjects.eoaccess.EODatabaseContext.performChanges(EODatabaseContext.java:6291)
        at com.webobjects.eocontrol.EOObjectStoreCoordinator.saveChangesInEditingContext(EOObjectStoreCoordinator.java:411)
        at com.webobjects.eocontrol.EOEditingContext.saveChanges(EOEditingContext.java:3130)


RESOLUTION:

This issue has been resolved.

WOMessage.appendHeader() needs to check for duplicate values

Apple Reference 3219197

ISSUE:

Under some circumstances, appendHeader can continually add duplicate values to a header.

RESOLUTION:

This issue has been resolved.

Certain cookies were not handled properly.

Apple Reference 3274806

ISSUE:

Whenever the last attribute-value pair of a cookie contains a null value, an NSForwardException for java.lang.StringIndexOutOfBoundsException get thrown.

RESOLUTION:

This issue has been resolved.

Deadlock in a single threaded application when garbage collection occurs

Apple Reference 3277451

ISSUE:

Under some circumstances, some customers were seeing deadlocks when some EnterpriseObjects were being finalized and an attempt to take a lock on them occurred.

RESOLUTION:

This issue has been resolved.

Potential deadlock when EOSharedEditingContexts are involved

Apple Reference 3323120

ISSUE:

Under some circumstances, EOF would deadlock when faults were fired and objects were being finalized.

RESOLUTION:

This issue has been resolved.

componentsSeparatedByString wrong when chopping strings of only separators

Apple Reference 3323130

ISSUE:

If a string contains only separators, or multiple separators in a row, this method may produce an array with too few empty strings.

RESOLUTION:

This issue has been corrected.

JSModalWindow inserts a spurious newline

Apple Reference 3323144

ISSUE:

JSModalWindow inserts a spurious newline.

RESOLUTION:

This issue has been resolved.

Deadlock with nested EOEditingContexts

Apple Reference 3342847

ISSUE:

Under some circumstances, unlocked child EOEditingContexts were leaving locks on their parent EOEditingContexts.

RESOLUTION:

This issue has been resolved.

Batch faulting not generating the correct SQL

Apple Reference 3428581

ISSUE:

Under some circumstances, would not generate the correct EOFetchSpecification when batch faulting.

RESOLUTION:

This issue has been resolved.

Performance problems within component caching

Apple Reference 3467030

ISSUE:

Inefficient cache lookups for components caused a lot of disk usage.

RESOLUTION:

This issue has been resolved.

WOComponent.path() breaks API compatibility

Apple Reference 3467194

ISSUE:

WOComponent.path() in 5.2.2 broke previous behavior and returned a URL formatted path. Pre-5.2.2 behavior has been restored.

RESOLUTION:

This issue has been resolved.

NullPonterException in WOResourceManager.stringForKey() for invalid key

Apple Reference 3473069

ISSUE:

If WOResourceManager.stringForKey() is called for an invalid key, we throw and exception instead of returning null.

RESOLUTION:

This issue has been resolved.

The Java source files generated by EOModelder could not be customized in per project basis.

Apple Reference 3473117

ISSUE:

The Java source files generated by EOModelder could not be customized in per project basis by providing a local copy of EOJavaClass.template file in the project folder, as documented in WebObjectsTools_Techniques.pdf.

RESOLUTION:

This issue has been resolved.

primeApplication(String, URL, String) should not be deprecated

Apple Reference 3484678

ISSUE:

WOApplication.primeApplication(String mainBundleName, URL mainBundlePathURL, String nameOfApplicationSubclass) was mistakenly marked as deprecated in javadoc.

RESOLUTION:

This issue has been resolved.

WOSortOrder generates an illegal element "border=0" in the <A> html tag.

Apple Reference 3489479

ISSUE:

The <A> tag generated by WOSortOrder contains an element "border=0", which is not a legal element for the <A> html tag.

RESOLUTION:

This issue has been resolved.

Certain legacy ProjectBuilder projects did not build after upgrading to Xcode projects.

Apple Reference 3493962

ISSUE:

When a legacy ProjectBuilder project was first opened with Xcode, the option of upgrading to Xcode project was offered. However, the upgrading process failed whenever the main aggregate target name of a legacy ProjectBuilder project did not match with the project name. As a result, the upgraded Xcode project does not build properly.

RESOLUTION:

The resolution is to manually rename the main aggregate target name of the project to match with the project name using either the legacy ProjectBuilder or Xcode, save and close the project, re-open the project with Xcode, and finally then rename the main aggregate target name to its original value.

REGRESSION:WO5.2.2: WOFileUpload generates exception when no file selected at submission

Apple Reference 3508033

ISSUE:

WOFileUpload could generate a ClassCastException when no file is selected and the form is submitted.

RESOLUTION:

This issue has been resolved.

wotaskd and monitor leave sockets in a CLOSE_WAIT state

Apple Reference 3535483

ISSUE:

Under some circumstances, a socket leak occurred when http 1.0 was used. We think a majority of the CLOSE_WAIT problems pertaining to wotaskd and monitor are addressed.

RESOLUTION:

This issue has been resolved.

NullPointerException at EOEditingContext._setRecordIsInitialized()

Apple Reference 3538032

ISSUE:

It is possible to see this exception when an EO is deleted and updated within the same event (usually save changes)

RESOLUTION:

This issue has been resolved.

Monitor potentially leaked a socket when adding new hosts

Apple Reference 3551310

ISSUE:

When adding new hosts, Monitor potentially could leak a socket per host.

RESOLUTION:

This issue has been resolved.

To-one relationship does not update correctly when destination entity has boolean attribute

Apple Reference 3108071

ISSUE:

Upon saving changes, the destination entity with boolean attributes does not commit correctly to the database because the snapshot is in an invalid state.

RESOLUTION:

In order to resolve this problem, the behavior of a boolean attribute that is defined with a Number value class and value type of 'c' will now return a Boolean value instead of an Integer value.

Troubleshooting

1. My application is throwing the exception "com.webobjects.foundation.NSForwardException for java.lang.NoClassDefFoundError: javax/servlet/ServletContext"

For some reason, the necessary packages are not in your classpath. Debug your classpath to make sure the javax.servlet.* classes are there. If the classes are not found, the resolution is to download the servlet.jar and put it into /Library/Java/Extensions or in your classpath. The servlet.jar can be found with many open source distributions (e.g tomcat).

2. How do I convert my legacy WebObjects application to build as a true war bundle?

  1. In Xcode, configure your build settings to the following:

    SERVLET_SINGLE_DIR_DEPLOY = NO
    SERVLET_STUB_WAR = NO
    SERVLET_TRUE_WAR = YES
    SERVLET_DEPLOY_LICENSE = <your deployment license>
    SERVLET_WEBAPPS_DIR = /Library/JBoss/3.2/deploy
    

  2. Add the JavaWOJSPServlet.framework to your project
  3. You should also verify that all of your custom frameworks are being built as jar files and are installed or linked into /Library/WebObjects/lib.


Published Date: Oct 7, 2016