MQSeries Workflow Version 3.3.2 - Service Pack #3 ------------------------------------------------- INDEX -------------------------------------------------------------- 1. Installation of Service Pack #3 1.1 Installation on Microsoft Windows NT/2000/ME/98 1.2 Installation on IBM AIX 1.3 Installation on Sun Solaris 1.4 Installation on HP-UX 2. Important Notes 2.1 Applying service to the Web Client 2.2 Migrating from a previous release - Installation Guide update 2.3 XML messages - handling unexpected situations 2.4 Support of 'empty activities' 2.5 Configurable message size for query workitems 3. Changes 3.1 Changes in Service Pack #1 3.2 Changes in Service Pack #2 3.3 Changes in Service Pack #3 4. License Notices -------------------------------------------------------------- 1. Installation of Service Pack #3 ================================== 1.1 Installation on Microsoft Windows NT/2000/ME/98 --------------------------------------------------- 1.1.1 Which files must be downloaded? The Service Pack consists of several self-extracting and self-installing executables. There is one for each National Language version of IBM MQSeries Workflow. To make the distribution of client updates easier, there are three types of self-extracting executables to update Client, Buildtime or full installations, respectively. The Client and Buildtime packages contain only certain MQSeries Workflow components and they are only applicable if these components or a subset of these components are installed. Use the full package to update installations including more than these components. The Client package consists of the API Runtime Library, Program Execution Agent, Runtime Client, Lotus Notes API, Admininstration Utility, Samples, Java, and the CORBA Agent component. The Buildtime package includes the Buildtime component and samples. List of the available self-extracting executables: Full Package: ------------- W332ENA3.EXE - U.S. English language version W332CSA3.EXE - Simplified Chinese language version W332CTA3.EXE - Traditional Chinese language version W332DAA3.EXE - Danish language version W332DEA3.EXE - German language version W332ESA3.EXE - Spanish language version W332FIA3.EXE - Finnish language version W332FRA3.EXE - French language version W332HEA3.EXE - Hebrew language version W332HUA3.EXE - Hungarian language version W332ITA3.EXE - Italian language version W332JPA3.EXE - Japanese language version W332KOA3.EXE - Korean language version W332NLA3.EXE - Dutch language version W332NOA3.EXE - Norwegian language version W332PLA3.EXE - Polish language version W332PBA3.EXE - Brazilian Portuguese language version W332PGA3.EXE - Portuguese language version W332TRA3.EXE - Turkish language version Client Package: --------------- W332ENC3.EXE - U.S. English language version W332CSC3.EXE - Simplified Chinese language version W332CTC3.EXE - Traditional Chinese language version W332DAC3.EXE - Danish language version W332DEC3.EXE - German language version W332ESC3.EXE - Spanish language version W332FIC3.EXE - Finnish language version W332FRC3.EXE - French language version W332HEC3.EXE - Hebrew language version W332HUC3.EXE - Hungarian language version W332ITC3.EXE - Italian language version W332JPC3.EXE - Japanese language version W332KOC3.EXE - Korean language version W332NLC3.EXE - Dutch language version W332NOC3.EXE - Norwegian language version W332PLC3.EXE - Polish language version W332PBC3.EXE - Brazilian Portuguese language version W332PGC3.EXE - Portuguese language version W332TRC3.EXE - Turkish language version Buildtime Package: ----------------- W332ENB3.EXE - U.S. English language version W332CSB3.EXE - Simplified Chinese language version W332CTB3.EXE - Traditional Chinese language version W332DAB3.EXE - Danish language version W332DEB3.EXE - German language version W332ESB3.EXE - Spanish language version W332FIB3.EXE - Finnish language version W332FRB3.EXE - French language version W332HEB3.EXE - Hebrew language version W332HUB3.EXE - Hungarian language version W332ITB3.EXE - Italian language version W332JPB3.EXE - Japanese language version W332KOB3.EXE - Korean language version W332NLB3.EXE - Dutch language version W332NOB3.EXE - Norwegian language version W332PLB3.EXE - Polish language version W332PBB3.EXE - Brazilian Portuguese language version W332PGB3.EXE - Portuguese language version W332TRB3.EXE - Turkish language version 1.1.2 Installing the Service Pack Make sure that you have stopped all running MQSeries Workflow processes and services before installing the Service Pack. Double click on the downloaded executable in the Windows Explorer. The program unpacks the files to the temporary directory and starts the installation right after unpacking. 1.1.3 Upgrading your existing MQSeries Workflow configuration Because this package includes updated DB2 bind files, you have to bind the new files to your MQSeries Workflow runtime databases as follows: - Open a DOS Command Prompt and run the configuration utility 'fmczutil' - Choose the configuration identifier of the configuration you want to update. - Choose the 'r'untime database menu, then select 'b'ind. All bindings are made for you. This can take several minutes. After you have performed these steps, your system is ready to run. You can restart your MQSeries Workflow services and processes again. 1.2 Installation on IBM AIX --------------------------- 1.2.1 Which files must be downloaded? Please download the package wf332a3u.tar.gz (61 MB) and unpack the file to a temporary subdirectory. You need approximately 121 MB to unpack the file. Unpack the downloaded file using the command gzip -dc wf332a3u.tar.gz | tar -vxf - to create the actual update installation images. 1.2.2 Installing the Service Pack 1) Stop all running MQSeries Workflow processes, for example, by shutting down the MQSeries Workflow system using the administration utility "fmcautil". 2) As root, perform the command 'slibclean'. 3) Update your MQSeries Workflow 3.3.2.x installation (with or without having hotfixes applied) using smit - "update to latest level" to level 3.3.2.30. Note: Your configuration (profiles, /var/fmc/...) will not be modified by the update. However, the installation profile /usr/lpp/fmc/fmcrc will be updated to reflect the new level "ServiceLevel=3". 4) Because this package includes updated DB2 bind files, you have to bind the new files to your MQSeries Workflow runtime databases as follows: - As user "fmc" invoke the configuration utility 'fmczutil' - Choose the configuration identifier of the configuration you want to update. - Choose the 'r'untime database menu, then select 'b'ind. All bindings will be made for you. This can take several minutes. After you have performed these steps, your system is ready to run. You can restart your queue manager, the trigger monitor, and the administration server as usual by invoking the following programs: strmqm FMCQM & runmqtrm -q FMCTRIGGER -m FMCQM & fmcamain & 1.3 Installation on SUN Solaris ------------------------------- 1.3.1 Which files must be downloaded? Please download the package wf332s3u.tar.gz (33 MB) and unpack the file to a temporary subdirectory. You need approximately 122 MB to unpack the file. Unpack the downloaded file using the command gzip -dc wf332s3u.tar.gz | tar -vxf - to create the actual update installation image. For a client-only installation, use the file wf332s3c.tar.gz. 1.3.2 Installing the Service Pack 1) First, stop all running MQSeries Workflow processes, for example by shutting down the MQSeries Workflow System using the admin utility "fmcautil". Make sure that all MQSeries Workflow processes are stopped and no file of the product is in use. 2) This is how to update your MQSeries Workflow 3.3.2.x files (with or without having hotfixes applied) to level 3.3.2.30: Issue the following command line as user "root", replace the path "/tmp/fmc332u3.pkg" from this example with the fully qualified path and filename of your ".pkg" file: pkgadd -d /tmp/fmc332u3.pkg (full package) or pkgadd -d /tmp/fmc332u3cl.pkg (client package) accept the installation of this package and overwriting files of the previous package 3.3.2.x. Note: Your configuration(s) (profiles, /var/fmc/...) will NOT be modified by the update. However, the installation profile /opt/fmc/fmcrc will be updated to reflect the new level "ServiceLevel=3". 3) Full installation package only: Because this package includes updated DB2 bind files, you have to bind the new files to your MQSeries Workflow runtime databases as follows: - As user "fmc" invoke the configuration utility 'fmczutil' - Choose the configuration identifier of the configuration you want to update. - Choose the 'r'untime database menu, then select 'b'ind. All bindings will be made for you. This can take several minutes. After you have performed these steps, your system is ready to run. You can restart your queue manager, the trigger monitor, and the administration server as usual by invoking the following programs: strmqm FMCQM & runmqtrm -q FMCTRIGGER -m FMCQM & fmcamain & 1.4 Installation on HP-UX ------------------------- 1.4.1 Which files must be downloaded? Please download the package wf332h3u.tar.gz (51 MB) and unpack the file to a temporary subdirectory. You need approximately 54 MB to unpack the file. Unpack the downloaded file using the command gzip -dc wf332h3u.tar.gz | tar -vxf - to create the actual update installation images. For a client-only installation, use the file wf332h3c.tar.gz. 1.4.2 Installing the Service Pack 1) Stop all running MQSeries Workflow processes, for example, by shutting down the MQSeries Workflow system using the administration utility "fmcautil". Make sure that all MQSeries Workflow processes are stopped and no file of the product is in use. 2) Update your MQSeries Workflow 3.3.2.x files (with or without having hotfixes applied) to level 3.3.2.30 as follows: - Use 'sam' to install the new package. - Select the "software" icon, then select "add software to local host". - Choose 'installation from disk' and enter the fully qualified path to the file "FMC332U3.PKG" (for the full installation package) and the filename itself. - Use the file FMC332U3CL.PKG for the client-only installation. - Choose "Install" from the "Actions" pulldown menu and confirm twice. After the installation you can proceed with step 3. If you do not want to use 'sam', you can use 'swinstall' with the appropriate command-line parameters that suit your needs. Note: Your configuration(s) (profiles, /var/fmc/...) will NOT be modified by the update. 3) Run the command fmczinsx -o upd to update the installation profile /opt/fmc/fmcrc with the new level "ServiceLevel=3". This value reflects the current service pack level of the installation. 4) Full installation package only: Because this package includes updated DB2 bind files, you have to bind the new files to your MQSeries Workflow runtime databases as follows: - As user "fmc" invoke the configuration utility 'fmczutil' - Choose the configuration identifier of the configuration you want to update. - Choose the 'r'untime database menu, then select 'b'ind. All bindings will be made for you. This can take several minutes. After you have performed these steps, your system is ready to run. You can restart your queue manager, the trigger monitor, and the administration server as usual by invoking the following programs: strmqm FMCQM & runmqtrm -q FMCTRIGGER -m FMCQM & fmcamain & 2. Important Notes ================== 2.1 Applying service to the Web Client -------------------------------------- It is recommended to have your own configuration for the Web Client. This way, you can easily apply service to the Web Client as follows: - Install the MQSeries Workflow Service Pack - Back up the Web Client files that you have changed (for example, WebClient.properties) to a directory that is NOT a subdirectory of \cfgs or \installedApps in case you are using WebSphere V4, because the complete subtree of your old Web Client configuration will be deleted in the next step. - Delete the Web Client configuration using the configuration utility 'fmczutil'. - Remove the WebClient's application server in WebSphere. When using WebSphere Version 4, you must remove the WebClient enterprise application before you can remove the application server. - Create a new Web Client configuration. - Merge the changes you made with the new Web Client files. This includes re-installing the samples for the Web Client as, for example, the AuditTrailHandler and the Groupworklist sample. NOTE: For the AuditTrailHandler, the Web Client needs Xalan-Java 2, which is available on the following Web site: http://xml.apache.org/xalan-j It is strongly recommended that you delete the temporary directory that you created for the compiled JSPs of the Web Client on your application server. When using IBM WebSphere V3, this temporary directory is \temp\\MQWFClient-, for example, d:\WebSphere\AppServer\temp\default_host\MQWFClient-WEBC. When using IBM WebSphere V4, this temporary directory is \temp\\WebClient_Server_-_. 2.2 Migrating from a previous release - Installation Guide update ----------------------------------------------------------------- If you migrate a buildtime database from a previous release, you need to drop the tables in the database before removing the old installation. Execute the following command after you completed step "Export Buildtime data" on page 388, Appendix P of the Installation Guide: fmcbdcdb -o=db -yConfigID In section "Prepare Buildtime", bullet 2 on page 396, Appendix P of the Installation Guide execute only the second command to recreate the tables: fmcbdcdb -o=cb -yConfigID 2.3 XML messages - handling unexpected situations ------------------------------------------------- ================================================================ Note: The format of the XML messages that are returned in case of errors is expected to change in the future. These changes will have the effect that the content of the message causing the error will become readable by using an XML parser. However, the XML nodes representing the response that carries the error itself will not be changed. ================================================================ Architecture: From an architectural perspective, three components are involved in handling XML-messages: - A client application (CA) - An execution server (ES) - A program execution agent (PEA) The client application (CA) sends XML messages (requests) to the XML input queue (EXEMLINPUTQ) of the execution server. The ES performs some computations on behalf of the request, and sends back a response if the client requested a response in the request by setting the element. During the execution of a process, the PEA or a user-defined program execution server (UPES) can execute activities. If a UPES is specified for the activity, the execution server tries to put an XML message (ActivityImplInvoke) into the queue that is specified for the UPES. If the UPES is specified as synchronous, the execution server waits for an XML response message (ActivityImplInvokeResponse) at the XML input queue. CA / ES communication: The usual message exchange consists of a CA request message and a ES response message, for example, a create and start process instance message. The response message indicates success or a failure. If a response is sent to the client, there are two types of problems: 1. Problems that are specific to the request: The ES generates an exception response that identifies the problem, for example, 'process name not found'. 2. Problems that are independent from the request: The ES generates a generic exeception response. The first parameter represents the original exception. The original message is appended as an XML comment after the closing tag, that is, it is enclosed in "". The ES can also send a general error messages to the CA with the message infrastructure or the message itself (for example, the XML parser fails while reading the message). The parameters of the general error are set as in case of the generic exception response, and the original message is appended. ES / UPES communication: If the ES tries to put an XML message to the queue of a UPES, and the put fails, the status of the corresponding activity is set to "in error". If the activity is defined staffless (automatic and unattended), workitems are created. If the message is successfully put into the queue and the call is synchronous, the UPES is expected to send back an ActivtyImplInvokeResponse. While processing an ActivityImplInvokeResponse message, it is possible that: 1. The message can be parsed, the activity correlation is valid, the program response indicates the successful execution, and the output container is also valid: the activity is set to finished and the navigation of the process continues. 2. The message can be parsed, the activity correlation is valid, the program response indicates the successful execution, and the output container is not valid (contains members that are not contained in the output container of the activity): the status of the activity is set to "in error" and an exception is sent to the UPES if a notification was requested in case of errors. The parameters of the exception are set as in case of the client communication and the original message is appended as for the client communication. 3. The message can be parsed, the activity correlation is valid, and the program response indicates the unsuccessful execution (contains an exception): the status of the activity is set to "in error". If the return code 1113 is used in the exception message, the first parameter is displayed in the message text (Note: the second parameter must be specified - at least with ) and the message text can be found in the WorkItem as the ErrorReason. 4. The message can be parsed, and the activity correlation is not valid: a general error message is sent to the UPES if a notification was requested in case of errors. Parameters are set as in case 2 and the original message is appended as for the client communication. 5. The XML parser returns an error (for example, XML is not well-formed or a codepage problem): a general error message is sent to the UPES. Parameters are set as in case 2 and the original message is appended as for the client communication. 2.4 Support of 'empty activities' ----------------------------------- We will treat an actvity as an 'empty activity' if - the associated program is named FMCINTERNALNOOP and - the associated program can run unattended. Furthermore, the execution definition of the activity must specify an asynchronous UPES invocation. The UPES that is referenced does not need to exist. Please note that Buildtime will implicitely change the definition of an activity if a non-existing UPES is used. That means, if you import or save an activity definition that references a non-existing UPES, it will be changed into a PEA invocation. This does not affect the semantics of the 'empty activity' as long as the invocation is still asynchronous. The activity must have the same structure name for the input container and the output container. The FDL elements look as follows: PROGRAM 'FMCINTERNALNOOP' ( 'Default Data Structure', 'Default Data Structure' ) DESCRIPTION "" STRUCTURES_FROM_ACTIVITY UNATTENDED END 'FMCINTERNALNOOP' PROCESS '....' ... PROGRAM_ACTIVITY 'NavigationActivity_NoOp' ( 'Default Data Structure', 'Default Data Structure' ) START AUTOMATIC WHEN AT_LEAST_ONE CONNECTOR TRUE EXIT AUTOMATIC PROGRAM 'FMCINTERNALNOOP' SYNCHRONIZATION CHAINED END 'NavigationActivity_NoOp' END '...' The warning message "FMC21730W Program 'FMCINTERNALNOOP' has no executable on any platform." during import is expected and does not indicate an error in this context. For a detailed description of the new support for 'empty activities' please see our eCare/eSupport web pages on http://www.ibm.com/support/us/ 2.5 Configurable message size for query workitems ------------------------------------------------- A new configuration variable "RTInitialWLMessageSize" has been introduced. It can be set to the number of bytes that should be allocated for the response from a query workitems call. If an execution server trace indicates that a lot of time is spent copying the workitems - caused by the initial message size being too small, you can use this parameter to start with a more adequate size. 3. Changes ========== 3.1 Changes in Service Pack #1 ------------------------------ The following problems are fixed: Nr. PMR/APAR Description 16183 PMR77561 Database deadlocks under various conditions 16240 PMR00361 " 16276 PQ57158 " 15052 Buildtime migration abends when PATH ends with \" 15255 WebClient: Do not allow 'OWNER=CURENT_USER' as process instance filter 15333 Fmcsclad execution time grows exponentially to cleanup entries with option ALL 15865 fmczchk: Trap on Solaris when using response file - 'fmczchk @file' 16046 Oracle: Process may result in wrong state, if parallel activities were running. 16113 PMR85007,033 Profile not found error in case of concurrent logins (multiple-threads) 16131 z/OS: Import of a process with a global container may fail (trace shows SQLCode -805) 16168 IY27200 Windows configuration GUI cannot create a remote Buildtime 16180 Missing columns in database view PROCESS_EXEC. 16185 z/OS: Job FMCHJEDC using ...SFMCDB2(FMCHDEDC) fails. 16213 Oracle: Database views are not created in database. 16216 IY28137 port numbers larger than 32678 not accepted during configuration 16219 Pre-condition violation in Exe Server on invalid UserID in XML 16221 PMR62199 Admin Server crash if authentication with Java exit fails 16227 No DB2 Instances listed if db2 node directory is large 16230 IY28280 XML Encoding specification of UTF-16 abends the Execution Server 16235 WF/390 XML R3 Support 16245 Global Container mapping abends the Execution server if strings are longer than 254 bytes. 16246 XML audit trail time stamps do not contain milliseconds 16258 FMCH0IBA: internal exception when DBCS used in membernames 16054 PMR43283 ForceFinish activity in a block, exit condition is evaluated to false and block activity is restarted: Exe Server abends with error message: FMC31050E An error has occurred which has terminated processing. Error data = FmcAssertionException, Condition=*** Assertion failed in e:\v330\src\fmckids.inl(181): (_oid!=rhs._oid) || (_btid==rhs._btid) 16064 invalid char in xml error response message 16068 Missing/lost error info if UPES response msg is in error 16070 Oracle: Start instance with global container fails if empty strings should be inserted into global container. 16071 Query process instance for a Global Container member with filter and sortCriteria: runtime server abend 16072 ProcessInstanceRestart: process is restarted, but process context is missing 16085 Tracing on WIN ME/98 fails 16086 PMR56749 Shared library activity implementation terminates PEA with external exception. 16093 z/OS: SQL error occurs, when querying Process Instances with a filter on a Global Container member. 16096 ADMINSVR on z/OS abends with SQL code = -805. 16098 Wrong version number for NLS Italian 16108 PQ55975 Export does not show WLM setting of EXECUTION_SERVER 16132 Oracle: Resultset of persistent lists with global container filter may be incorrect. 16146 Make WebClient part of the client CSD package. 16148 RELATED_ROLE, RELATED_ORGANIZATION missing for single persons 16151 Execution Server does not terminate after CreateAndStartProcessInstance when AuditQueue is not defined 16153 Oracle: EqualityAssertion may occur, when update e.g. work_item with an empty string in description. 16154 Add password to IMS Bridge header 16164 NullPointerException in createAndStartInstance3() Java API 16207 UserId Mapping via PES Directory doesn't work 16208 Intermittent PEA crashes for Noop ActImpl. 3.2 Changes in Service Pack #2 ------------------------------ The following problems are fixed: Nr. PMR/APAR Description 16263 Support Java Authentication Exit for HPUX 16269 BT properties show "Program" instead of "Agent" 16270 Enable global container mapping within blocks 16271 IY28684 UPES definition causes FMC21926W in BT verification step 16288 IY28908 FDL updates of user authorizations not processed in BT 16316 Check for correct language in Service Packs (WINDOWS) 16318 Support of XML4C 1.3 on z/OS 16324 Wrong BT error message when opening a block diagram if block properties are opened 16335 PMR00039,DJ1 Queue Manager Name must be specified for Audit Trail to MQ 16407 Execution server terminates with duplicate OID error after 32000 OIDs 16443 IY30288 Access Violation with JMS Input message Specifying the format of an UPES message as JMS-compliant XML causes the execution server to fail with an Access Violation in fmccdxmm.cxx 16562 IY31096 WorkItem query filter with global container does not work inside a block 16580 fmczchk has typo in prompt message 16590 IY31180 iPlanet 4.1: RootURI can't be set via properties file 16611 90515,180 Migration on 390 fails, if default index bufferpool is not used 16619 IY28899 Resource problem: pthreads not detached on AIX 16742 IY32095 Deadlocks occur, when creating many processes (names are reused) 16755 IY32165 Query of non-existent Scheduling Server crashes Admin Server 16763 IY32686 UPES exception messages are handled incorrectly 16775 IY32305 Fix error message for data mapping limit. 16795 PQ59357 XML error processing problems (for a description please 16615 IY31247 see item '2.3 XML messages - handling of unexpected IY32418 situations' above) 3.3 Changes in Service Pack #3 ------------------------------ The following problems are fixed: Nr. PMR/APAR Description 15420 Configuration GUI on WIN: Database alias with underscore is not possible 16820 AIX: installation profile does not contain the correct service level 16890 IY30684 Expand length of FmlConnectName in profile 16932 IY32674 FMCAMAIN did not start after update of Authentication Exit command 16964 IY30684 When using runtime import, update of version information does not work for UPES 16965 IY33040 ForceFinish of program activity within a block may abend the Execution Server 16980 Incorrect message from checker while updating configuration profile 16980 Authentication Exit and Java High-Performance Bridge do not work correctly 17092 IY37614 Fmczchk shows wrong expected isolation level for fmcdbwcs in Service Pack #2 17139 IY33884 ProcessInstance.GlobalContainer calls wrong C-API 17153 Update of MVS installation samples 17158 IY33945 Calling Person.Refresh() with an undefined person passed in uppercase may abend the Execution Server 17165 IY34882 Eliminate Stdio access of profile for Solaris 17173 IY34052 Avoid file descriptor limit on Solaris 17184 IY34105 When ProcessInstance::ProcessContext() is called, it may incorrectly return a null value and ProcessInstance::ProcessContextisNull() may incorrectly return false. 17210 IY34052 Profile must be a singleton on Solaris (file descriptor limit) 17243 IY34884 Support of empty activities 17265 IY34883 QryWorkItemsResponse initial size should be configurable (performance) 17287 IY34879 Expiration/Notification is not reset when activity is restarted 17315 IY34885 Eliminate the unnecessary calls to getpid (performance) 17390 IY34751 MQWF may misread recursive data structures 17412 Avoid unnecessary copies of workitems (performance) 17425 IY34881 Execution server terminates and process appears to hang when a transition condition like (member name <> "String") is used 17439 IY34903 FMCZUTIL does not distinguish between uppercase and lowercase SID during creation of an Oracle database 17522 IY35123 Error creating queue manager during configuration on WIN2000 17593 IY35484 FMCZQMIG removes user and password from XAOPEN string in QM.INI 4. License Notices ================== This product internally uses the XML4C parser and therefore is obliged to distribute the following license text: --------------------------------------------------------------------- /* * The Apache Software License, Version 1.1 * * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 1999, International * Business Machines, Inc., http://www.ibm.com. For more * information on the Apache Software Foundation, please see * . */ --------------------------------------------------------------------- ICU License - ICU 1.8.1 and later COPYRIGHT AND PERMISSION NOTICE Copyright (c) 1995-2001 International Business Machines Corporation and others All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. ---------------------------------------------------------------------- All trademarks and registered trademarks mentioned herein are the property of their respective owners.