PATH
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
Reference | 2400792 | |
Issue | Adding key/values to UserInfo panel crashes EOModeler | |
Description | Entering 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. | |
Reference | 2418851 | |
Issue | WOF insists on some content data | |
Description | If 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. | |
Reference | 2425341 | |
Issue | should flush connections before reusing them | |
Description | Under 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. | |
Reference | 2436051 | |
Issue | CGI should not use round robin or load average | |
Description | If 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. | |
Reference | 2437219 | |
Issue | the WebServerResources directory is not cleared in a split install | |
Description | A 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. | |
Reference | 2443578 | |
Issue | invalid config update time in adaptor | |
Description | An 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. | |
Reference | 2452071 | |
Issue | "print-object" (po) can cause various errors | |
Description | On 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. | |
Reference | 2453259 | |
Issue | Trailing white space in Monitor causes errors | |
Description | Trailing 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. | |
Reference | 2465433 | |
Issue | Autorecover configuration settings in Monitor don't work | |
Description | In 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. | |
Reference | 2467086 | |
Issue | Monitor occasionally gets the same port as an app configured from Monitor. | |
Description | Since 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. | |
Reference | 2478791 | |
Issue | Monitor is unable to talk to a wotaskd configured to listen on a port other than 1085 | |
Description | Monitor 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. | |
Reference | 2478796 | |
Issue | supporting the HEAD method | |
Description | WebObjects 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. | |
Reference | 2490927 | |
Issue | wotaskd thinks instances are dead when they aren't | |
Description | wotaskd 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. | |
Reference | 2499687 | |
Issue | Monitor is painfully slow when invalid hosts are in siteconfig | |
Description | When 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. | |
Reference | 2501212 | |
Issue | unsigned integers from Sybase adaptor cause crashes in JavaClient | |
Description | The 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. | |
Reference | 2501219 | |
Issue | SybaseChannel describeResults returns incomplete attributes | |
Description | The -[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. | |
Reference | 2508461 | |
Issue | Monitor is slow when a host is added by ip address. | |
Description | Monitor 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. | |
Reference | 2511487 | |
Issue | WOAdaptor error: "The requested application was not found on this server" | |
Description | When 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. | |
Reference | 2516186 | |
Issue | Monitor should not accept an application name with 'bad' characters | |
Description | An 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. | |
Reference | 2519707 | |
Issue | invalid HTTP post crashes app | |
Description | If 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. | |
Reference | 2520830 | |
Issue | adaptor error pages are cached | |
Description | When 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. | |
Reference | 2542662 | |
Issue | instances listening on port 1085 on Windows | |
Description | On 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.) | |
Reference | 2555481 | |
Issue | mkdir -p sometimes fails on NT | |
Description | mkdir -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. | |
Reference | 2558300 | |
Issue | wotaskd thinks apps have died during daylight saving time changes | |
Description | Daylight 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. | |
Reference | 2560545 | |
Issue | WebObjects 4.5.1 needs to support some WebObjects 5 defaults | |
Description | The 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". | |
Reference | 2563430 | |
Issue | The application startup interval needs to be configurable | |
Description | The 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. | |
Reference | 2565839 | |
Issue | Obsolete SYMCJIT.DLL causes crash on P4 hardware | |
Description | WebObjects 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. | |
Reference | 2573299 | |
Issue | application instance never gets dealloc'd | |
Description | When 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. | |
Reference | 2573918 | |
Issue | responses should be marked uncacheable | |
Description | A 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. | |
Reference | 2584702 | |
Issue | IIS WebObjects adaptor leaks key-strings | |
Description | In 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. | |
Reference | 2602033 | |
Issue | The Sybase EOF Adaptor sometimes mismanages command buffers | |
Description | SybaseContext 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. | |
Reference | 2604596 | |
Issue | Sometimes Monitor displays null stats for instances in the detail view | |
Description | When 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. | |
Reference | 2606720 | |
Issue | WORequest doesn't supply default http version | |
Description | The 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. | |
Reference | 2613561 | |
Issue | ProjectBuilderWO Error: [FileWell editor]: selector not recognized | |
Description | Attempting 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. | |
Reference | 2636336 | |
Issue | Adaptor uses default configuration if no wotaskd responding to multicast found | |
Description | If 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. | |
Reference | 2637725 | |
Issue | Monitor should tell user that the port is not available for launching a new app | |
Description | When 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. | |
Reference | 2643790 | |
Issue | JavaConverter | |
Description | WebObjects 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. | |
Reference | 2647130 | |
Issue | Adaptors clash with PHP | |
Description | The 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. | |
Reference | 2650175 | |
Issue | No easy way to get wotaskd's info when a password is set in Monitor | |
Description | When 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. | |
Reference | 2657442 | |
Issue | Adaptor does not work with version 3 URLs | |
Description | The 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. | |
Reference | 2659017 | |
Issue | PBWO on Mac OS X writes PB.project files in XML | |
Description | PB.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 | |
Reference | 2659817 | |
Issue | Sessions don't time out according to the setting of the WOSessionTimeOut user default | |
Description | The 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. | |
Reference | 2662992 | |
Issue | IIS adaptor does not pass all request headers properly | |
Description | The 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. | |
Reference | 2663739 | |
Issue | Sessionless direct action development apps inaccessible via web server | |
Description | An 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. | |
Reference | 2668931 | |
Issue | Defaults oriented for development | |
Description | Several 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 | ||