Documentation Archive Developer
Search
WebObjects 4.5.1 Release Notes
PATH  Documentation > WebObjects 4.5 > Release Notes

WebObjects Release Notes  Copyright 1998-2001 by Apple Computer, Inc. All Rights Reserved.

 

WebObjects 4.5.1
Release Notes

Last Updated March 28, 2001

This document lists the issues resolved in WebObjects 4.5.1.

For comprehensive information about WebObjects 4.5.1, consult the WebObjects 4.5.X documentation.



Issues Resolved in This Release

Corrected in WebObjects 4.5.1

Reference2400792
IssueAdding key/values to UserInfo panel crashes EOModeler
DescriptionEntering key/value pairs into the UserInfo panel of the entity Inspector panel caused EOModeler to crash.
Resolution    EOModeler now allows the entry of key/value pairs in this panel.
  
  
Reference2418851
IssueWOF insists on some content data
DescriptionIf an instance generated a response with no content data, the WebObjects framework was adding a single zero byte of content data.
Resolution    The extra byte is no longer added. If an instance generates a response which contains no content data, no content data is sent and the content length is zero.
  
  
Reference2425341
Issueshould flush connections before reusing them
DescriptionUnder some circumstances (an untimely response from an application instance, for example) the WebObjects adaptor could be left in a state with extra data in an input buffer. This could cause synchronization problems if the connection is reused.
Resolution    The adaptors now explicitly check for unknown extra data on a connection before reusing it. Additionally, any error associated with a particular connection will cause that connection to be closed rather than reused.
  
  
Reference2436051
IssueCGI should not use round robin or load average
DescriptionIf the CGI adaptor is in use and the adaptor persistent shared memory (described elsewhere) is disabled, the adaptor should only use random scheduling. Otherwise all requests will be directed to the first instance on the list.
Resolution    The adaptor has been modified so that in the case of CGI with no persistent state random scheduling is the only load balancer available.
  
  
Reference2437219
Issuethe WebServerResources directory is not cleared in a split install
DescriptionA split install did not remove the previous WebServerResources directory before copying in new resources. This could result in old resources not being removed if the project is rebuilt.
Resolution    Any existing WebServerResources directory for the project is now recursively removed before resources are copied into it.
  
  
Reference2443578
Issueinvalid config update time in adaptor
DescriptionAn invalid configuration update time could result in the WebObjects adaptor never updating the configuration.
Resolution    The configuration update time now has both minimum and maximum constraints. The default minimum value is 10 seconds, and the default maximum value is 1 hour.
  
  
Reference2452071
Issue"print-object" (po) can cause various errors
DescriptionOn Windows, the GDB command print-object frequently prints gibberish and occasionally hangs and fails to return the (gdb) prompt.
Resolution    print-object now works correctly on Windows.
  
  
Reference2453259
IssueTrailing white space in Monitor causes errors
DescriptionTrailing white space in the additional arguments of Application and Instance configuration in Monitor causes errors when launching instances.
Resolution    Spaces and newlines are now stripped from the end of the additional arguments in the Application and Instance configuration pages in Monitor.
  
  
Reference2465433
IssueAutorecover configuration settings in Monitor don't work
DescriptionIn Monitor's configure page, the check box to start autorecover instances once they were added didn't do anything.
Resolution    This configuration option has been removed from Monitor. All instances configured to Autorecover will be started after they are added.
  
  
Reference2467086
IssueMonitor occasionally gets the same port as an app configured from Monitor.
DescriptionSince Monitor isn't assigned a specific port number by default, it is possible that it could be assigned the same port as a configured instance which is not currently running. The instance would then be unable to run as it could not use the port taken by Monitor.
Resolution    To avoid this problem, assign a port to Monitor using the "-WOPort #" argument where '#' is not near the port numbers used by your applications configured in Monitor. If you are running Monitor as a Windows service you will have to edit the registry entry for the Monitor451 service to add the "-WOPort #" argument.
  
  
Reference2478791
IssueMonitor is unable to talk to a wotaskd configured to listen on a port other than 1085
DescriptionMonitor was hardwired to talk to port 1085.
Resolution    The port on which wotaskd listens is now configurable. This is specified using the command line option -WOLifebeatDestinationPort # when launching Monitor. See the overview of the Monitor/wotaskd changes in 4.5.1 for more details.
  
  
Reference2478796
Issuesupporting the HEAD method
DescriptionWebObjects does not support the HEAD method.
Resolution    Support for the HEAD method has been added to both the WebObjects adaptors and the WebObjects framework. Internally, an app processes a HEAD request just as a GET, but no content is returned in the response.
  
  
Reference2490927
Issuewotaskd thinks instances are dead when they aren't
Descriptionwotaskd makes http requests to running instances to gather statistics. While communicating with an instance wotaskd is blocked from processing instance lifebeats. If an instance takes long enough to respond wotaskd may consider instances dead because no lifebeats have been processed.
Resolution    wotaskd has been modified so that reading statistics from an instance no longer blocks processing of lifebeats.
  
  
Reference2499687
IssueMonitor is painfully slow when invalid hosts are in siteconfig
DescriptionWhen a host is added in Monitor that isn't a valid host (i.e. DNS or other hostname lookup services can't resolve its IP address), anytime that Monitor tried to talk to the host it would try to resolve the IP address and you'd have to wait for DNS to timeout since the host doesn't exist.
Resolution    Monitor now does not allow the entry of hosts which cannot be resolved.
  
  
Reference2501212
Issueunsigned integers from Sybase adaptor cause crashes in JavaClient
DescriptionThe Sybase adaptor uses an unsigned NSNumber for database 'tinyint' or 'bit' types. The unsigned number is not compatible with JavaClient, resulting in a crash of the JavaClient application.
Resolution    The Sybase adaptor now uses signed NSNumbers.
  
  
Reference2501219
IssueSybaseChannel describeResults returns incomplete attributes
DescriptionThe -[SybaseChannel describeResults] method returns incomplete
attributes. In particular, the width, scale, and precision are not set.
Resolution    The width, scale, and precision attributes are now set.
  
  
Reference2508461
IssueMonitor is slow when a host is added by ip address.
DescriptionMonitor needs to resolve the ip address to a hostname in order to function in an efficient manner.
Resolution    You can now add a host in Monitor using an ip address. Duplicate references to the same host via name or ip address are not added. Monitor will not allow a host to be added if it cannot resolve its name.
  
  
Reference2511487
IssueWOAdaptor error: "The requested application was not found on this server"
DescriptionWhen the WebObjects adaptor reads its configuration using a multicast broadcast to discover instance servers, sometimes the adaptor does not receive a response from one or more servers. This might be due to network traffic or machine load causing the response packets to be dropped. (In practice this can even happen when wotaskd and the adaptor are running on the same machine.) If this happens, the adaptor will not know about instances running on the particular machine(s), and can report a not found error.
Resolution    If the adaptor receives a request for an unknown application, the configuration is immediately updated and rechecked before returning an error. This change does not eliminate the theoretical possibility of this problem happening, but does dramatically reduce the probability it will happen.
  
  
Reference2516186
IssueMonitor should not accept an application name with 'bad' characters
DescriptionAn application name must include only valid characters for URLs and XML tags because of the way in which the value is used in WebObjects.
Resolution    The following characters are not allowed in the Application name as entered in Monitor via the ApplicationsPage or when changing the 'real name' in the Application configure page. The following characters (enumerated inside paired quotation marks) will be removed from any application name entered: " ", "_", "&", "!", "@","#","$","%", "^", "*",";","|","/". The result will be used as long as it is greater than zero length.
  
  
Reference2519707
Issueinvalid HTTP post crashes app
DescriptionIf a POST request includes MIME multipart content data and the content data is missing the MIME terminating boundary the application crashes.
Resolution    A multipart MIME content with no terminating boundary is invalid. The request parser has been modified to raise an exception if this situation is encountered.
  
  
Reference2520830
Issueadaptor error pages are cached
DescriptionWhen the WebObjects adaptor generates an error page it does not include the appropriate response headers to indicate the response should not be cached. This can cause the user to incorrectly encounter error pages because the error response has been cached (by the browser, or a caching proxy).
Resolution    Error response pages now include HTTP headers marking them as uncachable.
  
  
Reference2542662
Issueinstances listening on port 1085 on Windows
DescriptionOn the Windows platform, instances started by wotaskd can sometimes tie up port 1085. If wotaskd is stopped and restarted when this happens it can no longer receive requests or lifebeats.
Resolution    Two changes have been made, both of which are specific to the Windows platform. 1) wotaskd's port is specifically marked as noninheritable. 2) wotaskd now spawns instances in their own process groups. (Note that the Microsoft web site documents defects with the Windows version of the 'netstat' command relating to display of ports in the 'LISTENING' state.)
  
  
Reference2555481
Issuemkdir -p sometimes fails on NT
Descriptionmkdir -p would occasionally fail on some paths with the error "mkdir: cannot make directory 'C:': File exists."
Resolution    mkdir -p has been updated to work reliably on any path.
  
  
Reference2558300
Issuewotaskd thinks apps have died during daylight saving time changes
DescriptionDaylight savings time changes cause wotaskd to think that applications have not responded in over an hour and have therefore died.
Resolution    The date of a lifebeat now keeps the time zone information so the change to or from daylight savings time will not cause problems.
  
  
Reference2560545
IssueWebObjects 4.5.1 needs to support some WebObjects 5 defaults
DescriptionThe WebObjects 5 deployment environment uses some defaults which are not present in WebObjects 4.5. To enable compatibility of WebObjects 4.5.1 applications and the WebObjects 5 deployment tools (specifically, Monitor and wotaskd) some new defaults need to be added in WebObjects 4.5.1.
Resolution    The following defaults have been added:

WODeploymentConfigurationDirectory (Monitor/wotaskd)
Each wotaskd writes it's current configuration to disk whenever a change is made. It will write the SiteConfig.xml file in the directory specified by this default. The default value for this varies by platform (C:\Apple\Local\Library\WebObjects\Configuration, /Library/WebObjects/Configuration/, /opt/Apple/Local/Library/WebObjects/Configuration). This also allows for running multiple sets of wotaskds+Monitor on a group of machines, since they will no longer overwrite each other's configurations. This directory is also where wotaskd will write it's adaptor configuration file (WOConfig.xml) if requested.

WORespondsToMulticastQuery (wotaskd)
In WebObjects 4.5 each wotaskd always responded to a multicast query from the adaptors. The new behavior in WebObjects 4.5.1 is for this to be configurable. The default is NO.

WOSavesAdaptorConfiguration (wotaskd)
In WebObjects 4.5 each wotaskd always wrote a version of the Adaptor Config xml (WOConfig.xml) to disk, even if there was no reason to. For scalability purposes, we introduce this default, and default it to NO.

WOApplicationName (applications)
This default allows wotaskd to set the value of the internal application name (returned by [WOApplication name]) to properly register lifebeats. This also enables the adaptor to load-balance between groups of applications even if they have the same executable name.

WOLifebeatInterval (applications)
This default enables configuring the time between lifebeats sent to wotaskd. The value is the interval in seconds between lifebeats. The defaults is 30 seconds.

WOOutputPath (applications)
This default enables redirecting an application's output to a file. If WOOutputPath is specified, all output written to standard out or standard error is written to the specified file (this includes all output generated by NSLog()).
If the specified output path is "/dev/null" then some special optimizations are enabled. On all platforms the formatting and output done by NSLog is bypassed completely, possibly resulting in performance enhancement. Additionally, on UNIX platforms the stdout and stderr file descriptors are redirected to the null device, so printf() output will also be discarded. On Windows platforms, stdout and stderr are redirected to the file "c:/webobj.log".
  
  
Reference2563430
IssueThe application startup interval needs to be configurable
DescriptionThe startup interval is a period of time, which must be longer than the assume dead interval, that wotaskd will wait for the application to start before assuming it is dead and starting another instance.
Resolution    The startup interval is now configurable using -WOStartupInterval # as an argument to wotaskd. Its default setting is 300 seconds.
  
  
Reference2565839
IssueObsolete SYMCJIT.DLL causes crash on P4 hardware
DescriptionWebObjects 4.5 included JDK 1.1.8, which included a JIT that does not run on Pentium 4 hardware. The symptom in a WebObjects 4.5 application running on a Pentium 4 box is that the app will hang upon launching any Java component.
Resolution    WebObjects 4.5.1 includes JDK 1.1.8_006, which does run properly on Pentium 4 hardware. See $NEXT_ROOT/Library/JDK/CHANGES for more information on the changes in the JDK between 1.1.8 and 1.1.8_006.
  
  
Reference2573299
Issueapplication instance never gets dealloc'd
DescriptionWhen an instance exits WOApplication instance never gets deallocated. Consequently, any cleanup code never gets executed.
Resolution    The problem was due to a high level autorelease pool never being released. This pool is now released, so the application instance is properly deallocated.
  
  
Reference2573918
Issueresponses should be marked uncacheable
DescriptionA caching http proxy can produce many undesirable effects in conjunction with a WebObjects application.
Resolution    WebObjects includes the ability to disable client caching of pages. Refer to [WOApplication setPageRefreshOnBacktrackEnabled:]. In WebObjects 4.5 the default value of this setting was NO. For WebObjects 4.5.1 this default value has been changed to YES.
  
  
Reference2584702
IssueIIS WebObjects adaptor leaks key-strings
DescriptionIn WebObjects 4.5, the IIS adaptor made copies of the incoming request header keys. These copies were never freed.
Resolution    In WebObjects 4.5.1 the keys are not copied.
  
  
Reference2602033
IssueThe Sybase EOF Adaptor sometimes mismanages command buffers
DescriptionSybaseContext would call ct_con_drop() to drop the connection,
but keep a now-dangling pointer to the command buffer, or attempt to call
ct_cmd_drop() on that pointer. These could cause sporadic crashes.
Resolution    SybaseContext now manages its command buffer correctly, dropping it at the correct times and forgetting the pointer when dropping it, directly or indirectly.
  
  
Reference2604596
IssueSometimes Monitor displays null stats for instances in the detail view
DescriptionWhen an application is very busy, Monitor sometimes cannot show stats in the detail view because wotaskd is unable to connect to collect the information.
Resolution    Connect directly to the instance's WOStats page, having launched the instance with the -WOStatisticsPassword argument. Connect to the WebObjects adaptor's WOAdaptorInfo page for the number of sessions an instance is running.
  
  
Reference2606720
IssueWORequest doesn't supply default http version
DescriptionThe WORequest method initWithMethod:uri:httpVersion:headers:content:userInfo: is documented to supply a default value for httpVersion if nil is specified. No default value was being set.
Resolution    A default value of "HTTP/1.0" is now used if no http version is specified.
  
  
Reference2613561
IssueProjectBuilderWO Error: [FileWell editor]: selector not recognized
DescriptionAttempting to "tear off" an editing window in ProjectBuilderWO by using the Option key to drag a file's icon from the preview pane or from the recently used files list will result in the following error message: Error: *** -[FileWell editor]: selector not recognized
Resolution    Command-Shift-T with the file selected or option-drag the file icon from the upper-right-hand corner.
  
  
Reference2636336
IssueAdaptor uses default configuration if no wotaskd responding to multicast found
DescriptionIf the WebObjects adaptor is configured to search for wotaskd using multicast and no server responds, the adaptor falls back to querying wotaskd on localhost:1085. This may produce unexpected and undesired results.
Resolution    The WebObjects adaptor has been modified to only read configuration from servers which respond to the multicast query. If no servers respond to the multicast query, the adaptor does not attempt to read configuration.
  
  
Reference2637725
IssueMonitor should tell user that the port is not available for launching a new app
DescriptionWhen starting a single instance, wotaskd will attempt to bind to the future instance's listen port to determine if it is available. If the port is available, wotaskd closes the port and tries to launch the instance. If the port is not available, an error message is returned to Monitor and is displayed in the DetailPage. If 'Start All' is used, you will not see error messages from instances that failed to start.
Resolution    Monitor reports errors for individual attempts to start instances. If you have instances that fail to start using 'Start All', start them individually to see their error messages.
  
  
Reference2643790
IssueJavaConverter
DescriptionWebObjects 4.5.1 includes the JavaConverter tool for converting your Objective C code to pure Java for use with WebObjects 5.
Resolution    WebObjects 4.5.1 does not include the source for JavaConverter, so you can only extend it through TOPS scripts. The version shipped with WebObjects 5 will include the source so that you can make your own changes to the tool to support your own code.
  
  
Reference2647130
IssueAdaptors clash with PHP
DescriptionThe WebObjects 4.5 HTTP Adaptors define and use several list_*() functions that clash with identically named functions in PHP.
Resolution    The list_*() functions in the adaptors have been renamed to wolist_*() to avoid this name collision.
  
  
Reference2650175
IssueNo easy way to get wotaskd's info when a password is set in Monitor
DescriptionWhen a password is set in Monitor, wotaskd will refuse requests for the HostStats page unless the password is in the headers.
Resolution    Monitor's Hosts page now has a link to wotaskd that will add the password header if a password is set.
  
  
Reference2657442
IssueAdaptor does not work with version 3 URLs
DescriptionThe WebObjects 4.5.1 Adaptors do not properly handle version 3 URLs. The WebObjects 4.5.1 Adaptors cannot be used with WebObjects 3.5.1 applications.
Resolution    There are several options:

1) Upgrade the WebObjects 3.5.1 applications to WebObjects 4.5.1.

2) Configure the web server to use an older version of the WebObjects Adaptor for WebObjects 3.5.1 applications. One possibility might be to use an older version of the CGI adaptor for WebObjects 3.5.1 applications and the WebObjects 4.5.1 version of a plugin adaptor for 4.5.1 applications.

3) Modify the version 3 URL handling code in the WebObjects 4.5.1 adaptor source.
  
  
Reference2659017
IssuePBWO on Mac OS X writes PB.project files in XML
DescriptionPB.project files created using ProjectBuilderWO on Mac OS X cannot be opened by ProjectBuilder on other platforms, e.g. Mac OS X Server 1.2 and Windows.
Resolution     If you need to work with projects on multiple platforms, set the following default on your Mac OS X machine to tell ProjectBuilderWO to write PB.project files in a format that is compatible across platforms.

defaults write ProjectBuilderWO NSWriteOldStylePropertyLists YES
  
  
Reference2659817
IssueSessions don't time out according to the setting of the WOSessionTimeOut user default
DescriptionThe documentation sometimes incorrectly refers to the WOSessionTimeOut user default as WOSessionTimeout. WebObjects doesn't recognize the latter spelling.
Resolution     Be sure to spell the user default with the proper capitalization: WOSessionTimeOut.
  
  
Reference2662992
IssueIIS adaptor does not pass all request headers properly
DescriptionThe WebObjects 4.5 adaptor for IIS does not pass all request headers through to the instance.
Resolution     The mechanism by which the adaptor extracts request headers from IIS has been modified. It now passes through all request headers.
  
  
Reference2663739
IssueSessionless direct action development apps inaccessible via web server
DescriptionAn instance of a sessionless direct action application does not include the instance id in the URL generated by WOHyperlink. As a result, this type of application is not accessible through the WebObjects web server adaptor when running as a development instance.
Resolution     To access the instance through the web server configure it as a deployment instance. This will allow the WebObjects adaptor to select the instance without requiring the instance number.
  
  
Reference2668931
IssueDefaults oriented for development
DescriptionSeveral application defaults have default values which are more appropriate for development environments than for deployment environments. For example, WODebuggingEnabled defaults to YES.
Resolution     For WebObjects 4.5.1, the WOUserDefaults.plist in the WebObjects framework has been removed. In its place are two new files named WODeploymentUserDefaults.plist and WODeveloperUserDefaults.plist. The latter is only installed as part of a developer installation. The WebObjects framework will read default values from WODeveloperUserDefaults.plist in preference to WODeploymentUserDefaults.plist. This allows separate default values for developer and deployment only installations. Additionally, for the deployment case the following defaults have been changed to NO: WODebuggingEnabled, WOAutoOpenInBrowser, and WODirectConnectEnabled.
  
  

Corrected in WebObjects 4.5 Update 3

 WebObjects 4.5 Update 3 Overview