Integration Server
Integration Server
Version 8.2
April 2011
Copyright
This document applies to webMethods Integration Server Version 8.2 and to all subsequent releases. Specifications contained herein are subject to change and these changes will be reported in subsequent release notes or new editions. Copyright 19982011 Software AG, Darmstadt, Germany and/or Software AG USA, Inc., Reston, VA, United States of America, and/or their licensors. Detailed information on trademarks and patents owned by Software AG and/or its subsidiaries is located at http://documentation.softwareag.com/legal/. Use of this software is subject to adherence to Software AG's licensing conditions and terms. These terms are part of the product documentation, located at http://documentation.softwareag.com/legal/ and/or in the root installation directory of the licensed product(s). This software may include portions of third-party products. For third-party copyright notices and license terms, please refer to License Texts, Copyright Notices and Disclaimers of Third-Party Products. This document is part of the product documentation, located at http://documentation.softwareag.com/legal/ and/or in the root installation directory of the licensed product(s).
Table of Contents
About this Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deprecation of webMethods Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Document Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Documentation Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Online Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. The Role of the Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Does an Administrator Do? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Typical Administrative Responsibilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Integration Server Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Receiving Administrative Messages from the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Administrator User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Administrator's Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Backup Administrators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 21 22 22 25 26 26 27 27 27 27 28
2. An Overview of the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 The Role of the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Retrieving Data for Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 How the Server Executes Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 How the Server Loads Java Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Class Loaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 OSGi Bundle Class Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Integration Server Class Loaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Classpaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 How the Integration Server Classpaths Are Specified . . . . . . . . . . . . . . . . . . . . . 37 Changing Classpath Information at Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 How Class Loading Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Class Loading Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Scenario One: Integration Server Knows Where the Class Lives . . . . . . . . . 40 Scenario Two: Integration Server Does Not Know Where the Class Lives . . 40 Scenario Three: Package Class Loader Does Not Defer to the Integration Server Class Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Where to Place Classes and Jar Files for Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Accelerating Class Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Integration Server Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3. Starting and Stopping the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the webMethods Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting Integration Server on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting Integration Server on UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the Server from the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Happens When You Start the Server? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How to Tell if the Server Is Running Correctly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running Integration Server as a Windows Application vs. a Windows Service . . . . . . . . . . Switching the Server from a Windows Service to a Windows Application . . . . . . . . . . Switching the Server from a Windows Application to a Windows Service . . . . . . . . . . Passing Java System Properties to Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . Passing Properties when Integration Server Runs as a Windows Application . . . . . . . Passing Properties when Integration Server Runs as a Windows Service . . . . . . . . . . Passing Properties when Integration Server Runs on UNIX . . . . . . . . . . . . . . . . . . . . . Shutting Down the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shutting Down the Integration Server from Integration Server Administrator . . . . . . . Shutting Down the Integration Server from the Command Line . . . . . . . . . . . . . . . . . . Viewing Active Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restarting the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Server Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integration Server Data Integrity and Recoverability Considerations . . . . . . . . . . . . . . Critical Integration Server Data Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Using the Integration Server Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is the Integration Server Administrator? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the Integration Server Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accessing Integration Server Administrator through My webMethods . . . . . . . . . . . . . . . . . Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logging Off the Integration Server Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Managing Users and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Users and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Purpose of Users and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining a User Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Predefined User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Removing User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an Administrator User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding a Developer User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Password Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling and Enabling Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling a User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45 46 46 46 47 49 50 50 51 52 53 53 53 54 54 54 55 55 55 56 57 57 59 60 60 61 62 62 63 63 65 66 66 66 67 68 69 70 70 72 73 74 74
Enabling a User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Predefined Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Users to a Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Removing Users from a Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Group Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Removing Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Configuring the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing and Changing Licensing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The License Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Licensing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing Licensing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Renewal Reminders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Renewing a Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Licensed Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Licensed Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Active Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing the Server Thread Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Server Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting the Session Timeout Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting the Stateful Session Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Outbound HTTP Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Outbound HTTP Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up Aliases for Remote Integration Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing the Connection to a Remote Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing an Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting an Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Third-Party Proxy Servers for Outbound Requests . . . . . . . . . . . . . . . . . . . . . . Creating a Proxy Server Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing a Proxy Server Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling a Proxy Server Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enabling a Proxy Server Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing an Existing Default Proxy Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a Proxy Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bypassing a Proxy Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Where the Integration Server Writes Logging, Status, and Other Information . Switching from the Embedded Database to an External RDBMS . . . . . . . . . . . . . . . . . . . . Working with Extended Configuration Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Integration Server to Work with Servers Running HTTP 1.0 and Above . . . . . Specifying Character Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using a 64-bit JVM on Solaris and HP-UX Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Publishing Information about Integration Server Assets . . . . . . . . . . . . . . . . . . . . . . . . . . .
74 75 76 77 77 79 80 80 83 84 84 84 84 85 85 85 85 86 86 88 88 89 90 92 93 93 95 96 96 96 97 99 99 100 100 100 101 102 102 103 104 104 105 105
Configuring Integration Server to Connect to CentraSite . . . . . . . . . . . . . . . . . . . . . . . 106 Testing the Connection to CentraSite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7. Configuring Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Configuring Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Available Port Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Considerations for Adding Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prerequisites to Configuring a Port for SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Usage and Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an HTTP Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Advanced Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing Advanced Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an HTTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an HTTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding a File Polling Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Before Adding a File Polling Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding a File Polling Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an FTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an FTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an FTP Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an E-mail Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an E-Mail Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an HTTP Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an HTTP Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an HTTPS Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an HTTPS Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suspending an HTTP/HTTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resuming an HTTP/HTTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing for HTTPS Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using an FTP/FTPS Port Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying an FTP/FTPS Port Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Changing the Primary Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Primary Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Enabling/Disabling a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enabling a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring How Ports Handle Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding a Security Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding a Security Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 110 110 111 112 112 112 112 114 115 116 116 119 119 119 123 124 126 128 128 129 134 135 137 137 141 141 142 142 142 144 144 144 145 145 145 146 146 147 147
8. Setting Up the Server Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Amount and Type of Information to Include in the Server Log . . . . . . . . . . . . . . Logging Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Whether to Queue Server Log Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overriding Logging Level and Server Log Location for a Session . . . . . . . . . . . . . . . . . . . . Changing the Default Server Log Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sending Messages About Critical Issues to E-mail Addresses . . . . . . . . . . . . . . . . . . . . . . Performing Additional Processing on Log Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Server Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using an Alternative Server Log Entry Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Log Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Date and Time Format to Use in Log Entries . . . . . . . . . . . . . . . . . . . . Displaying Logged Data in Different Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Display Permanently for All Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Display Temporarily for the Server Log . . . . . . . . . . . . . . . . . . . . . . . . . Globalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
149 150 151 152 153 153 154 155 156 156 157 158 158 159 159 160 160
9. Configuring Document Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Configuring the Default Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 About the Trigger Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Configuring the Trigger Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Maintaining Inbound Document History for Received Documents . . . . . . . . . . . . . . . . . . . 166 Enabling Inbound Client-Side Queuing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 About the Outbound Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Configuring the Rate at which Integration Server Drains the Outbound Document Store 167 Setting the Capacity of the Outbound Document Store . . . . . . . . . . . . . . . . . . . . . . . . 168 Associating a User Account with Broker/Local Trigger Services . . . . . . . . . . . . . . . . . . . . . 168 Specifying a User Account for Invoking Broker/Local Trigger Services . . . . . . . . . . . . 169 Changing the Heap Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10. Connecting Integration Server to Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring an Integration Server-to-Broker Server Connection . . . . . . . . . . . . . . . . . . . . . Specifying the Keep-Alive Mode for the Broker Connection . . . . . . . . . . . . . . . . . . . . . . . . Setting Server Configuration Parameters for Keep-Alive Mode . . . . . . . . . . . . . . . . . . Normal Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Listen Only Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchronizing Broker Clients When the Primary Port for Integration Server Changes . . . . Changing the Configured Broker on Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connecting Multiple Non-Clustered Integration Servers to the Same Broker . . . . . . . . . . . Load Balancing with a Non-Clustered Group of Integration Servers . . . . . . . . . . . . . . 171 172 172 175 176 177 177 177 178 178 179 179
Important Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 11. Configuring Integration Server for JMS Messaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Working with JNDI Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Creating a JNDI Provider Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Editing a JNDI Provider Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Deleting a JNDI Provider Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Creating a JNDI Provider Failover List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Performing a Test Lookup for a JNDI Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 JNDI Provider Cache and Timeout Behavior for Administered Objects . . . . . . . . . . . . 186 Working with JMS Connection Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Connecting to the webMethods JMS Provider with the Native webMethods API . . . . . 187 Creating a JMS Connection Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Allowing Destinations to be Managed through the JMS Connection Alias and Designer 194 Allowing Multiple Connections for a JMS Connection Alias . . . . . . . . . . . . . . . . . . 195 Impact of Creating a New Connection per Trigger on the Connection Client ID 196 Editing a JMS Connection Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Enabling and Disabling a JMS Connection Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Deleting a JMS Connection Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Specifying a Connection Monitoring Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Specifying a Retry Interval for Failed Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Specifying a Keep Alive Interval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Creating Administered Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Monitoring a Connection Factory Object for Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Polling for Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Registering an Event Listener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 How Integration Server Updates the Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Configuring Integration Server to Monitor a Connection Factory Object . . . . . . . . . . . 202 Using SSL with JMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Supported JMS Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Adding JMS Provider Client Libraries to Integration Server Classpath . . . . . . . . . . . . . . . . 204 12. Configuring Endpoint Aliases for Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Provider for Use with HTTP/S . . . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Consumer for Use with HTTP/S . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Provider for Use with JMS . . . . . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Consumer for Use with JMS . . . . . . . . . . . . . . . . . . . . . . Timestamps in the WS-Security Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 210 211 213 218 223 228
13. Setting Up HTTP URL Aliases for Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Displaying HTTP URL Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
HTTP URL Alias List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Portability of Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating an HTTP URL Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a URL Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14. Securing Communications with the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anatomy of an Integration Server SSL Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integration Server and SSL Connection Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integration Server as an SSL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integration Server as an SSL Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Roadmap for Configuring SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Integration Server Keys and Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Keystore and Truststore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obtaining the Certificates and Keys of the Partner Application . . . . . . . . . . . . . . . . . . Configuring an HTTPS or FTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keystores and Truststores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keystore File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keystore File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HSM-Based Keystores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Keystore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Truststore File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Truststore File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Integration Server Uses a Keystore and Truststore . . . . . . . . . . . . . . . . . . . . . . . Protecting Keystore and Truststore Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keystore, Truststore, and Key Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Keystore Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Truststore Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Server-Side SSL Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Integration Server SSL Authentication Credentials . . . . . . . . . . . . . . . . Controlling Server SSL Security Level by Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usage of CA Certificates: Technical Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Handling Expired CA Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Customizing Usage of the Trusted Certificates Directory . . . . . . . . . . . . . . . . . . . . . . . WS-Security and Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15. Controlling Access to Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Access to Resources by Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restricting IP Addresses that Can Connect to a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling IP Access to All Ports (Globally) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allow Inbound Connections from Specified Hosts (Deny All Others) . . . . . . . . . . Deny Inbound Connections from Specified Hosts (Allow All Others) . . . . . . . . . . Allow Inbound Requests from Specified Hosts (Deny All Others) . . . . . . . . . . . . . . . . Deny Inbound Requests from Specified Hosts (Allow All Others) . . . . . . . . . . . . . . . .
230 231 232 233 235 236 236 236 237 237 238 239 239 240 240 240 240 241 241 241 241 241 242 242 243 243 245 246 246 247 248 248 248 249 251 252 252 253 253 254 255 256 257
If You Inadvertently Deny IP Access to All Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resetting the Global Setting IP Access Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . Resetting the IP Access Setting for an Individual Port . . . . . . . . . . . . . . . . . . . . . Restricting the Services or Web Service Descriptors Available from a Port . . . . . . . . . . . . Allow Access to Specified Services (Deny All Others) . . . . . . . . . . . . . . . . . . . . . . . . . Deny Access to Specified Services (Allow All Others) . . . . . . . . . . . . . . . . . . . . . . . . . Resetting a Port to the Default Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling the Use of Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Access to Resources with ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implicit and Explicit Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Users that Belong to More than One Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Predefined ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Does the Server Perform ACL Checking? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Allowing or Denying Group Access to ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Default Settings and Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Happens When You Change Existing ACL Assignments . . . . . . . . . . . . . . Assigning ACLs to Folders, Services, and Other Elements . . . . . . . . . . . . . . . . . . . . . Removing an ACL from a Folder or Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assigning ACLs to Files the Server Can Serve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rules for Using .access Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Removing ACL Protection from a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16. Authenticating Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Checklist for Using Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Certificate Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ports and Certificate Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Importing a Certificate (Client or CA Signing Certificate) and Mapping It to a User Changing a Certificate Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Certificates and Port Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HTTPS Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FTPS Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Multiple Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Checklist for Presenting Multiple Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . Importing Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up a Remote Server Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Coding Your Flow Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Authentication and Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accessing Integration Server Data through My webMethods . . . . . . . . . . . . . . . . . . . . . . .
257 258 258 258 259 261 262 262 264 264 266 267 267 268 269 269 269 270 271 272 272 273 273 274 275 277 278 278 278 279 279 279 280 281 281 282 282 283 284 284 284 285 285 286
10
Configuring the MWS Single Sign-On Resource Setting . . . . . . . . . . . . . . . . . . . . . . . 286 17. Customizing Authentication Using JAAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using JAAS with Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JAAS Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X509LoginModule and BasicLoginModule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X509ValidatorModule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pluggable Authentication Modules (PAMs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing a Custom JAAS Login Module for Integration Server . . . . . . . . . . . . . . . . . . . . . . . Extend SagAbstractLoginModule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implement Commit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Place the JAR File in the Integration Server Classpath . . . . . . . . . . . . . . . . . . . . . . . . Modify the JAAS Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JAAS Custom Login Module Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JAAS Login Module for Integration Server: Sample Code . . . . . . . . . . . . . . . . . . . . . . JAAS Custom Login Module: Code Explanation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JAAS Configuration File: Sample Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18. Master Passwords and Outbound Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Outbound Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Backing Up Outbound Password and Master Password Files . . . . . . . . . . . . . . . . . . . . . . Changing the Master Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Expiration Interval for the Master Password . . . . . . . . . . . . . . . . . . . . . . . . . About the configPassman.cnf File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Outbound Password Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Name and Location of Outbound Password File . . . . . . . . . . . . . . . . . . . . Controlling Encryption of Outbound Password File . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Master Password Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Storing the Master Password in a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prompting for the Master Password at Server Initialization . . . . . . . . . . . . . . . . . . . . . What to Do if You Lose or Forget Your Master Password . . . . . . . . . . . . . . . . . . . . . . . . . . When There Are Problems with the Master Password or Outbound Passwords at Startup Determining Whether You Can Restore the Passwords . . . . . . . . . . . . . . . . . . . . . . . Restoring the Master Password and Outbound Password Files . . . . . . . . . . . . . . . . . Resetting the Master Password and Outbound Passwords . . . . . . . . . . . . . . . . . . . . . E-mail Listeners and Package Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19. Securing Your Server with PKI Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About PKI Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PKI Profile Checking Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Supported Hardware and Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring PKI System Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 290 290 290 291 292 292 293 293 294 294 294 295 295 296 297 299 300 301 302 302 303 303 304 304 304 305 305 305 306 306 307 308 308 309 311 312 312 313 313 313 314
11
Creating a PKI Profile and Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating the PKI Profile Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connecting to and Disconnecting from the PKI System . . . . . . . . . . . . . . . . . . . . . . . . . . . Logging in a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a PKI Profile Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing and Updating Information for a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing or Updating PKI Profile Alias Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Determining Whether a PKI Profile Is Logged In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recovering a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Password for a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Updating Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exporting a PKI Profile from the File System to an HSM Device . . . . . . . . . . . . . . . . . . . . . Installing an Entrust PKI Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Password Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About CRL Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Often Is the CRL Downloaded? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20. Setting Up a Reverse HTTP Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Reverse HTTP Gateway Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Advantages to Reverse HTTP Gateway vs. Traditional Third-Party Proxy Servers . . . . . . Clustering in the Reverse HTTP Gateway Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up the Reverse HTTP Gateway Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up the Gateway External Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up the Gateway Registration Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connecting Your Internal Server to a Reverse HTTP Gateway Server . . . . . . . . . . . . . . . . Setting Up the Internal Registration Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Client Authentication on the Reverse HTTP Gateway Server . . . . . . . . . . . . . . Frequently Asked Questions About Reverse HTTP Gateway . . . . . . . . . . . . . . . . . . . . . . . 21. Configuring a Central User Directory or LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of How Integration Server Works with Externally Defined Users and Groups . . . How the Server Uses Externally Defined Users and Groups . . . . . . . . . . . . . . . . . . . . When the Server Accesses Externally Defined Information . . . . . . . . . . . . . . . . . . . . . How Integration Server Authenticates Externally Defined Clients . . . . . . . . . . . . . . . . Configuring Central User Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requirements for Central User Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of Using LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About LDAP and Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Server to Use LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining an LDAP Directory to Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mapping an LDAP User's Access to ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stopping Use of an LDAP as an External Directory . . . . . . . . . . . . . . . . . . . . . . . . . . .
316 316 318 319 320 320 321 321 321 322 324 324 325 327 327 328 328 329 330 331 332 332 333 335 338 341 341 345 346 351 352 352 353 353 353 354 354 355 356 356 358 362 362
12
Considerations for User Accounts and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Keeping Internal and External User Accounts and Group Names Unique . . . . . About User Groups and Package Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Granting Administrator Privileges to External Users . . . . . . . . . . . . . . . . . . . . . . . . . Granting Administrator Privileges to an Externally Defined User . . . . . . . . . . . . . . . . . Granting Developer Privileges to External Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Granting Access to Services and Files to External Users . . . . . . . . . . . . . . . . . . . . . . . . . . 22. Managing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Predefined Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sample Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How the Server Stores Package Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manifest File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Information about Your Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Packages that Reside on Your Server . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtering the List of Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Refining the FIltered Package List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Determining Whether the Server Successfully Loaded the Package . . . . . . . . . . Determining Whether the Package Is Enabled or Disabled . . . . . . . . . . . . . . . . . Displaying Information about a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying Information about Services and Folders in a Package . . . . . . . . . . . . . . . . Displaying Documentation for a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accessing a Web Document for a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Activating a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reloading a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enabling a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recovering a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Archiving a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying Packages from One Server to Another . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of Package Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Version Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Who Can Subscribe? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guidelines for Using Package Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Publishing Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying Subscribers for a Specific Package . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying Subscribers for all Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Subscribers from a Publishing Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . Updating Subscriber Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Removing Subscribers for a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
363 363 364 364 365 365 366 369 370 370 373 373 375 376 377 377 379 379 379 380 380 382 382 383 383 384 384 385 385 386 386 387 387 388 388 393 394 395 395 396 396 396 397 399
13
Publishing a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sending a Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying File and Version Information for a Release or Archive . . . . . . . . . . . . . . . . The Subscribing Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying Packages to Which Your Server Subscribes . . . . . . . . . . . . . . . . . . . . Manually Pulling a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subscribing to a Package from a Subscribing Server . . . . . . . . . . . . . . . . . . . . . . Requesting a Subscription to a Package from Another Server . . . . . . . . . . . Updating Your Subscription Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Canceling a Subscription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Installing Packages Published by Another Server . . . . . . . . . . . . . . . . . . . . Installing a Package Published by Another Server . . . . . . . . . . . . . . . . . . . . . Using a Package Class Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23. Managing Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fully Qualified Service Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Names and Service Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HTTP URL Aliases for Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Information about Services and Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Listing Folders and Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying Information about a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Service Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manually Adding a Service to the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Canceling and Killing Threads Associated with a Service . . . . . . . . . . . . . . . . . . . . . . Canceling or Killing a Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running Services When Packages Are Loaded, Unloaded, or Replicated . . . . . . . . . . . . . What Is a Startup Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Shutdown Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is a Replication Service? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guidelines for Using Startup, Shutdown, and Replication Services . . . . . . . . . . . . . . . Running Services in Response to Specific Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24. Scheduling Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tasks Provided by Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scheduling a User Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtering the List of Scheduled Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Updating Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suspending User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suspending a Single User Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
399 400 400 401 404 405 405 406 407 408 411 411 412 413 415 416 416 417 417 418 418 418 419 419 420 420 420 421 422 422 423 423 423 424 425 426 426 426 431 432 432 433 433
14
Suspending All User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resuming Suspended User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resuming a Suspended User Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resuming All Suspended User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Canceling a Scheduled User Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Scheduled System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simple Repeating Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complex Repeating Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clustering Target Node Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tasks in a Clustered Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25. Caching Service Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is Caching? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Are Cached Results Returned? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resetting the Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resetting the Cache for All Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resetting the Cache for a Specific Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitoring Service Cache Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26. Configuring Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Server for Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Settings Shared by Both Inbound and Outbound Transactions . . . . . . . . . . . . . . . . . . Settings for Inbound Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Settings for Outbound Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying an E-Mail Address and SMTP Server for Error Messages . . . . . . . . . . . . . Administering Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shutting Down Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reinitializing Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reinitializing Guaranteed Delivery for Inbound Transactions . . . . . . . . . . . . . . . . Reinitializing Guaranteed Delivery for Outbound Transactions . . . . . . . . . . . . . . . 27. Locking Administration and Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Choosing Local Server Locking or VCS Integration Locking . . . . . . . . . . . . . . . . . . . . . . . . Disabling and Re-enabling Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Re-Enabling Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Remote Server Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Server User Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package Replication and Publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Package and Folder Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Upgrading webMethods Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
433 434 434 434 435 435 436 437 440 441 443 444 444 445 446 446 446 447 448 449 449 450 451 452 452 452 453 453 454 455 456 456 456 456 457 458 458 458 458 458 459 459
15
28. Managing Broker/Local Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 Managing Document Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 Increasing or Decreasing Threads for Document Retrieval . . . . . . . . . . . . . . . . . . . . . 463 When to Increase or Decrease Threads for Document Retrieval . . . . . . . . . . . . . 464 Decreasing the Capacity of Trigger Document Stores . . . . . . . . . . . . . . . . . . . . . . . . . 464 Decreasing the Capacity and Refill Level for All Broker/local triggers . . . . . . . . . . 465 Suspending and Resuming Document Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 About Suspending and Resuming Document Retrieval for All Triggers . . . . . . . . 467 Suspending or Resuming Document Retrieval for All Broker/local triggers . . 467 About Suspending and Resuming Document Retrieval for a Specific Trigger . . . 469 Suspending or Resuming Document Retrieval for a Broker/local trigger . . . . 470 Managing Document Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 Increasing or Decreasing Threads for Document Processing . . . . . . . . . . . . . . . . . . . 472 When to Increase or Decrease Threads for Processing Documents . . . . . . . . . . . 472 Decreasing Document Processing for Concurrent Triggers . . . . . . . . . . . . . . . . . . . . . 473 Decreasing Parallel Execution Threads for Concurrent Broker/local triggers . . . . 474 Suspending and Resuming Document Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 About Suspending and Resuming Document Processing for all Triggers . . . . . . . 475 Suspending or Resuming Document Processing for All Broker/local triggers 476 About Suspending and Resuming Document Processing for Specific Triggers . . 477 Suspending or Resuming Document Processing for a Specific Broker/local trigger 478 Limiting Server Threads for Broker/Local Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Setting the Maximum Number of Server Threads for Broker/Local Triggers . . . . . . . . 480 Cluster Synchronization for Broker/Local Trigger Management . . . . . . . . . . . . . . . . . . . . . 481 Configuring Cluster Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 Cluster Synchronization at Run Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Monitoring Cluster Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 Modifying Broker/Local Trigger Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Managing Trigger Service Retries and Shutdown Requests . . . . . . . . . . . . . . . . . . . . . . . . 485 Controlling Local Publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Configuring Polling Frequency for Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 29. Managing JMS Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Thread Usage for JMS Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Thread Usage for JMS Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Increasing or Decreasing Thread Usage for JMS Triggers . . . . . . . . . . . . . . . . . . . . . . Enabling, Disabling, and Suspending JMS Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About WS Endpoint Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing WS Endpoint Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 492 492 492 492 494 496 497
30. Using a Document History Database with Exactly-Once Processing . . . . . . . . . . . . . . 501 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
16
Removing Expired Entries from the Document History Database . . . . . . . . . . . . . . . . . . . . Clearing Expired Entries from the Document History Database . . . . . . . . . . . . . . . . . . Viewing Exactly-Once Processing Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clearing Exactly-Once Processing Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31. Using Integration Server to Manage XA Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of XA Transaction Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How the Integration Server Persists the State of a Transaction . . . . . . . . . . . . . . . . . . How the Integration Server Resolves Uncompleted Transactions . . . . . . . . . . . . . . . . About Unresolved XA Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Details for an Unresolved XA Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring XA Options in Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enabling or Disabling XA Transaction Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the XA Recovery Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring XA Server Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manually Resolving a Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A. Content Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How the Server Chooses Content Handlers for HTTP Requests and Responses . . . . . . . Content Handler for an HTTP Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Content Handler for an HTTP Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accept Header Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B. Integration Server Deployment Checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 1: Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 2: Basic Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 3: Setting Up Users, Groups, and ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 4: Publishing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 5: Installing Run-Time Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 6: Preparing Clients for Communication with the Server . . . . . . . . . . . . . . . . . . . . . . Stage 7: Setting Up Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 8: Startup and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 9: Archive Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C. Server Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.com. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.core. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.debug. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.debug2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.infradc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.net. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.pkg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
502 502 503 503 505 506 506 507 508 509 510 511 511 512 513 515 516 516 516 516 519 520 520 522 523 524 525 526 527 528 529 531 532 532 532 533 533 535 537 537 537 542
17
watt.security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.ssl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.tnextdc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.tx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.wm.tnextdc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D. Diagnosing the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagnostic Thread Pool Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagnostic Port Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Diagnostic Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagnostic Utility Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running the Diagnostic Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the Integration Server in Safe Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting Integration Server in Safe Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When the Server Automatically Places You in Safe Mode . . . . . . . . . . . . . . . . . . . . . . . . . Generating Thread Dumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating a Dump of an Individual Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating a Dump of the JVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
543 546 596 596 596 597 599 600 600 600 601 601 602 602 603 603 604 604 605 606
E. FIPS 140-2 Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 FIPS 140-2 Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 F. Using Integrated Windows Authentication with Integration Server . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Integrated Windows Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Activating and Deactivating Integrated Windows Authentication . . . . . . . . . . . . . . . . . . . . . Activating Integrated Windows Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deactivating Integrated Windows Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . G. Wireless Communication with the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Does the Integration Server Communicate with Wireless Devices? . . . . . . . . . . . . . . Using URLs for Wireless Access to the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . Invoking a Service with a URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requesting a WML or HDML Page with a URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WML and HDML Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H. Debugging Service Exceptions Using the Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling the Level of Exception Logging Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying the Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpreting the Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Understanding the Service Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 610 610 610 610 611 613 614 614 616 616 617 618 621 622 622 622 622 623
18
Understanding the Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 Understanding the Stack Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
19
20
Document Conventions
Convention Bold Narrowfont UPPERCASE Italic Description Identifies elements on a screen. Identifies storage locations for services on webMethods Integration Server, using the convention folder.subfolder:service. Identifies keyboard keys. Keys you must press simultaneously are joined with a plus sign (+). Identifies variables for which you must supply values specific to your own situation or environment. Identifies new terms the first time they occur in the text. Identifies text you must type or messages displayed by the system. Indicates a set of choices from which you must choose one. Type only the information inside the curly braces. Do not type the { } symbols. Separates two mutually exclusive choices in a syntax line. Type one of these choices. Do not type the | symbol. Indicates one or more options. Type only the information inside the square brackets. Do not type the [ ] symbols.
Monospace font
{}
| []
21
Convention ...
Description Indicates that you can type multiple options of the same type. Type only the information. Do not type the ellipsis (...).
Documentation Installation
You can download the product documentation using the Software AG Installer. Depending on the release of the webMethods product suite, the location of the downloaded documentation will be as shown in the table below. For webMethods... 6.x 7.x 8.x The documentation is downloaded to... The installation directory of each product. A central directory named _documentation in the main installation directory (webMethods by default). A central directory named _documentation in the main installation directory (Software AG by default).
Online Information
You can find additional information about Software AG products at the locations listed below. Note: The Empower Product Support Web site and the Software AG Documentation Web site replace Software AG ServLine24 and webMethods Advantage. If you want to... Access the latest version of product documentation. Go to... Software AG Documentation Web site http://documentation.softwareag.com
22
If you want to... Find information about product releases and tools that you can use to resolve problems. See the Knowledge Center to: Read technical articles and papers. Download fixes and service packs. Learn about critical alerts. See the Products area to: Download products. Download certified samples. Get information about product availability. Access older versions of product documentation. Submit feature/enhancement requests. Access additional articles, demos, and tutorials. Obtain technical information, useful resources, and online discussion forums, moderated by Software AG professionals, to help you do more with Software AG technology. Use the online discussion forums to exchange best practices and chat with other experts. Expand your knowledge about product documentation, code samples, articles, online seminars, and tutorials. Link to external Web sites that discuss open standards and many Web technology topics. See how other customers are streamlining their operations with technology from Software AG.
23
24
What Does an Administrator Do? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Typical Administrative Responsibilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Integration Server Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Receiving Administrative Messages from the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Administrator User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding Backup Administrators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
26
27
For instructions on changing a password, see Adding an Administrator User on page 70.
28
The Role of the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How the Server Executes Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How the Server Loads Java Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Integration Server Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Architecture
The Integration Server listens for client requests on one or more ports. You can associate the type of protocol that the server uses for each port. The server supports HTTP, HTTPS, FTP, FTPS, and e-mail ports. When applications are built around the thin client, the application uses an HTTP or HTTPS port for communication with the server. When using HTTP or HTTPS ports, the clients communicate using the webMethods Remote Procedure Call (RPC). Because the server supports both HTTP and HTTPS, it can listen on an HTTP port for non-secure client requests and an HTTPS port for secure requests. Note: Unlike HTTP, FTP, and e-mail, HTTPS and FTPS provide for secure data transmission. They do this through encryption and certificates. Without HTTPS or FTPS, unauthorized users might be able to capture or modify data, use IP spoofing to attack servers, access unauthorized services, or capture passwords. If you must pass passwords, make sure the back-end application has minimal privileges. To interact with the server without using the webMethods RPC, use an FTP or FTPS port. A typical use for an FTP or FTPS port is to get a directory listing, change to the directory that contains the service you want to invoke, put a file that contains input to the service, and run the service. The server returns the output from the service to the directory in which the service resides. Use an e-mail port to receive requests through an e-mail server, such as POP3 or IMAP. You can define as many ports as you want. When you initially install the server, it has an HTTP port at 5555.
30
Note: When you install the server, it also defines a port type of webMethods/Diagnostic at 9999. The diagnostic port uses the HTTP protocol and provides you access to the Integration Server when it is unresponsive. For more information about the diagnostic port, see Appendix C, Diagnosing the Integration Server. The Server Listens for Requests on Ports that You Specify
There may be times when you want to use the standard port numbers used by Web servers: port 80 for HTTP requests and port 443 for HTTPS requests. If your Integration Server runs on a Windows system, this is not a problem. However, if your Integration Server runs on a UNIX system, using a port number below 1024 requires that the server run as "root." For security reasons, Software AG discourages this practice. Instead, run your Integration Server using an unprivileged user ID on a high number port (for example 1024 or above) and use the port remapping capabilities present in most firewalls to move requests to the higher numbered ports.
31
Services
Client requests involve executing one or more services. The server maintains successfully loaded services as runnable objects within the server's program space. When you initialize the server, the server loads the services that are contained in enabled packages into memory. When you or another administrator enable a disabled package, the server loads services that are in that package. Services Execute within the Integration Server's Virtual
When a client invokes a service, that service runs as a thread within the Integration Server program. Depending on what function the service is to accomplish, it can also create additional threads to perform tasks simultaneously.
32
33
The Server Gets Data from Local Resources or Resources on the Internet
34
Using the ACL, the server looks up the Access Control List (ACL) for the service and determines whether the client is to be granted access to the service. If the ACL indicates that the client is allowed to access the service, the server continues with the execution of the service. If auditing is enabled, the server adds an entry to the Audit Log to mark the start of the request. The server starts gathering service statistics for the service. The server checks to see if the results for this service are cached. If services are cached, the server returns the cached results. If services are not cached, the server invokes the service. If the service is a flow service, which can consist of several services, it invokes each service in the flow. Note: For each service in a flow, the server performs steps 6 through 11.
7 8 9
10 The server ends the gathering of server statistics for the service. 11 If auditing is enabled, the server adds an entry to the Audit Log to mark the end of the request. 12 The server encodes the service results as specified by the content type. 13 The server returns the results to the client.
Class Loaders
Integration Server employs two kinds of class loaders: OSGi bundle class loader Integration Server class loaders
35
Classpaths
Some class loaders rely on classpaths to tell them which directories to search when looking for classes. A classpath is a list of directories to be searched. Integration Server uses the Integration Server classpath. The Integration Server About screen shows the directories that make up these classpaths. The following image shows a portion of that display.
36
37
Description All .jar and .zip files in this directory. All .jar and .zip files from that directory in each package. The files are added to the classpath in the order returned by the File.list() method. Note: Jars contained in this directory will be loaded even if the associated package is disabled.
packages/(package name)/code/libs
If this directory exists, then: packages/(package name)/code/classes is included, if it exists. packages/(package name)/code/classes.zip is included, if it exists.
APPENDCLASSES
Note: In some cases, the Integration Server About page will display the names of files that do not exist. Specifically, if filenames specified in the PREPEND_ SYSTEM_CLASSPATH, APPEND_ SYSTEM_CLASSPATH, PREPENDCLASSES, and APPENDCLASSES variables for the Integration Server classpath do not exist, they will still be displayed on the Integration Server About page.
38
APPEND_SYSTEM_CLASSPATH= PREPENDCLASSES= APPENDCLASSES= Although this file comes with a number of variables already specified, you can add additional ones. For more detailed information about where and how these variables are added to the classpaths, see Classpaths on page 36.
If you use the package class loader, the jar files containing the classes you want to make available must be in the Integration Server_directory\packages\packageName\code\jars directory. For more information about using a package class loader, refer to Using a Package Class Loader on page 413. How Integration Server searches for a class when no package information is available. When the Integration Server receives a request to load a class for which no package information is available, by default, it will search all packages in the Integration Server_directory\packages directory. To potentially save search time, you can control the order in which packages are searched by using the watt.server.classloader.pkgpriority server configuration parameter. The following sections provide scenarios that describe how the class loading process works, and how the changes to the manifest.v3 file and watt.server.classloader.pkgpriority server configuration parameter affect that process.
39
Scenario One: Integration Server Knows Where the Class Lives In this scenario, a service from PackageA calls a class that Integration Server knows resides in PackageX. PackageA is dependent on PackageX. The manifest.v3 files for both PackageA and PackageX specify "server" as the class loader, which means that the package class loader is to defer the search to its parent, which in both cases is the Integration Server class loader. 1 2 3 4 5 6 7 A service in PackageA calls a class that has not yet been loaded into memory. PackageA's class loader, rather than looking for the class itself, passes the request up to its parent class loader, which is the Integration Server class loader. The Integration Server class loader passes the request up to the OSGi bundle class loader. The OSGi bundle class loader does not find the class. The request comes back to the Integration Server class loader, which searches for the class, first in cache, and then in the Integration Server classpath. The Integration Server class loader does not find the class. The request comes back to PackageA's class loader, which searches for the class, first in cache, and then in the following directories, in this order: PackageA\code\jars PackageA\code\classes PackageA\lib PackageA\resource folders 8 9 PackageA's class loader does not find the class in any of these directories. PackageA's class loader delegates the search to PackageX's class loader.
10 PackageX's class loader searches for the class in cache and then in: PackageX\code\jars PackageX\code\classes PackageX\lib PackageX\resource folders 11 PackageX's class loader finds the class in PackageX's resource folder. Scenario Two: Integration Server Does Not Know Where the Class Lives In some cases, Integration Server will receive a request to load a class, but is not given any information about where the class lives. In this case, steps 1-6 are the same as in Scenario One, but because Integration Server does not know which package contains the class, it cannot go directly to the class loader for a particular package. Instead, Integration Server will start looking through all packages in
40
the Integration Server_directory/packages directory. If you know which packages are most likely to contain the classes being searched for, you can reduce the number of packages searched by specifying the order in which Integration Server is to search packages. You control the search order by using the watt.server.classloader.pkgpriority server configuration parameter. For example, you could specify the following: watt.server.classloader.pkgpriority=PackageD,PackageF With this setting, Integration Server will search PackageD and PackageF for the class before searching in PackageA, PackageB, and PackageC. Scenario Three: Package Class Loader Does Not Defer to the Integration Server Class Loader By default, a package class loader defers the search for a class to its parent, which is always the Integration Server class loader. There may be times, however, when you want the package class loader to perform the search instead of deferring to the Integration Server class loader. For example, you might have a package that contains a newer version of a class than the one Integration Server is using. To use the package class loader, specify the following in the manifest.v3 file for the package:
<value name='classloader'>package</value>
The following shows how class loading works when the package class loader does not defer to the Integration Server class loader. 1 2 A service in PackageA calls a class that has not yet been loaded into memory. PackageA's class loader, rather than deferring the search to the parent class loader, performs the search itself, looking first in cache, and then in the PackageA directories, in this order: PackageA\code\jars PackageA\code\classes PackageA\lib PackageA\resource folders If the package class loader does not find the class after searching the directories shown above, the class loader moves up the dependency chain, searching packages on which PackageA depends.
41
If you need to add your own class or jar files, follow these guidelines: If you want to file to be available just to the package that needs it, place the file in the jar or classes directory for that package. These files will also be available to packages that are dependent on this package. If you change these class or jar files, you can simply reload the package to pick up the changes; it is not necessary to restart the Integration Server. If you want a file to be available to that package and across the entire Integration Server, place the file in packages/package_name/code/jars/static. If you change the jar file, you must restart the Integration Server for the changes to take effect. For more information about the package directory structure, refer to How the Server Stores Package Information on page 373. As an alternative to placing a file in the Integration Server directory structure, you can place a file elsewhere on the machine and refer to the file using the PREPENDCLASSES and APPENDCLASSES variables in the setenv.bat/sh file. For more information about changing the Integration Server classpath, refer to How the Integration Server Classpaths Are Specified on page 37 and Changing Classpath Information at Startup on page 38.
42
When this property is set to true, when Integration Server encodes or decodes a pipeline, it uses the context loader before using the class loader for the currently executing thread. If a referenced class belongs to a particular package, it may be faster to use the context loader first. watt.server.classloader.pkgpriority=packageName, packageName Specifies a comma-delimited list of the packages Integration Server is to search first when no information has been provided about the location of class. Refer to Scenario Two: Integration Server Does Not Know Where the Class Lives on page 40 and watt.server. on page 546 for more information about this property.
43
Remove unnecessary network services that may contain security flaws, such as telnet. Regularly check for and install updates and patches from the operating system vendor that might affect security. See your operating system's documentation for instructions on accomplishing these tasks. For information about security auditing, refer to the webMethods Audit Logging Guide.
Logging
Logging for the platform provides important data you need to monitor platform activity and correct problems. Integration Server maintains this logging data. For complete information and instructions about working with logging data, see the webMethods Audit Logging Guide and Setting Up the Server Log on page 149.
Caching
Caching is an optimization feature that can improve the performance of services. You activate it on a service-by-service basis. When you enable caching, the server saves the service invocation results in a local cache for a specified period of time. While the results are in cache, rather than re-invoking the service, the server can quickly retrieve the service results for subsequent clients' requests for the service. Caching can significantly improve response time of services that retrieve information from busy data sources such as high-traffic commercial Web servers or databases. For additional information about using cache, see Chapter 25, Caching Service Results.
44
Starting the webMethods Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Happens When You Start the Server? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running Integration Server as a Windows Application vs. a Windows Service . . . . . . . . . . . . . . Passing Java System Properties to Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shutting Down the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restarting the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Server Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
46
To start Integration Server on UNIX 1 2 Locate the startup.sh script file. Execute this script. Note: If your Integration Server has been configured to request a master password for outbound password encryption, you will be prompted for this password in a popup window or from the server console. Refer to Managing Outbound Passwords on page 301 for more information about this password.
To start the server from the command line 1 At a command line, type the following command to switch to the server's home directory:
cd Integration Server_directory
Type the following command to start the server: For Windows: For UNIX:
bin\startup.bat -switch -switch ... bin/startup.sh -switch-switch ...
47
switch
-port
Description portNumber Specifies the port on which the server listens for HTTP requests. portNumber specifies the TCP/IP port number Example: -port 8080 This switch overrides the value assigned to watt.server.port. Note: To use port 80 (the standard for HTTP) or port 443 (the standard for HTTPS), UNIX users must be running as "root." For security reasons, a better method is to use a higher number port (5555 for HTTP and 8080 for HTTPS), and if necessary have the firewall remap port 80 to the desired port. See Architecture on page 30 for a discussion of remapping ports.
-home
directoryName
Specifies the server's home directory. directoryName specifies the complete path for the home directory. Example: -home D:\wmtest\server This switch overrides the value assigned to watt.server.home.
-debug
level
Specifies the level of detail you want the server to maintain in its server log for this session. level indicates the level of detail you want to record in the log. Specify... Fatal Error Warn Info Debug Trace To record... Fatal messages only. Error and fatal messages. Warning, error, and fatal messages. Informational, warning, error, and fatal messages. Debug, informational, warning, error, and fatal messages. Trace, debug, informational, warning, error, and fatal messages.
For this session, this switch overrides the value specified for the Default facility on the Settings > Logging page and assigned to watt.debug.level.
48
switch
Description Note: Prior to Integration Server 7.1, Integration Server used a number-based system to set the level of debug information written to the server log. Integration Server maintains backward compatibility with this system. For more information about the number-based logging levels, see the description of the watt.debug.level property in Server Configuration Parameters on page 531.
-log
destination
Specifies where you want the server to write its server log information for this session. Specify one of the following for destination: Option filename Description Specify the fully qualified path to the file in which you want the server to write server log information for this session. The default is serveryyyymmdd.log. Display server log information on the computer screen. When you use this option, the server records a timestamp in the journal log file, but does not record any other log information in the file.
none
This switch overrides the value assigned to watt.debug.logfile for this session.
49
Initializes the guaranteed delivery engine. The server checks the job store for pending guaranteed delivery transactions. It retries the pending transactions as the guaranteed delivery configuration settings specify. For more information, refer to Chapter 26, Configuring Guaranteed Delivery. Schedules internal system tasks.
If Integration Server detects a problem with the master password or outbound passwords at startup, it will place you in safe mode, which is a special mode from which you can diagnose and correct problems. When Integration Server is in safe mode, it displays the Integration Server Administrator, but Integration Server is not connected to any external resources. When you are placed into safe mode because of problems with the master password or outbound passwords, you will see the following message in the upper left corner of the Server Statistics screen of the Integration Server Administrator:
SERVER IS RUNNING IN SAFE MODE. Master password sanity check failed -- invalid master password provided.
These problems can be caused by a corrupted master password file, a corrupted outbound password file, or by simply mis-typing the master password when you are prompted for it. If you suspect you have mis-typed the password, shut down the server and restart it, this time entering the correct password. If this does not correct the problem, refer to When There Are Problems with the Master Password or Outbound Passwords at Startup on page 306 for instructions.
50
If you installed the Integration Server as a Windows service and now want it to be a Windows application, you can manually remove the Windows service for the Integration Server. After removing the Windows service, the Integration Server will still be available as a Windows application. See Switching the Server from a Windows Service to a Windows Application on page 51. Use a Windows service to have Integration Server automatically initialize when the machine on which it is installed initializes. When you use a Window service, you do not have to manually restart Integration Server following a machine restart. If you installed Integration Server as a Windows application and now want it to be a Windows service, you can manually register the Integration Server service. See Switching the Server from a Windows Application to a Windows Service on page 52. Note: If you want the Integration Server to prompt for the master password for outbound passwords at server initialization, do not run it as a Windows service. For more information about outbound passwords and the master password, refer to Securing Communications with the Server on page 235. You can run multiple Integration Servers as applications and multiple Integration Servers as services on a single machine. For example, you can run two instances of Integration Server as an application and two instances of Integration Server as services on the same machine.
51
Note: If you are running the Windows Vista operating system with the User Account Control security feature enabled, the command prompt you use to run the installSvc.bat service must be launched with full Administrator privileges. To launch the command prompt with full Administrator privileges, navigate to All Programs > Accessories, right-click on the Command Prompt listing, and select the Run as Administrator option. If you are not logged into the operating system with Administrator privileges, you will be prompted to supply Administrator credentials.
To manually register the Integration Server to run as a Windows service 1 Edit the setenv.bat file to fit your environment. For example, you might change the Java minimum and maximum heap size. The setenv.bat script file is located in the Integration Server_directory\bin directory. Open a command window, navigate to the Integration Server_directory\support\win32 directory and run installSvc.bat to create the Integration Server service. Note: If you are running the Windows Vista operating system with the User Account Control security feature enabled, the command prompt you use to run the installSvc.bat service must be launched with full Administrator privileges. To launch the command prompt with full Administrator privileges, navigate to All Programs > Accessories, right-click on the Command Prompt listing, and select the Run as Administrator option. If you are not logged into the operating system with Administrator privileges, you will be prompted to supply Administrator credentials. In the Microsoft Windows Control Panel in the Services dialog box, verify that the service for Integration Server has been created. 3 Start the service from one of the following places:
Services dialog box in the Microsoft Windows Control Panel Command line using the following command:
net start <SVCNAME>
where <SVCNAME> is the name of the service created in the previous step.
52
53
Note: If you are running the Windows Vista operating system with the User Account Control security feature enabled, the command prompt you use to run the installSvc.bat service must be launched with full Administrator privileges. To launch the command prompt with full Administrator privileges, navigate to All Programs > Accessories, right-click on the Command Prompt listing, and select the Run as Administrator option. If you are not logged into the operating system with Administrator privileges, you will be prompted to supply Administrator credentials. 6 7 From Integration Server_directory\support\win32 directory, run installSvc.bat to create the Integration Server service. In the Microsoft Windows Control Panel in the Services dialog box, verify that the service for Integration Server has been created.
54
Select whether you want the server to wait before shutting down or to shut down immediately. Delay number minutes or until all client sessions are complete. Specify the number of minutes you want the Integration Server to wait before shutting down. It then begins monitoring user activity and automatically shuts down when all non-administrator sessions complete or when the time you specify elapses (whichever comes first). Perform action immediately. The server and all active sessions terminate immediately.
4 5
For instructions on how to view the active sessions, refer to Viewing Active Sessions on page 55. Click Shutdown.
Type the following command to stop the server: For Windows: For UNIX:
bin\shutdown.bat bin/shutdown.sh
55
You make certain configuration changes. Some configuration changes require the server to be restarted before they take effect. This document indicates when you are required to restart the server for configuration changes. You want to incorporate updated services that cannot be dynamically reloaded. This typically occurs for non-Java services. To restart the server 1 2 3 Open the Integration Server Administrator if it is not already open. In the upper right corner of any Integration Server Administrator screen, click Shutdown and Restart. Select whether you want the server to wait before restarting or to restart immediately.
Delay number minutes or until all client sessions are complete. Specify the number of minutes you want the Integration Server to wait before restarting. It then begins monitoring user activity and automatically restarts when all nonadministrator sessions complete or when the time you specify elapses (whichever comes first). Perform action immediately. The server and all active sessions terminate immediately. Then the server restarts. For instructions on how to view the active sessions, refer to Viewing Active Sessions on page 55.
Click Restart.
Server Recovery
If a hardware or software problem causes Integration Server to fail, restart the server using the normal startup procedure. The server will attempt to perform cleanup and initialization processes to reset the operating environment. As part of the recovery process, the server automatically: Reloads the cache environment to its pre-failure state. Restores the transaction manager's guaranteed delivery queues. See Chapter 26, Configuring Guaranteed Delivery for additional information about guaranteed delivery recovery options. Services that your site has created might have their own unique recovery requirements. Consult with your developers for information about these requirements. Some circumstances might require manual intervention to restart the server.
56
Tip! Before restarting Integration Server, you can collect diagnostic data to troubleshoot run-time issues. For information about using the diagnostic port and utility, see Appendix C, Diagnosing the Integration Server. Also refer to this chapter for information on generating thread dump to troubleshoot reasons for server slowdown or unresponsiveness.
57
The files in this subdirectory contain the locally persisted documents being processed by Integration Server. The loss of these files will result in the loss of any persisted documents. Back up these six files: ISResubmitStoredata0000000 ISResubmitStorelog0000000 ISTransStoredata0000000 ISTransStorelog0000000 TriggerStoredata0000000 TriggerStorelog0000000 ./WmRepository4 The files in this subdirectory contain metadata for Integration Server. The loss of these files could result in loss of configuration information and may require manual reconfiguration. Back up these two files: FSDdata0000000 FSDlog0000000
58
What Is the Integration Server Administrator? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the Integration Server Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accessing Integration Server Administrator through My webMethods . . . . . . . . . . . . . . . . . . . . . Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
To start the Integration Server Administrator 1 2 Start your browser. Point your browser to the host and port where the Integration Server is running. Examples If the server were running on the default port on the same machine where you are running the Integration Server Administrator, you would type:
http://localhost:5555
If the server were running on port 4040 on a machine called QUICKSILVER, you would type:
http://QUICKSILVER:4040
Log on to the server with a user name and password that has administrator privileges. If you just installed the Integration Server, you can use the following default values: User Name: Password: Administrator manage
Important! Use the exact combination of upper- and lowercase characters shown above; user names and passwords are case sensitive.
60
If you change the password, be sure to select one that is difficult to guess. For example, use a mixture of upper- and lowercase letters, numbers, and special characters. Do not use a name, phone number, social security number, license plate or other generally available information.
61
Field Color
Entry Choose the color to use for the border around the interface. If you have multiple s, you can use this feature to distinguish Integration Servers from each other; for example, you could use orange for Integration Servers in your production environment, and blue for Integration Servers in your test environment.
Click OK.
Basic Operation
When you start the Integration Server Administrator, your browser displays the Statistics screen. The Integration Server Administrator Screen
The Navigation panel on the left side of the screen displays the names of menus from which you can select a task. To start a task, click a task name in the Navigation panel. The server displays a screen that corresponds to the task you select.
62
To log off the Integration Server Administrator 1 2 Click Log Off in the upper right corner of the Integration Server Administrator screen. Integration Server displays a dialog box to ensure you want to log off. Click OK to log off the Integration Server Administrator. The browser displays a screen confirming that the session is terminated.
Getting Help
You can obtain information about the Integration Server Administrator by clicking the Help link in the upper right corner of any Integration Server Administrator screen. The help system displays a description of the parameters for the screen and a list of procedures you can perform from the screen. From this window, click Show Navigation Area to view the help system's table of contents from which you can search for a specific procedure or screen description.
63
64
Users and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining a User Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling and Enabling Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
66
User name. A user name is a unique name that identifies a client. You can specify a user name that represents an actual person (e.g., "JDSmith" for John D. Smith), or you can specify a user name to represent applications, job functions, or organizations. For example, you might set up generically named user names such as "MktgPurchAgent," "MktgTimeKeeper," and so forth, to represent job functions. Password. A password is an arbitrary string of characters that you associate with a user name. The server uses the password when authenticating a client who has submitted a valid user name. For more information about authentication, see Customizing Authentication Using JAAS on page 289. A password is meant to be a secret code shared only by the server, the server administrator, and the owner of the user account. Its purpose is to give the server added assurance that a request is coming from a legitimate user. Only administrators can assign a password to a user name and change a password for an existing account. For additional security, the server hashes passwords before storing them. Group membership. The group membership identifies the groups to which a user belongs. Access to the server's resources is controlled at the group level: Only users that are members of the Administrators group can configure and manage the server using the Integration Server Administrator. For more information about controlling access to the Integration Server Administrator, see Appendix , FIPS 140-2 Compliance. Only users that are members of the Developers group can connect to the server from Software AG Designer or webMethods Developer to create, modify, and delete services. For information, see Adding a Developer User on page 70. The server protects access to services and files using Access Control Lists (ACLs). You set up ACLs that identify groups that are allowed or not allowed to access a resource. For more information about protecting services and files, see Controlling Access to Resources with ACLs on page 264.
Default
67
User Developer
Description A user that can connect to the server from Software AG Designer or webMethods Developer to create, modify, and delete services that reside on the server. The user account that the server uses during package replication. For more information about package replication, see Copying Packages from One Server to Another on page 388.
Replicator
Everybody Replicators
68
Specify... A password made up of a combination of letters, numbers, or symbols. You can specify the password in the User Names field by entering username;password or you can enter the password in this field. If you do not specify a password in the User Names field, the server uses the password specified in this field for the user. If you specify multiple users without passwords in the User Names field, the server uses the password in the Password field as the password for those users. A password is required. Important! Passwords are case sensitive. Type these values exactly as you want the client to enter it. Be sure to select passwords that are difficult to guess. For example, use a mixture of upper- and lowercase letters, numbers, and special characters. Do not use a name, phone number, social security number, license plate or other generally available information.
69
To grant administrative privileges to a user 1 2 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. Under Local User Management, the Groups area of the screen (on the right) contains two lists. Users in this Group is a list of users currently in the selected group. Remaining Users is a list of users not currently in the selected group. 3 4 In the Groups area of the screen, in the Select group list, select Administrators. In the Remaining Users list, select (highlight) the user or users to whom you want to grant administrator privileges. To select additional users without deselecting currently selected users, press the CTRL key while you click on the users you want to select. To deselect a user, press the CTRL key while you click the currently selected entry. 5 After you have selected all the users you want to add to the group, click . The server moves the selected users to the Users in this Group list. 6 Click Save Changes.
70
A user has developer privileges if he or she belongs to the Developers group or to any other group added to the Allow List of the Developers ACL. To determine if a user has developer privileges, the server authenticates the user to obtain their user name. (For information about how the server determines the user name, see Customizing Authentication Using JAAS on page 289.) After determining the user name, the server determines if the user belongs to a group that is allowed and does not belong to any group that is denied access by the Developers ACL. If so, the server allows the connection between Designer or Developer and the server to be established. To grant developer privileges to a user, you must assign that user to the Developers group or to a group you have added to the Allow list of the Developers ACL. In addition, you must make sure the user is not a member of a group that is denied access by the Developer ACL. Important! List, Read, and Write ACLs are a mechanism for protecting against accidental tampering or destruction of elements. A developer making a deliberate attempt can bypass this mechanism. Do not rely on ACLs for protection in a hostile environment. Important! The user to whom you want to grant developer privileges must already have a user account on the Integration Server. If the user does not already have a user account, create one for the user before you perform the following steps.
To grant developer privileges to a user 1 2 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. Under Local User Management, in the Groups area of the screen (on the right) contains two lists. Users in this Group is a list of users currently in the selected group. Remaining Users is a list of users not currently in the selected group. 3 4 In the Groups area of the screen, in the Select group list, select Developers. In the Remaining Users list, select (highlight) the user or users to whom you want to grant developer privileges. To select additional users without deselecting currently selected users, press the CTRL key while you click on the users you want to select. To deselect a user, press the CTRL key while you click the currently selected entry. 5 After you have selected all the users you want to add to the group, click . The server moves the selected users to the Users Currently in this Group list. 6 Click Save Changes.
71
Changing Passwords
You can change the password for your user account or other user accounts. Keep the following points in mind when changing passwords: Do not change a password if you are outside of the corporate firewall and you did not use SSL to connect to the Integration Server. Be sure to select passwords that are difficult to guess. For example, use a mixture of upper- and lowercase letters, numbers, and special characters. Do not use a name, phone number, social security number, license plate or other generally available information; the security of your system depends on it. You cannot use the Integration Server Administrator, Software AG Designer or webMethods Developer to administer users or groups stored in an external directory. This restriction includes changing the passwords of these users. To change a user's password 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. In the Users section of the screen, select the user name for the user whose password you want to change and click change password. Enter the following information: For this parameter... New Password Specify... The new password, made up of any combination of letters, numbers, or symbols. Important! Passwords are case sensitive. Type this value exactly as you want the client to enter it. Be sure to select passwords that are difficult to guess. For example, use a mixture of upper- and lowercase letters, numbers, and special characters. Do not use a name, phone number, social security number, license plate or other generally available information. Confirm Password 5 Click Save Password. The same password again to make sure you typed it correctly.
72
Minimum Number of Upper Case Characters Minimum Number of Lower Case Characters Minimum Number of Digits Minimum Number of Special Characters (neither alphabetic nor digits)
2 2 1 1
73
Disabling a User
Use the following procedure to disable a user. Important! Before you disable the Administrator user, make sure you have defined another user with administrator privileges so you are not locked out of the server.
To disable a user 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. Click Enable and Disable Users. In the Enabled Users list select (highlight) the user or users you want to disable. To select additional users without deselecting currently selected users, press the CTRL key while you click on the users you want to select. To deselect a user, press the CTRL key while you click the currently selected entry. 5 6 At the bottom of the Enabled Users area of the screen click The server moves the selected users to the Disabled Users area of the screen. Click Save Changes. .
Enabling a User
Use the following procedure to enable a user. The only time you will need to enable a user is if the system administrator explicitly disabled it.
74
To enable a user 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. Click Enable and Disable Users. In the Disabled Users list select (highlight) the user or users you want to enable. To select additional users without deselecting currently selected users, press the CTRL key while you click on the users you want to select. To deselect a user, press the CTRL key while you click the currently selected entry. 5 6 At the bottom of the Disabled Users area of the screen click The server moves the selected users to the Enabled Users area of the screen. Click Save Changes. .
Defining Groups
A group is a named collection of users that share privileges. The privileges can be: Administrator privileges Replicator privileges Developer privileges Privileges to invoke a service Privileges to allow the server to serve files Privileges to invoke a service or access files are granted and denied by Access Control Lists (ACLs) that you set up. When an administrator creates ACLs, he or she identifies groups that are allowed to access services and files and groups that are denied access to services and files. Administrator, replicator, and developer privileges are typically granted by adding a user to the Administrators, Replicators, or Developers group, respectively. Alternatively, you can create new groups and add them to the allow lists of the Administrators, Replicators, or Developers ACLs. Create groups that identify groups of users that will share the same privileges. When you create a group definition, you specify a group name and the members of the group. Group name.A group name is a unique name that identifies the group. You can use any name, for example, a name that defines a department (Marketing) or job function (Programmers). Members.List of user names that are members of the group.
75
Predefined Groups
Integration Server is installed with the following predefined groups. Group Name Administrators Members Administrator Description This group identifies users that have administrator privileges. A user must have administrator privileges to configure and manage the server. Important! Membership in this group gives substantial power to affect the configuration of the Integration Server. Use caution in assigning membership in this group to individuals who can be trusted to use the privilege carefully. Anonymous Developers Default Developer This group identifies users that have not supplied a userid. This group identifies users that have developer privileges. A user must have developer privileges to connect to the server from the Designer or Developer. Important! Membership in this group gives substantial power to affect the configuration of the Integration Server. Use caution in assigning membership in this group to individuals who can be trusted to use the privilege carefully. Everybody Administrator Default Developer Replicator All users are a member of this group. Every new user is automatically added to the Everybody group.
76
Description This group identifies users that have replicator privileges. The Replicators group gives its members the authority to perform package replication. (By default, the server uses members of the Replicators group for package replication.) Users do not have to be members of the Replicators group to perform package replication. As long as user is a member of a group that is assigned to the Replicators ACL, it can perform package replication. For more information about package replication, see Copying Packages from One Server to Another on page 388. Membership in this group gives substantial power to affect the configuration of the Integration Server. Use caution in assigning membership in this group to individuals who can be trusted to use the privilege carefully.
Adding Groups
Use the following procedure to add groups. To add a new group to the server 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. Click Add and Remove Groups. In the Create Groups area of the screen, type a unique group name made up of a combination of letters, numbers, or symbols. Important! Group names cannot contain spaces and special characters such as comma (,), quotation marks ( or ), backslash (\), and forward slash (/). You can add more than one group at a time by specifying multiple lines, one group to a line. Press ENTER to separate lines. 5 Click Create Groups.
77
To add users to a group 1 2 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. The server displays the following screen.
The Groups area of the screen (on the right) contains two lists. Users in this Group is a list of users currently in the group. Remaining Users is a list of users not currently in the group. 3 4 Under Groups, in the Select group list, select the group to which you want to add a user. In the Remaining Users list select (highlight) the user or users you want to add to the group. To select additional users without deselecting currently selected users, press the CTRL key while you click on the users you want to select. To deselect a user, press the CTRL key while you click the currently selected entry. 5 After you have selected all the users you want to add to the group, click . The server moves the selected users to the Users Currently in this Group list. 6 Click Save Changes.
78
To remove a user from a group 1 2 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. The server displays the following screen.
The Groups area of the screen (on the right) contains two lists. Users in this Group is a list of users currently in the group. Remaining Users is a list of users not currently in the group. 3 4 Under Groups, in the Select group list, select the group from which you want to remove a user. In the Users in this Group area of the screen, select (highlight) users that you want to remove from the group. To select additional users without deselecting currently selected users, press the CTRL key while you click on the users you want to select. To deselect a user, press the CTRL key while you click the currently selected entry. 5 At the bottom of the Users in this Group area of the screen click server moves the selected users to the Remaining Users area of the screen. . The
79
The Groups area of the screen (on the right) contains two lists. Users Currently in this Group is a list of users currently in the selected group. Remaining Users is a list of users not currently in the selected group. 3 4 Under Groups, in the Select group list, select the group for which you want to view membership. The server displays the users in the Users in this Group list.
Removing Groups
Use the following procedure to remove groups that you no longer need. Note: You cannot delete any of the following groups: Administrators, Developers, Replicators, Anonymous, and Everybody.
80
To delete a group from the server 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click User Management. Click Add and Remove Groups. In the Remove Groups area of the screen, select the groups you want to remove. Click Remove Groups.
81
82
Viewing and Changing Licensing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing the Server Thread Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Server Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Outbound HTTP Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up Aliases for Remote Integration Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Third-Party Proxy Servers for Outbound Requests . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Where the Integration Server Writes Logging, Status, and Other Information . . . . . Switching from the Embedded Database to an External RDBMS . . . . . . . . . . . . . . . . . . . . . . . . Working with Extended Configuration Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Integration Server to Work with Servers Running HTTP 1.0 and Above . . . . . . . . . Specifying Character Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using a 64-bit JVM on Solaris and HP-UX Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Publishing Information about Integration Server Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
84
To change the License Key 1 2 3 4 5 6 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Licensing. Click Licensing Details. Click Edit Licensing Detail. The server displays the Edit screen. In the License Key File field, enter the pathname for the license key file you obtained from Software AG. Click Save Changes. Integration Server copies the contents of the license key file to Integration Server_directory\config\licenseKey.xml and updates the License Key File field to reflect that name. Note: Integration Server updates the expiration date automatically after you click Save Changes. It is not necessary to restart Integration Server.
Renewal Reminders
Approximately 30 days before your license expires, Integration Server sends an e-mail message to the administrative-message recipient, reminding him or her to renew the license. In addition, the server displays the following message at the top of all pages on the Integration Server Administrator:
License key expires in about xxx days ... contact Software AG for a new key.
Renewing a Key
If you need to obtain a new key or renew your license, contact your Software AG sales representative.
Licensed Sessions
Your license allows a specified number of users to have sessions in the Integration Server concurrently. The Integration Server creates a session when a developer connects to the server from Software AG Designer, webMethods Developer or a IS client connects to the server to execute services. If a user attempts to access the server while the maximum number of sessions are in use, the server rejects the request and returns the following error to the user:
85
You can view the current number of active sessions and the licensed session limit using the Statistics screen in the Integration Server Administrator. This value is permanently associated with your license key and can only be changed by obtaining a new license. Any connection made to the server by a non-Administrator user (that is, a user that is not part of the Administrators group) consumes a licensed session. The session exists until it times out (based on the server's Session Timeout setting) or the requester stops the session by invoking the wm.server:disconnect service. If a user invokes a stateless service and a session does not already exist for the user, the server creates a session. If the user is a non-Administrator, the user consumes a licensed session. After the service completes, the server removes the session and reduces the number of licensed sessions in use. Note: If Integration Server receives multiple requests simultaneously and does not have the resources to handle them, the server's performance might decrease. You can tune performance by adjusting the concurrent stateful sessions limit on the server. For more information, see Managing Server Sessions on page 88 .
86
You can also set a warning level for available threads. When the percentage of available threads is equal to or less than the warning level, the server generates a journal log message to alert you to the reduced thread availability. The server generates another journal log message when the number of available threads is greater than the threshold. To view system threads that are running on the server, navigate to the Server > Statistics > System Threads screen. See Canceling or Killing a Thread for more information. To configure the server thread pool 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Resources. Click Edit Resource Settings. Under Server Thread Pool, update the server thread pool settings, as follows: For this parameter... Maximum Threads Specify... The maximum number of threads that the server maintains in the server thread pool. If this maximum number is reached, the server waits until processes complete and return threads to the pool before running more processes. The default is 75. The minimum number of threads the server maintains in the server thread pool. When the server starts, the thread pool initially contains this minimum number of threads. The server adds threads to the pool as needed until it reaches the maximum allowed, which is specified in the Maximum Threads field. The default is 10. Threshold at which the server starts to warn of insufficient available threads. When the percentage of available server threads equals this percentage, the server generates a Journal log message indicating the current available thread percentage and stating:
Available Thread Warning Threshold Exceeded
Minimum Threads
The default is 15%. When you enter a percentage and save your changes, the server automatically calculates the number of threads and displays the number next to the specified percentage. Tip! When the percentage of available threads falls below the warning level, you might want to decrease the number of documents the server receives and processes for Broker/local triggers. For more information, see Managing Broker/Local Triggers.
87
Specify... Percentage of server threads the scheduler function is permitted to use. The default is 75%.
88
Under Session, update the server session settings, as follows: For this parameter... Session Timeout Specify... The maximum number of minutes an idle session can remain active (in other words, how long you want the server to wait before terminating an idle session). To set the Session Timeout parameter appropriately, you must be familiar with the clients that use your server. If your clients are all Java programs, you can usually reduce the timeout value to 6 or 7 minutes. You may need to experiment with this setting to find the appropriate value for your site. By default, the server uses a timeout limit of 10 minutes. This is an appropriate value for most sites. However, you may have to increase this value if your clients normally have lengthy delays (greater than 10 minutes) between successive requests.
89
Under Session, update the server session settings, as follows: For this parameter... Enable Stateful Session Limit Specify... Whether you want Integration Server to limit the number of concurrent stateful sessions. If you want to enable a stateful session limit, select Yes; otherwise, select No. When enabled, the number of stateful sessions that can exist simultaneously on the server is defined by the Maximum Stateful Sessions parameter. You can view statistics for stateful sessions on the Server > Statistics screen in Integration Server Administrator. When disabled, statistics for stateful sessions are still gathered and displayed on the Server > Statistics screen. Maximum Stateful Sessions The maximum number of concurrent stateful sessions that can exist on the Integration Server. If a user attempts to access the server and execute a stateful service while the maximum number of stateful sessions are in use, the server rejects the request and returns the following error to the user:
Server is not accepting new requests at this time.
The value must be a positive integer. If a value is not specified or the feature is disabled, the maximum number of concurrent sessions is determined by the licensed sessions limit specified in your Integration Server license file. Available Stateful Sessions Warning Threshold Threshold at which Integration Server starts to warn of insufficient available stateful sessions. When the percentage of available stateful sessions equals or falls below the value of this property, Integration Server generates a server log message stating:
{0}% or more of maximum number of concurrent stateful sessions are in use. {1} sessions are available
90
Description Specifies the value that the server uses in the HTTP User Agent request header that it sends when requesting a Web document. The User Agent header tells a Web server what type of browser is making the request. In the case of the Integration Server, the User Agent header indicates the type of browser that the Integration Server appears to be to the Web server. Some Web servers examine this header to determine a client's capabilities so they can tailor their responses accordingly. When you install the Integration Server, the User Agent parameter is set to Mozilla/4.0 [en] (WinNT; I). You can change this value as you need; however, the value you set should satisfy the majority of services that your server executes. Be sure your developers know the User Agent value your server uses. If their applications require a different User Agent, they can override the server's default at run time by including an HTTP User Agent header with their request.
Maximum Redirects
Specifies the number of times that the Integration Server allows a request to be redirected (i.e., automatically sent to another URL by the target server. If a request exceeds the specified number of redirections, the Integration Server immediately returns an I/O exception to the client. When you install the Integration Server, Maximum Redirects is set to 5. You will need to increase this value if the targets that you access typically redirect their requests more than this. (This may happen if the target operates in a clustered environment.)
Timeout
Specifies the length of time the server waits for a response from a target server. If the Integration Server does not receive a response in the allotted time, it retries the request up to the number of times specified by the Retries parameter. When the allowed number of retries is exceeded, the server returns an exception. When you install the Integration Server, the Timeout parameter is set to 3 minutes. For most sites this is a reasonable setting; however, you may need to adjust this value if you work with targets that have longer response times than this (e.g., large commercial Web sites or databases during peak periods).
91
Parameter Retries
Description Specifies the number of times the server reissues a request that has timed out (i.e., one from which it did not receive a response within the time period specified by the Timeout parameter). When you install the Integration Server, Retries is set to 0. This means that the server automatically returns an exception if it does not get a response within the allotted time. Set Retries to a value greater than 0 if you want the server to retry (reissue) timed-out requests. The server will retry the request the number of times you specify. Make sure that your developers know the Retries value that your server uses. If they need to use a different value, they can explicitly assign a Retries value to their service.
Maximum Redirects
Timeout
Retries
92
Adding an Alias
Use the following procedure to add an alias for a remote Integration Server. To add an alias for a remote server 1 2 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Remote Servers.
93
3 4
Click Create Remote Server Alias. Set the Remote Server Alias Properties as follows: For this parameter... Alias Specify... Name that you want to use for the alias. You can give the remote server any alias name but it cannot include the following illegal characters: #-&@^!%*:$./\\`;,~+=)(|}{][><" . Host name or IP address of the remote server for which you are creating an alias (e.g., workstation5.webmethods.com). Port number on which the remote server listens for incoming requests from your server (e.g., 5555). User name for a user account on the remote server. When you invoke a service using this alias, the remote server uses this user account for authentication and access control. Specify a user name that has access to the services you want to invoke on the remote server. Password identified in the user account for User Name. ACL that governs which user groups on your server can use this alias for the remote server. Select an ACL from the drop down list. By default, only members of groups governed by the Internal ACL can use this alias. Sets the default number of client keep alive connections to retain for a given target endpoint. If not specified, five keep alive connections are retained. This field specifies the maximum number of client connections that should be retained for any given remote host. In other words, this is not a maximum number of connections that can be established, but a limit on the number of inactive client connections to retain for reuse. Specifies the length of time (in minutes) that your server maintains an idle connection to a remote server. This value will cause the connection to be retained for possible reuse until it times out. If the specified keep alive timeout value expires, the connection will close and the HTTP Listener will attempt to create a new one. Whether you want your server to connect to the remote server using Secure Sockets Layer (SSL). If you want to use SSL, select yes; otherwise, select no. Important! If you select yes, the remote server must be configured to listen for incoming HTTPS requests.
Use SSL
94
Specify... A user-specified, text identifier for an Integration Server keystore. The alias points to a repository of keys and their associated SSL certificates.
The alias for the Integration Server private key and associated certificate, which must be stored in the keystore specified by the above keystore alias. You must create a key alias with a third-party certificate utility, such as Java keytool. You cannot create a key alias with Integration Server Administrator.
Retry Server
Host name or IP address (for example, workstation6.webmethods.com) of a remote server you want your local Integration Server to connect to if the primary remote server is unavailable. If the remote server is part of a cluster, the local Integration Server will, by default, try to connect to other Integration Servers in the cluster before trying to connect to the retry server. If clients are using the pub.remote:invoke service to run services on a remote server, it is possible to change this default behavior by using the $retryCluster input parameter with the service. If you set this parameter to false, the service will not try to use other Integration Servers in the cluster. Instead, the service will immediately try using the retry server specified on this screen.
The server displays a status line that indicates whether the connection is successful or not. The status line is displayed above the list of existing aliases.
95
Editing an Alias
If you need to update the information for an alias, you can edit it to make your changes. Use the following procedure to edit an alias. To edit an alias for a remote server 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Remote Servers. Locate the alias you want to edit and click on the alias name. Update the information for the alias. Click Save Changes.
Deleting an Alias
If you no longer need an alias for a remote server, you can delete it. Use the following procedure to delete an alias. To delete an alias for a remote server 1 2 3 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Remote Servers. Locate the alias you want to delete and click the icon in the Delete field. The server displays a dialog box that prompts you to verify your action. Click OK to verify that you want to delete the alias.
96
You can specify a default proxy server for each protocol type. Integration Server uses the default proxy server alias when one is not specified by the pub.client:http, pub.client:ftp.login, or pub.client.ftp service. Only one proxy alias can be specified as the default proxy alias per protocol. You can create, edit, enable, disable, change, and delete proxy server aliases.
97
Specify... 0. No proxy Do not use an FTP proxy server. This is the default. 1. user@host no proxy auth Connect to the proxy server, but do not log into it. Then send the following:
USER ftp_user@real_ftp_hostname PASS ftp_password
2. user@host proxy auth Connect to the proxy server, and log into it with:
USER proxy_user PASS proxy_password
3. site command Connect to the proxy server, and log into it with:
USER proxy_user PASS proxy_password
4. open command Connect to the proxy server, and log into it with:
USER proxy_user PASS proxy_password
5. real_user@proxy_user@real_host Connect to the proxy server and log into it, then send the following:
USER ftp_user@proxy_user@real_hostname PASS ftp_password@proxy_password
98
Specify... 6. proxy_user@real_host Connect to the proxy server, and log into it with:
USER proxy_user@real_hostname PASS proxy_password
Default
Whether this proxy server alias should be the default proxy server alias for its protocol type or not. Click Yes or No. Only one default proxy server alias can be set for each protocol type.
99
100
To delete a proxy alias 1 2 3 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Proxy Servers. In the Proxy Servers List, locate the alias you want to delete and click the Delete column. Click OK to delete the selected proxy server. icon in the
Integration Server displays a dialog box that prompts you to verify your action. 4
Click Save Changes. The proxy bypass addresses appear under Proxy Bypass on the Proxy Servers main screen.
101
Configuring Where the Integration Server Writes Logging, Status, and Other Information
Integration Server collects and stores data about the different areas of Integration Server functioning, including internal processing (scheduled jobs, Guaranteed Delivery, trigger joins), auditing and logging, central user management, document history, and process integrity. This data is stored in various database components that are identified to Integration Server through functional aliases. For information about the data stored in the different database components, and instructions on configuring functional aliases, refer to Installing webMethods Products.
102
To view and edit extended configuration settings 1 2 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Extended. The server displays a screen that lists configuration properties specified in the server.cnf file. 3 By default, no properties are shown. If the properties you want to view are shown, skip this step. To select properties to be displayed, click Show and Hide Keys. The server displays a list of all properties included in the server.cnf file (their values are not shown.) Select the box to the left of each property you want the server to display and click Save Changes. The server displays the Extended Settings screen again, this time with the selected properties and their values displayed. 4 To add, delete, or change a property setting, click Edit Extended Settings and type your changes. Important! Any change you make here will be reflected in the server.cnf file. 5 Click Save Changes. Any properties you added will automatically display a check mark in the Show and Hide Keys list and will be displayed, with their values, in the Extended Settings list. 6 Restart the server for the changes to take effect. a b c In the upper right corner of any Integration Server Administrator screen, click Shutdown and Restart. Select whether you want the server to wait before restarting or to restart immediately. Click Restart.
103
Configuring Integration Server to Work with Servers Running HTTP 1.0 and Above
Sometimes when your Integration Server connects to the partner server, the server may crash before sending back a response. If your Integration Server maintains backward compatibility with HTTP 0.9, it does not mandate a response code and consequently, it treats no response from the target server as a valid response. This is an error. Integration Server now contains a watt property that you can set to indicate whether it maintains compatibility with another server using HTTP 0.9. Use the following procedure to update your Integration Server to work with servers running HTTP 1.0 and above only. To set Integration Server to work with servers running HTTP 1.0 and above 1 2 3 4 In the Settings menu of the Navigation panel, click Extended. Click Edit Extended Settings. Type watt.server.http.pointnineSupport=false. Click Save Changes. Note: Set watt.server.http.pointnineSupport to true if you want Integration Server to communicate with servers using HTTP 0.9 and above.
Important! Consult with Software AG Global Support before changing these settings. The default settings are appropriate in most cases. Setting them incorrectly can cause unpredictable results.
104
105
106
Click Test Connection. The server displays a status line that indicates whether the connection is successful or not. The status line is displayed at the top of the screen.
107
108
Configuring Ports
110 111 112 116 119 123 126 128 134 137 141 141 142 142 144 144 145 145 146 147
About Configuring Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Considerations for Adding Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an HTTP Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an HTTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding a File Polling Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an FTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding an FTP Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an E-mail Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an HTTP Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding an HTTPS Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suspending an HTTP/HTTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resuming an HTTP/HTTPS Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Testing for HTTPS Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using an FTP/FTPS Port Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Changing the Primary Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Editing a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Enabling/Disabling a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring How Ports Handle Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Adding a Security Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
109
7 Configuring Ports
About Adding an FTPS Port on page 123 Adding an FTP Port on page 126 About Adding an E-mail Port on page 128 About Adding an HTTP Diagnostic Port on page 134
Diagnostic
All ports are associated with a package. By default, they are associated with WmRoot. You can associate all port types except the diagnostic port with an application package so that when you replicate the package, it continues to use a port with the same number on the new server. This feature is useful if you create an application that expects input on a specific port. The application will continue to work after it is replicated to another server.
110
7 Configuring Ports
Important! Be careful when setting up a port that is associated with a package. When copied to the target server, the new port might decrease security on that system. For example, suppose you replicate a package that is associated with an HTTP port at 5556. The replication process creates an HTTP port at 5556 on the target server. If the target server normally uses only HTTPS ports because of their greater security, then the new port presents a possible security hole on that server.
111
7 Configuring Ports
Security Considerations
The following are security prerequisites and considerations for configuring ports.
112
7 Configuring Ports
3 4 5
Click Add Port. In the Add Port area of the screen, select webMethods/HTTP. Click Submit. Integration Server Administrator displays a screen requesting information about the port. Provide the following information: For this parameter... Port Package name Specify... The number you want to use for the port. Select a number that is not already in use. The package associated with this port. When you enable the package, the server enables the port. When you disable the package, the server disables the port. If you replicate this package, the Integration Server creates a port with this number and the same settings on the target server. If a port with this number already exists on the target server, its settings remain intact. This feature is useful if you create an application that expects input on a specific port. The application will continue to work after it is replicated to another server. Bind Address (optional) IP address to which to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use this specific address. If you do not specify a bind address, the server picks one for you. How long a connection request should stay in the queue for a suspended port, before the request is rejected. The default is set to 200 milliseconds (ms), with a maximum permissible value of 65535 ms. When to close the connection if the server has not received a request from the client within this timeout value (in milliseconds); or when to close the connection if the client has explicitly placed a close request with the server.
Backlog
113
7 Configuring Ports
Specify... Whether the listener will use this pool exclusively for dispatching requests. The existing Integration Server thread pool is a global thread pool. If there is a very high load on this resource, the user may have to wait for the global thread pool to process his request. However, with the private thread pool option enabled, requests coming into this port will not have to compete with other server functions for threads. Click Enable if you wish to set up a private thread pool for requests coming to this port. You can change or accept the default settings given below: Threadpool Min 1 Refers to the minimum number of threads. The default is set to 1. Threadpool Max 5 Refers to the maximum number of threads for this private thread pool. The default is set to 5. Threadpool Priority 5 This is the Java thread priority. Important! This setting must be used with extreme care because it will affect the server performance and throughput. Click Disable if you do not need to use the Threadpool feature.
6 7 8
Click Save Changes. On the Ports screen, click Edit to change the Access Mode if necessary. You may Set Access Mode to Allow by Default or Reset to default access settings. On the Ports screen, also check the list of ports to ensure that the status in the Enabled column is Yes. If it is not, click No to enable the port.
Advanced Controls
By default, Integration Server accepts port connections requests as soon as it receives them. This can be a problem if the port receives multiple requests simultaneously and does not have the resources to handle them. You can handle this by specifying a delay value using the Advanced Controls screen. With a delay value in place, Integration Server will wait the specified number of milliseconds before accepting a connection request on this port. The Advanced Controls screen provides you the capability to control the rate at which the listener accepts connections, over the size of the private thread pool, if it was enabled.
114
7 Configuring Ports
115
7 Configuring Ports
116
7 Configuring Ports
Specify... IP address to which to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use this specific address. If you do not specify a bind address, the server picks one for you. How long a connection request should stay in the queue for a suspended port, before the request is rejected. The default is set to 200 milliseconds (ms), with a maximum permissible value of 65535 ms. When to close the connection if the server has not received a request from the client within this timeout value (in milliseconds); or when to close the connection if the client has explicitly placed a close request with the server. Whether the listener will use this pool exclusively for dispatching requests. The existing Integration Server thread pool is a global thread pool. If there is a very high load on this resource, the user may have to wait for the global thread pool to process his request. However, with the private thread pool option enabled, requests coming into this port will not have to compete with other server functions for threads. Click Enable to enable the private thread pool settings. You can change or accept the default settings given below: Threadpool Min 1 Refers to the minimum number of threads. The default is set to 1. Threadpool Max 5 Refers to the maximum number of threads for this private thread pool. The default is set to 5. Threadpool Priority 5 This is the Java thread priority Important! This setting must be used with extreme care because it will affect the server performance and throughput. Click Disable if you do not need to use the Threadpool feature.
Backlog
Threadpool
117
7 Configuring Ports
Under Security Configuration, in the Client Authentication list, select the type of client authentication you want Integration Server to perform for requests that arrive on this HTTPS port. Option Username/Password Request Client Certificates Description Integration Server prompts the client for a user ID and password. Integration Server requests client certificates for all requests. If the client does not provide a certificate, the server prompts the client for a userid and password. If the client provides a certificate: The server checks whether the certificate exactly matches a client certificate on file and is signed by a trusted authority. If so, the client is logged in as the user to which the certificate is mapped in Integration Server. If not, the client request fails, unless central user management is configured. If central user management is configured, the server checks whether the certificate is mapped to a user in the central user database. If so, the server logs the client on as that user. If not, the client request fails. Require Client Certificates Integration Server requires client certificates for all requests. The server behaves as described for Request Client Certificates, except that the client must always provide a certificate.
Under Listener Specific Credentials, provide the following information: Note: Use these settings only if you want to use a different set of credentials from the ones specified on the Certificates Screen. For this parameter... Keystore Alias Specify... Optional. A user-specified, text identifier for an Integration Server keystore. The alias points to a repository of private keys and their associated certificates. Although each listener points to one keystore, there can be multiple keys and their certificates in the same keystore, and more than one listener can use the same keystore alias. For more information, see Creating Keystore Aliases on page 243.
118
7 Configuring Ports
Specify... Optional. The alias for the private key, which must be stored in the keystore specified by the above keystore alias. Optional. The alias for the truststore. The truststore must contain the trusted root certificate for the CA that signed Integration Server certificate associated with the key alias. The truststore also contains the list of CA certificates that Integration Server uses to validate the trust relationship.
10 On the Ports screen, click Edit to change the Access Mode if necessary. You may Set Access Mode to Allow by Default or Reset to default access settings. 11 On the Ports screen, also check the list of ports to ensure that the status in the Enabled column is Yes. If it is not, click No to enable the port.
119
7 Configuring Ports
To add a file polling port 1 2 3 4 5 6 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Add Port. In the Add Port area of the screen, select webMethods/FilePolling. Click Submit. Integration Server Administrator displays a screen requesting information about the port. Under Package, in the Package Name list, select the package associated with this port. When you enable the package, the server enables the port. When you disable the package, the server disables the port. If you are performing special file handling, specify the package that contains the services that perform that processing. If you want to process flat files from this port, select WmFlatFile, which contains built-in services you can use to process flat files. Note: If you replicate this package, whether to a server on the same machine or a server on a separate machine, a file polling port with the same settings is created on the target server. If a file polling port already exists on the target server, its settings remain intact. If the original and target servers reside on the same machine, they will share the same monitoring directory. If the target server resides on another machine, by default, another monitoring directory will be created on the target server's machine. 7 Under Polling Information, enter the following information: For this parameter... Monitoring Directory Working Directory (optional) Specify... Directory on Integration Server that you want to monitor for files. Directory on Integration Server to which the server should move files for processing after they have been identified in the Monitoring Directory. Files must meet age and file name requirements before being moved to the Working Directory. The default sub-directory, MonitoringDirectory\..\Work, is automatically created if no directory is specified.\ Directory on Integration Server to which you want files moved when processing is completed in the Monitoring Directory or Working Directory. The default sub-directory, MonitoringDirectory\..\Done, is automatically created if no directory is specified.
120
7 Configuring Ports
Specify... Directory on Integration Server to which you want files moved when processing fails. The default sub-directory, MonitoringDirectory\..\Error, is automatically created if no directory is specified. The file name filter for files in the Monitoring Directory. The server only processes files that meet the filter requirements. If you do not specify this field, all files will be polled. You can specify pattern matching in this field. The minimum age (in seconds) at which a file in the Monitoring Directory can be processed. The server determines file age based on when the file was last modified on the monitoring directory. You can adjust this age as needed to make sure the server does not process a file before the entire file has been copied to the Monitoring Directory. The default is 0. Content type to use for the file. The server uses the content handler associated with the content type specified in this field. If no value is specified, the server performs MIME mapping based on the file extension. Whether Integration Server is to poll all sub-directories in the Monitoring Directory. Select Yes or No. Whether Integration Server should allow clustering in the Monitoring Directory. Select Yes or No. Defines the polling for a particular extension.
Content Type
Under Security, in the Run services as user parameter, specify the user name you want to use to run the services assigned to the file polling directory. Click to lookup and select a user. The user can be an internal or external user. Under Message Processing, supply the following information: For this parameter... Enable Specify... Whether to enable (Yes) or disable (No) this file polling port.
121
7 Configuring Ports
Specify... Name of the service you want Integration Server to execute for polled files. The server executes this service when the file has been copied to the Working directory. This service should be the only service available from this port. Important! If you change the processing service for a file polling port, you must also change the list of services available from this port to contain just the new service. See below for more information.
How often (in seconds) you want Integration Server to poll the Monitoring Directory for files. If you select No (the default), the listener will log a message every time the monitoring directory is unavailable. If you select Yes, the listener will log a message in either of the following cases: The directory was available during the last polling attempt but not available during the current attempt The directory was not available during the last polling attempt but is available during the current attempt
For use on a UNIX system where the monitoring directory, working directory, completion directory, and/or error directory are network drives mounted on the local file system. If you select No (the default), the listener will call the Java File.renameTo() method to move the files from the monitoring directory to the working directory, and from the working directory to the completion and/or error directory. If you select Yes, the listener will first call the Java File.renameTo() method to move the files from the monitoring directory. If this method fails, the listener will then copy the files from the monitoring directory to the working directory and delete the files from the monitoring directory. This operation will fail if either the copy action or the delete action fails. The same behavior applies when moving files from the working directory to the completion and/or error directory.
he name of the service that you want to use to clean up the directories specified under Polling Information.
122
7 Configuring Ports
Specify... Whether to clean up files that are located in the Completion Directory and Error Directory when the file polling port is started. The number of days to wait before deleting processed files from your directories. The default is 7 days. How often (in hours) you want Integration Server to check the processed files for cleanup. The default is 24 hours The number of threads you want Integration Server to use for this port. Type a number from 1-10. The default is 10.
Cleanup File Age (Optional) Cleanup Interval (Optional) Maximum Number of Invocation Threads 10 Click Save Changes.
11 Make sure the port's access mode is properly set and that the file processing service is the only service accessible from the port. a b c d e f In the Ports screen, click Edit in the Access Mode field for the port you just created. Click Set Access Mode to Deny by Default. Click Add Folders and Services to Allow List. Type the name of the processing service for this port in the text box under Enter one folder or service per line. Remove any other services from the allow list. Click Save Additions. Note: If you change the processing service for a file polling port, remember to change the Allow List for the port as well. Follow the procedure described above to alter the allowed service list. g If you change the processing service for a file polling port, remember to change the Allow List for the port as well. Follow the procedure described above to alter the allowed service list.
123
7 Configuring Ports
Note: When a user logs in through an FTPS port, Integration Server can place the user in the default FTP root directory or in the client user directory. Integration Server chooses the directory based on the setting of the watt.server.login.userFtpDir parameter. For more information, see Chapter B, Server Configuration Parameters.
124
7 Configuring Ports
Specify... Package associated with this port. When you enable the package, the server enables the port. When you disable the package, the server disables the port. If you replicate this package, Integration Server creates a port with this number and the same settings on the target server. If a port with this number already exists on the target server, its settings remain intact. This feature is useful if you create an application that expects input on a specific port. The application will continue to work after it is replicated to another server.
IP address to which to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use this specific address. If you do not specify a bind address, the server picks one for you. Select this check box to prevent the FTPS listener from operating with non-secure clients.
Under Security Configuration, in the Client Authentication list, select the type of client authentication you want Integration Server to perform for requests that arrive on this FTPS port. Option Username/Password Request Client Certificates Description Integration Server prompts the client for a user ID and password. Integration Server requests client certificates for all requests. If the client does not provide a certificate, the server prompts the client for a userid and password. If the client provides a certificate: The server checks whether the certificate exactly matches a client certificate on file and is signed by a trusted authority. If so, the client is logged in as the user to which the certificate is mapped in Integration Server. If not, the client request fails, unless central user management is configured. If central user management is configured, the server checks whether the certificate is mapped to a user in the central user database. If so, the server logs the client on as that user. If not, the client request fails.
125
7 Configuring Ports
Description Integration Server requires client certificates for all requests. The server behaves as described for Request Client Certificates, except that the client must always provide a certificate.
Under Listener Specific Credentials, supply the following information: Note: Use these settings only if you want to use a different set of credentials from the ones specified on the Certificates Screen. For this parameter... Keystore Alias Specify... Optional. A user-specified, text identifier for an Integration Server keystore. The alias points to a repository of private keys and their associated certificates. Although each listener points to one keystore, there can be multiple keys and their certificates in the same keystore, and more than one listener can use the same keystore alias. For more information, see Creating Keystore Aliases on page 243. Key Alias Optional. The alias for the private key, which must be stored in the keystore specified by the above keystore alias. Optional. The alias for the truststore. The truststore must contain the trusted root certificate for the CA that signed Integration Server certificate associated with the key alias. The truststore also contains the list of CA certificates that Integration Server uses to validate the trust relationship.
Truststore Alias
8 9
Click Save Changes. On the Ports screen, click Edit to change the Access Mode if necessary. You may Set Access Mode to Allow by Default or Reset to default access settings.
10 On the Ports screen, also check the list of ports to ensure that the status in the Enabled column is Yes. If it is not, click No to enable the port.
126
7 Configuring Ports
When a user logs in through an FTP port, Integration Server can place the user in the default FTP root directory or in the client user directory. Integration Server chooses the directory based on the setting of the watt.server.login.userFtpDir parameter. For more information, see Appendix B, Server Configuration Parameters. To add an FTP port 1 2 3 4 5 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Add Port. In the Add Port area of the screen, select webMethods/FTP. Click Submit. Integration Server displays a screen requesting information about the port. Enter the following information: For this parameter... Port Package Name Specify... The number you want to use for the FTP port. Select a number that is not already in use. Package associated with this port. When you enable the package, the server enables the port. When you disable the package, the server disables the port. If you replicate this package, Integration Server creates a port with this number and the same settings on the target server. If a port with this number already exists on the target server, its settings remain intact. This feature is useful if you create an application that expects input on a specific port. The application will continue to work after it is replicated to another server. Bind Address (optional) IP address to which to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use this specific address. If you do not specify a bind address, the server picks one for you.
127
7 Configuring Ports
Specify... The address that should be sent by the PORT command. A host name or IP address can be specified. When running in passive mode, the FTP port sends a PORT command to the FTP client. The PORT command specifies the address and port to which the client should connect to create a data connection. If the FTP port is behind a NAT server, however, the address of the host on which Integration Server runs is not visible to the FTP client. Consequently the PORT command does not contain the information the client needs to connect to the server. To remedy this situation, you can specify a value for the watt.net.ftpPassiveLocalAddr property in the server configuration file (server.cnf), which is located in the Integration Server_directory\config directory (see Appendix B, Server Configuration Parameters). Alternatively, you can use the Passive Mode Listen Address field to specify the passive mode address for an individual FTP port. That way, you can specify a different passive mode address for each FTP port. If an address is specified in the Passive Mode Listen Address field and in the watt.net.ftpPassiveLocalAddr property, the PORT command uses the value specified in the watt.net.ftpPassiveLocalAddr property.
6 7 8
Click Save Changes. On the Ports screen, click Edit to change the Access Mode if necessary. You may Set Access Mode to Allow by Default or Reset to default access settings. On the Ports screen, also check the list of ports to ensure that the status in the Enabled column is Yes. If it is not, click No to enable the port.
Security Considerations
Passing a userid and password in an e-mail presents a possible security exposure. While the e-mail resides on the POP3 or IMAP server, someone might be able to access the information in the e-mail using the userid and password. To make your communication
128
7 Configuring Ports
with the e-mail server secure, you can configure Integration Server to use either explicit or implicit Transport Layer Security (TLS) through Secure Sockets Layer (SSL). Integration Server uses client certificates for implementing Transport Layer Security and authenticates the connection using the userid and password.
129
7 Configuring Ports
Specify... Password associated with the user name that identifies you to the e-mail server. Type of SSL encryption that Integration Server uses when communicating with an e-mail server. You can configure the port to use explicit, implicit, or no Transport Layer Security. Specify... None To... Default. Use a non-secure mode when communicating with an e-mail server. When you specify None, the e-mail server authenticates the e-mail client using only the username and password. Explicit Use explicit security when communicating with an e-mail server. With explicit security, Integration Server establishes an unencrypted connection to the e-mail server and then upgrades to the secure mode. With explicit Transport layer Security, Integration Server can communicate with email servers that support and do not support SSL encryption. If the e-mail server does not support Transport Layer Security, Integration Server will disconnect the connection established to the e-mail server. You can then establish an un-secure connection with the email server by selecting the None option in the Transport Layer Security field and enabling the port. Implicit Use implicit security when communicating with an e-mail server. With implicit security, Integration Server always establishes an encrypted connection to the e-mail server. Only clients that support SSL will be permitted access.
Optional. Alias for the truststore that contains certificates presented by the e-mail server to Integration Server. If you do not select a truststore alias, the default truststore alias specified in the watt.security.trustStoreAlias property will be used. For more information about this property, see the watt.security. on page 543. For more information about truststore alias, see Creating Keystore Aliases on page 243.
130
7 Configuring Ports
For this parameter... Time Interval Log out after each mail check
Specify... How often (in seconds) Integration Server is to check for emails in the POP3 or IMAP server. For use with IMAP and multithreading only. If you select Yes, Integration Server logs out a read-only thread to the IMAP mail server after checking for mail on that thread. The main read/write thread to the IMAP server remains intact. If you select No, all the read-only threads remain intact. Select Yes if your IMAP server restricts the number of connections it will allow to remain logged in.
Under Security, provide the following information: For this parameter... Run services as user Specify... If you select Yes in the Require authentication within message field, the Run services as user field remains blank because Integration Server expects the user name and password to be in the e-mail. If you select No in the Require authentication within message field, you must enter the user under which the service is to run on Integration Server. If you select Yes, Integration Server checks for $user and $pass parameters in the Subject line of the e-mail. The user name is the user under which the service is to run on Integration Server. If you select No, you must specify the user in the Run services as user field above. When you select No, appears next to this field. Click to look up and select a user. The user can be an internal or external user.
Under Message Processing, complete the following information: For this parameter... Global Service (optional) Specify... Service to be executed on Integration Server. This field overrides a service specified in the Subject line of the email. Service to be executed if the e-mail does not provide a valid service in the Subject line and the Global Service field is blank.
131
7 Configuring Ports
Specify... Click Yes if you want Integration Server to send any output generated by the service to the original sender in an e-mail attachment. Click No if you do not want to do so. If the original e-mail contained multiple attachments, the reply contains an equal number of attachments. Click Yes if you want Integration Server to report any errors that occurred during service execution to the original sender in the Body portion of an e-mail. Click No if you do not want to do so. Note: For more information about sending e-mail notifications when errors occur, see Sending Messages About Critical Issues to E-mail Addresses on page 155.
Click Yes if you want to delete a valid e-mail from the IMAP server once Integration Server has successfully received the e-mail. This setting helps prevent e-mails from accumulating on the IMAP server, possibly affecting disk space and performance. Integration Server always deletes e-mails on a POP3 server. Click No if you want to retain the e-mails on the IMAP server. Click Yes if you want to delete invalid e-mails from the IMAP server. Click No if you do want to remove these emails from the server. Invalid e-mails are those that reference services that cannot be invoked. For example, if the referenced service does not exist, the server will delete the e-mail. If the service was invoked, but encountered errors, the server considers the associated e-mail to be valid. This setting helps prevent invalid e-mails from accumulating on the IMAP server, possibly affecting disk space and performance. Integration Server always deletes e-mails on a POP3 server.
Click Yes if you want Integration Server to use multiple threads for this port. This setting allows the port to handle multiple requests at once and avoid a bottleneck. Click No if you do not need this feature.
132
7 Configuring Ports
Specify... Tells Integration Server the number of threads to use for this port. The default is set to 0. Note: If the e-mail port is configured to allow multithreading and if the e-mail port receives a large number of messages in a short period of time, the e-mail port will monopolize the server thread pool for retrieving and processing messages. This will slow down the performance of Integration Server. To avoid this, you can limit the number of threads used to process messages received by the e-mail port by setting the watt.server.email.waitForServiceCompletion property. For more information about this property, see Appendix B, Server Configuration Parameters.
Specifies whether Integration Server invokes the service for each part of a multi-part message or just once for the entire message. If you specify No, the entire e-mail is passed to the appropriate content handler and then to the specified service for execution. When you send an entire multi-part e-mail, make sure the server includes the e-mail headers from the beginning of the message, so that the content handler and/or service knows how to process the content type headers included in each part of the e-mail. See Include e-mail headers when passing message to content handler below. If you specify Yes, Integration Server treats each part of the message individually. That is, Integration Server sends each part to the content handler and then to the specified service. When you specify Yes, you probably do not want to include the e-mail headers from the beginning of the message, because each section has its own headers that the content handler and/or the service already knows how to process. See Include e-mail headers when passing message to content handler below.
133
7 Configuring Ports
For this parameter... Include e-mail headers when passing message to content handler
Specify... Specifies whether Integration Server includes the e-mail headers when passing an e-mail message to the content handler. The e-mail headers are typically found at the beginning of an e-mail message. Specify Yes if you are processing a multi-part message as a single message. This ensures that the content handler and/or service can properly process the body of the e-mail. Specify No if you are processing the different parts of an e-mail individually. If you are processing a single-part e-mail, you probably do not want to include e-mail headers. Specifies how Integration Server treats input parameters it finds in e-mail messages. With this value set to Yes, Integration Server considers a string such as ?one=1+two=2 to be a URL encoded input parameter. It then decodes this string into an IData object, puts it into the pipeline, and passes it to the service. With this value set to No, Integration Server treats the string as plain text and passes it to the appropriate content handler.
10 Click Save Changes. 11 On the Ports screen, click Edit to change the Access Mode if necessary. You may Set Access Mode to Allow by Default or Reset to default access settings. Note: If you set port access restrictions, be sure the watt.net.email.validateHost server configuration property is set to true, so Integration Server honors your IP access restrictions. 12 On the Ports screen, also check the list of ports to ensure that the status in the Enabled column is Yes. If it is not, click No to enable the port.
134
7 Configuring Ports
If you are running multiple Integration Servers on the same host machine, the diagnostic port on each server must have a unique port number. Without unique port numbers, the first Integration Server to start on the machine will have a functioning diagnostic port, but Integration Servers that start after the first one will not. To create diagnostic ports with unique numbers, you must log into each server, delete the existing diagnostic port, and create a new one with a unique port number. For information about how to delete a port, see Deleting a Port on page 144. For more information about the diagnostic port, see Chapter C, Diagnosing the Integration Server.
135
7 Configuring Ports
Specify The IP address to which you want to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use a specific address. If you do not specify a bind address, the server picks one for you. How long a connection request should stay in the queue for a suspended port, before the request is rejected. The default is set to 200 milliseconds (ms), with a maximum permissible value of 65535 ms. When to close the connection if the server has not received a request from the client within this timeout value (in milliseconds); or when to close the connection if the client has explicitly placed a close request with the server. Whether the listener will use this pool exclusively for dispatching requests. The existing Integration Server thread pool is a global thread pool. If there is a very high load on this resource, the user may have to wait for the global thread pool to process his request. However, with the private thread pool option enabled, requests coming into this port will not have to compete with other server functions for threads. Click Enable to enable the private thread pool settings. You can change or accept the default settings given below: Threadpool Min 1 Refers to the minimum number of threads. The default is set to 1. Threadpool Max 5 Refers to the maximum number of threads for this private threadpool. The default is set to 5. Threadpool Priority 5 This is the Java thread priority. Important! This setting must be used with extreme care because it will affect the server performance and throughput. Click Disable if you do not need to use the Threadpool feature.
Backlog
Threadpool
7 8 9
Click Save Changes. On the Ports screen, click Edit to change the Access Mode if necessary. You may Set Access Mode to Allow by Default or Reset to default access settings. On the Ports screen, also check the list of ports to ensure that the status in the Enabled column is Yes. If it is not, click No to enable the port.
136
7 Configuring Ports
137
7 Configuring Ports
Specify... The package associated with this port. The default package is WmRoot. When you enable the package, the server enables the port. When you disable the package, the server disables the port. If you replicate this package, Integration Server creates a port with this number and the same settings on the target server. If a port with this number already exists on the target server, its settings remain intact. This feature is useful if you create an application that expects input on a specific port. The application will continue to work after it is replicated to another server. Note: You cannot change the Package Name associated with this port. The diagnostic port must always be associated with the WmRoot package.
The IP address to which you want to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use a specific address. If you do not specify a bind address, the server picks one for you. How long a connection request should stay in the queue for a suspended port, before the request is rejected. The default is set to 200 milliseconds (ms), with a maximum permissible value of 65535 ms. When to close the connection if the server has not received a request from the client within this timeout value (in milliseconds); or when to close the connection if the client has explicitly placed a close request with the server.
Backlog
138
7 Configuring Ports
Specify... Whether the listener will use this pool exclusively for dispatching requests. The existing Integration Server thread pool is a global thread pool. If there is a very high load on this resource, the user may have to wait for the global thread pool to process his request. However, with the private thread pool option enabled, requests coming into this port will not have to compete with other server functions for threads. Click Enable if you wish to employ the private thread pool settings. You can change or accept the default settings given below: Threadpool Min 1 Refers to the minimum number of threads. The default is set to 1. Threadpool Max 5 Refers to the maximum number of threads for this private thread pool. The default is set to 5. Threadpool Priority 5 This is the Java thread priority. Important! This setting must be used with extreme care because it will affect the server performance and throughput. Click Disable if you do not need to use the Threadpool feature.
Under Security Configuration, in the Client Authentication list, specify the type of client authentication you want Integration Server to perform for requests that arrive on this HTTPS port. See Chapter 16, Authenticating Clients for more information. Option Username/Password Description Integration Server prompts the client for a user ID and password.
139
7 Configuring Ports
Description Integration Server requests client certificates for all requests. If the client does not provide a certificate, the server prompts the client for a userid and password. If the client provides a certificate: Integration Server checks whether the certificate exactly matches a client certificate that is on file and signed by a trusted authority. If so, the client is logged in as the user to which the certificate is mapped in Integration Server. If not, the client request fails, unless central user management is configured. If central user management is configured, Integration Server checks whether the certificate is mapped to a user in the central user database. If so, the server logs the client on as that user. If not, the client request fails.
Integration Server requires client certificates for all requests. The server behaves as described for Request Client Certificates, except that the client must always provide a certificate.
Under Listener Specific Credentials, enter the following information: Note: Use these settings only if you want to use a different set of credentials from the ones specified on the Certificates Screen. For this parameter... Keystore Alias Specify... Optional. A user-specified, text identifier for an Integration Server keystore. The alias points to a repository of private keys and their associated certificates. Although each listener points to one keystore, there can be multiple keys and their certificates in the same keystore, and more than one listener can use the same keystore alias. For more information, see Securing Communications with the Server on page 235. Key Alias Optional. The alias for the private key, which must be stored in the keystore specified by the above keystore alias.
140
7 Configuring Ports
Specify... Optional. The alias for the truststore. The truststore must contain the trusted root certificate for the CA that signed Integration Server certificate associated with the key alias. The truststore also contains the list of CA certificates that Integration Server uses to validate the trust relationship.
10 On the Ports screen, click Edit to change the Access Mode if necessary. You may Set Access Mode to Allow by Default or Reset to default access settings. 11 On the Ports screen, also check the list of ports to ensure that the status in the Enabled column is Yes. If it is not, click No to enable the port.
141
7 Configuring Ports
To resume an HTTP or HTTPS port 1 2 3 4 5 6 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. In the Port List table, click Edit in the Advanced column for the port you want to resume. Under Listener Controls, select the Resume check box. Click Apply to save your changes. Click Return to Ports to return to the Security > Ports screen.
142
7 Configuring Ports
If the value specified for watt.net.ftpPassivePort.min is less than 1, a default value of 1 is used. If the value specified for watt.net.ftpPassivePort.max is greater than 65534, a default value of 65534 is used. When both of these conditions exist simultaneously, FTP/FTPS listeners continue the previous behavior of listening on any free port. An error message is returned to the FTP/FTPS client on the command channel when the specified values do not fall within the expected range. For example, if one of the properties is not defined, if the watt.net.ftpPassivePort.min value is larger than the watt.net.ftpPassivePort.max value, or if one of the properties is not a valid number. An error message is also returned when all the ports in the specified port range are in use. Specific details of the error messages are available in the serverYYYYMMDD.log file. You can modify the port range properties in Integration Server Administrator at any time. Complete the following steps to specify a port range for FTP and FTPS port listeners. To specify a port range for FTP and FTPS listeners 1 2 3 Start Integration Server and log on to Integration Server Administrator. In Integration Server Administrator, select Extended in the Settings area of the Navigation panel. If the watt.net.ftpPassivePort.min and watt.net.ftpPassivePort.max parameters do not appear the Extended Settings list, do the following: a b c 4 5 Select Show and Hide Keys. Select the check boxes next to watt.net.ftpPassivePort.min and watt.net.ftpPassivePort.max. Click Save Changes.
On the Settings4Extended page, click Edit Extended Settings. Do the following: For this extended setting... watt.net.ftpPassivePort.min watt.net.ftpPassivePort.max Enter this value... Minimum_Port_Number Maximum_Port_Number
Values for Minimum_Port_Number and Maximum_Port_Number are port numbers from 1 to 65534. When a port range is specified with these properties, only the ports within the specified minimum and maximum port range (inclusive) are used as the listening ports for incoming FTP/FTPS client data connections. You must specify both a minimum and maximum setting. Click Save Changes.
143
7 Configuring Ports
Deleting a Port
If you no longer need a port, you can delete it. Important! You cannot delete the primary port defined for the server.
To delete a port 1 2 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports.
144
7 Configuring Ports
Locate the port in the Port List, and click the icon in the Delete column. The server displays a dialog box that prompts you to confirm your action. Click OK to confirm that you want to delete the port.
Editing a Port
After adding a port, you can edit the port configuration. The port must be disabled before you can edit the configuration. To edit a port 1 2 3 4 5 6 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Locate the port you want to edit and click on the port number. Click Edit <port type> Port Configuration. Update the information for the port. Click Save Changes.
Disabling a Port
Complete the following steps to disable a port.
145
7 Configuring Ports
To disable a port 1 2 3 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Locate the port in the PortList, and click the icon in the Enabled column to disable the port. The server displays a dialog box that prompts you to verify your action. Click OK to verify you want to disable the port. The server replaces the icon with No to indicate that the port is now disabled.
Enabling a Port
Complete the following steps to enable a port. To enable a port 1 2 3 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Locate the port in the Port List, and click No in the Enabled column to enable the port. The server displays a dialog box that prompts you to verify your action. Click OK to verify you want to enable the port. The server replaces the No with the icon to indicate that the port is now enabled.
146
7 Configuring Ports
Click Edit HTTPS Port Configuration or Edit FTPS Port Configuration to update the information in the fields, as necessary. For field descriptions, see About Adding an HTTPS Port on page 116 or About Adding an FTPS Port on page 123, respectively. Click Save Changes. Enable the port by clicking No in the Enabled column.
6 7
147
7 Configuring Ports
If the keystore type is not supported, modify the properties watt.security.keyStore.supportedTypes and watt.security.trustStore.supportedTypes to add a new keystore type for the keystore and truststore.
148
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specifying Amount and Type of Information to Include in the Server Log . . . . . . . . . . . . . . . . . . Specifying Whether to Queue Server Log Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overriding Logging Level and Server Log Location for a Session . . . . . . . . . . . . . . . . . . . . . . . . Changing the Default Server Log Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sending Messages About Critical Issues to E-mail Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . Performing Additional Processing on Log Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Server Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Log Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Globalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
149
Overview
The Integration Server server log contains information about operations and errors that occur on Integration Server, such as the starting of Integration Server subsystems and the loading of packages belonging to Integration Server or other webMethods products. Entries are written to the server log by Integration Server's major subsystems, called facilities. For example, the Integration Server package facility writes server log entries when it loads and unloads packages, the Integration Server flow manager facility writes server log entries when it processes a flow service, and Integration Server's HTTP ports write server log entries when they receive requests. Entries are also written to the server log by facilities for individual products that are installed on Integration Server, such as Trading Networks Server or adapters. Below is an excerpt from a sample server log.
2009-04-22 17:20:45 EDT [ISS.0028.0012I] WmRoot: Startup service (wm.server.soap:init) 2009-04-22 17:20:46 EDT [ISS.0028.0012I] WmRoot: Startup service (wm.server.dbalias:initRepoAlias) 2009-04-22 17:20:46 EDT [ISS.0028.0012I] WmRoot: Startup service (wm.server.tspace:init) 2009-04-22 17:20:46 EDT [ISS.0028.0012I] WmRoot: Startup service (wm.server.ws:init) 2009-04-22 17:20:46 EDT [ISS.0028.0012I] WmPublic: Startup service (pub.ldap:init) 2009-04-22 17:20:46 EDT [ISS.0028.0012I] WmPublic: Startup service (pub.storage:startup) 2009-04-22 17:20:46 EDT [WmSharedCacheSC.config.0595I] Reading cache configuration: distributedCache 2009-04-22 17:20:50 EDT [ISS.0028.0012I] WmVCS: Startup service (wm.server.vcsadmin:startup) 2009-04-22 17:20:50 EDT [VCS.0132.0050I] VCS package initializing 2009-04-22 17:20:50 EDT [ISS.0028.0012I] WmVCS: Startup service (wm.server.vcsui:addSolutions) 2009-04-22 17:20:50 EDT [ISS.0028.0012I] WmART: Startup service (wm.art.admin:startup) 2009-04-22 17:20:50 EDT [ISS.0028.0012I] WmXSLT: Startup service (wm.xslt.Admin:startup) 2009-04-22 17:20:50 EDT [ISS.0028.0012I] WmAssetPublisher: Startup service (wm.server.metadata.admin:startup) 2009-04-22 17:20:50 EDT [ISS.0138.0052I] Asset Publisher package initializing 2009-04-22 17:20:50 EDT [ISS.0028.0012I] WmISExtDC: Startup service (com.wm.isextdc.PkgInit:init) 2009-04-22 17:20:50 EDT [ISS.0028.0012I] WmARTExtDC: Startup service (com.wm.artextdc.pkginit:init) 2009-04-22 17:20:50 EDT [ISP.0046.0012I] Enabling HTTP Listener on port 9999 2009-04-22 17:20:50 EDT [ISP.0046.0012I] Enabling HTTP Listener on port 5555 2009-04-22 17:20:50 EDT [ISP.0046.0012I] Enabling HTTP Listener on port 6666 2009-04-22 17:20:50 EDT [ISS.0098.0021I] Persistent Trigger Output Dispatcher started 2009-04-22 17:20:50 EDT [ISS.0098.0021I] Volatile Trigger Output Dispatcher started 2009-04-22 17:20:50 EDT [ISS.0098.0027I] PersistenceManager started all Stores 2009-04-22 17:20:50 EDT [ISS.0025.0036I] Dispatcher started 2009-04-22 17:20:50 EDT [ISS.0025.0005I] Port Manager started
150
2009-04-22 17:20:50 EDT [ISS.0025.0013I] Cache Sweeper started 2009-04-22 17:20:50 EDT [ISS.0014.0002C] Initialization completed in 21 seconds. 2009-04-22 17:20:51 EDT [ISS.0025.0016I] Config File Directory Saved
By default, all facilities write to the server log, and the facilities write log entries about critical, error, warning, informational, and debug-related situations. You can have only selected facilities write to the log, and you can increase or decrease the amount of data the facilities provide. This flexibility is useful for troubleshooting. For example, you might temporarily increase the level of detail written to the server log to help uncover the cause of an Integration Server error or performance problem, and return to a lower level once the problem is resolved. You can also override the amount of information to include in the server log for a particular Integration Server session. By default, Integration Server queues log entries written by its facilities in memory, then uses a background thread to write them to the server log. You can change that property so that facilities write directly to the server log. Using a background thread improves Integration Server performance, but writing directly causes the entries to appear in the server log more quickly. Integration Server always writes server log entries to flat files; you cannot store the server log in a database. Integration Server writes server log entries for the current day (defined as midnight to midnight) to the server.log file. Integration Server copies the log entries for the current day to an archive file on the following day. The archive file names include the date (yyyymmdd) on which the log entries were originally written. All log and archive files are stored in the Integration Server_directory\logs directory. You can override the location of the server log files for a particular session.
151
Do one or more of the following: To change the level for... The Default node Take this action... Click the level to use in the Logging Level list for the Default node. Integration Server Administrator resets all products and facilities that inherit from the Default node to the new level Click the level to use in the Logging Level list for the product node. Integration Server Administrator resets all facilities that inherit their values from the product to the new level. If you change a level and later want it to inherit from its parent node again, reset the level to the level of the parent node.
A particular product
A particular facility 5
For more information about logging levels, see Logging Levels on page 152 Important! Recording more information consumes more system resources.
Logging Levels
The logging levels that you can specify are described below. Each logging level includes the indicated type of message plus all messages from the levels above it (for example, the Warn level includes Fatal, Error, and Warn messages). Level Fatal Integration Server records these entries... Failures that end operations in such a way that the operations cannot successfully continue without user intervention. Failure is very likely to affect other operations or products. Same as Fatal, except that existing error handling renders the failure unlikely to affect other operations or products. Problems that do not end operations, or unexpected or unusual conditions that might signal impending failure. Success of an event that you need to know about. Code-level statements recording unusual conditions or decisions that might lead to errors. Examples Product cannot read its configuration file and has no default settings
Error
Business process step failed due to a service error caused by bad input data Multiple registered JMX servers were discovered when only one is needed Package loaded, or connection pool initialized Expected an object to be initialized but it is not, or hash table is empty
Warn
Info Debug
152
Integration Server records these entries... Code-level statements recording program flow and state during normal execution. No information for the product or facility is written to the server log.
2 3 4 5 6 7
153
To override log level and server log location for a session 1 2 Open a command window and go to the Integration Server installation directory. Start Integration Server by entering this command: For Windows: bin\startup.bat [-debug level] [-log {filename | none}] For UNIX: bin/startup.sh [-debug level] [-log {filename | none}] Options for these commands are shown below. Option level Description Amount of information to record for all products and facilities listed on the Settings > Logging > View Server Logger Details page for this session. For possible values, see Specifying Amount and Type of Information to Include in the Server Log on page 151. For this session only, this option overrides the values specified on the Settings > Logging > View Server Logger Details page and on the watt.debug.level property. filename Fully qualified or relative path to the file in which to write the server log for this session. For this session only, this option overrides the value specified on the watt.debug.logfile property. none Displays the server log on your console. Integration Server records a timestamp with no other information in the server log file for this session. For this session only, this option overrides the value specified on the watt.debug.logfile property.
2 3
154
4 5
Click Edit Extended Settings. In the Extended Settings box, set the property as follows:
watt.debug.logfile=path to server log file directory
From the Truststore Alias list, select the alias for the truststore that contains the list of certificates that Integration Server uses to validate the trust relationship between Integration Server and the SMTP server. If you do not select a truststore alias, the default truststore alias specified in the watt.security.trustStoreAlias property will be used. For more information about this property, see watt.security. on page 543. For more information about truststore alias, see Creating Keystore Aliases on page 243. In the Internal Email field, type the e-mail address to which to send messages about critical log entries. Typically, you would specify the e-mail address for the Integration Server Administrator.
155
In the Service Email field, type the e-mail address to which to send messages about service failures. In a development environment, you might direct these messages to the developer. In a production environment, you might direct these messages to the Integration Server Administrator. By default, Integration Server uses character set UTF-8 for the messages. If you want to use a different character set, identify the character set in the Default E-mail Charset field. Click Save Changes. Integration Server connects to the specified SMTP server on:
Port 25 if Integration Server uses explicit or no Transport Layer Security. Port 465 if Integration Server uses implicit Transport Layer Security.
The default is 25. When sending a message, by default, Integration Server provides its own address (the From Address) as Integration-Server@localhost, where localhost is the Integration Server host machine. If you want to change this property, follow these steps: a In Integration Server Administrator, go to the Settings > Extended page. Integration Server Administrator displays a list of Integration Server configuration properties you can change using this method. Click Edit Extended Settings. In the Extended Settings box, set the set the property as follows: watt.server.email.from=new From Address to use c d Click Save Changes. Restart Integration Server.
156
To see a list of logging facilities, go to the Settings > Logging page in Integration Server Administrator. Integration Server gets the time zone value from your JVM. Note: In the default message format, the log level is displayed as one character and will be one of the following: C (Fatal), E (Error), W (Warn), I (Info), D (Debug), T (Trace). Your logging level setting determines the types of messages you see in the server log). See Specifying Amount and Type of Information to Include in the Server Log on page 151 for more information about logging levels. The following table shows some product codes: Code ISU, ISS, ISC, ISP, JBS, BAS, BAT, BAA, BAJ, BAL, BAP, BAR, BAU, BAC, BAB, BAF, BAQ ART MNP MOD MON SAP TNS, TNC Meaning Internal Integration Server facilities/components
Adapter runtime facilities Mainframe package webMethods Monitor (Facility 119) webMethods Monitor (Facility 120 Monitor DB) SAP Adapter Trading Networks
157
From the Settings > Extended page, click Show and Hide Keys. Integration Server Administrator displays a list of the Integration Server configuration properties you can change using this method.
4 5 6 7 8 9
Select the check box next to the watt.debug.layout property. Click Save Changes. displays the property in the Extended Settings box. Click Edit Extended Settings. In the Extended Settings box, set the property to legacy if you want to use the default format or to new if you want to use the alternative format. Click Save Changes. Restart Integration Server.
10 Your logging level setting (see Specifying Amount and Type of Information to Include in the Server Log on page 151 determines the types of messages you see in the server log).
158
159
Select the check box next to the properties you want to change: If you want to change... The default for the Number of entries to display field The refresh interval for log entries Select this property... watt.server.log.maxEntries watt.server.log.refreshInterval
4 5 6
Click Save Changes. Integration Server Administrator displays the property in the Extended Settings box. Click Edit Extended Settings. In the Extended Settings box, set each property to a positive integer. Click Save Changes. Changes take effect immediately.
Globalization
If a webMethods product is equipped with webMethods language packs and some of those language packs correspond to the language used by the operating environment in which the product is running, the product writes its log entries in the language used by the operating system. If the product is equipped with no language packs or with language packs that do not correspond to the language used by the operating system, the product writes its log entries in U.S. English. Suppose your operating environment uses Japanese as its language. You have installed language packs including the Japanese Language Packs on Integration Server, so Integration Server stores its own log entries in Japanese. You have not installed the Japanese Language packs on Trading Networks, so Integration Server stores Trading Networks' log entries in U.S. English. Note: Even if no language packs are installed on the webMethods product and the product is using U.S. English, Integration Server might store log entries from external sources, such as database drivers or adapter resources, in the language used by the operating environment in which the product is running.
160
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Default Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About the Trigger Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Maintaining Inbound Document History for Received Documents . . . . . . . . . . . . . . . . . . . . . . . . Enabling Inbound Client-Side Queuing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About the Outbound Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Associating a User Account with Broker/Local Trigger Services . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Heap Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
161
Overview
Integration Server uses document stores to save documents to disk or to memory while the documents are in transit or waiting to be processed. Integration Server maintains three document stores for published documents. Default document store. The default document store contains documents delivered to the client ID of the Integration Server. When Integration Server retrieves documents delivered to its client ID, the server places the documents in the default document store. Documents remain in the default document store until the dispatcher determines which triggers subscribe to the document. The dispatcher then moves the documents to the trigger queues for the subscribing triggers. Trigger document store. The trigger document store contains documents waiting to be processed by Broker/local triggers. Integration Server assigns each trigger a queue in the trigger document store. A document remains in the trigger queue until the server successfully processes the document. Outbound document store. The outbound document store contains documents waiting to be sent to the Broker. Integration Server places documents in the outbound document store when the configured Broker is not available. When the connection to the Broker is restored, Integration Server empties the outbound document store by sending the saved documents to the Broker. Using Integration Server Administrator, you can configure properties for each document store.
162
Set the Default Document Store parameters as follows: For this parameter Store Location Specify... The location of the default document store. By default, the Integration Server saves document stores in the following directory: Integration Server_directory\DocumentStore If you want to save the default document store in a different location, specify the directory in this field. If the directory does not exist, the server creates it. Important! Make sure that you have write access to the specified directory and that the directory does not contain any characters considered illegal by your operating system. Initial Store Size (MB) The amount of disk space allocated to the default document store at start up. The default store automatically increases when it receives data that exceeds the initial size. The default size is 25MB. When setting the Initial Store Size, consider the size and volume of documents that you expect to be delivered to the default document store. If you expect large documents or a high volume of documents, consider increasing the Initial Store Size. Important! Make sure that there is enough free disk space on the Integration Server machine to accommodate the initial sizes of the default document store, the trigger document store, and the XA recovery store. Capacity The maximum number of documents in the default document store. The default is 10 documents. The Capacity must be greater than the Refill Level. If you set Capacity to 0, the server automatically suspends the Refill Level. If you set the Capacity field to 0, the server displays "Suspended" next to the field on the Settings > Resources > Store Settings page. Note: The Capacity field displays "Broker Not Configured" if there is not a Broker configured for the server.
163
Specify... The number of unprocessed documents that remain in the default document store before the Integration Server retrieves more documents from the Broker. For example, if you assign the default document store a Capacity of 10 and a Refill Level of 4, the server initially retrieves ten documents. When only four documents remain to be processed in the default document store, the server retrieves six more documents. If six documents are not available, the server retrieves as many as possible. The default refill level is 4 documents. The Refill Level must be less than Capacity. If you set Capacity to 0, the server automatically suspends the Refill Level. Note: The Refill Level field displays "Broker Not Configured" if there is not a Broker configured for the server.
5 6
Click Save Changes. If you changed one or more parameters that require server restart for the new value to take effect, restart Integration Server. Note: An asterisk (*) next to a parameter indicates that you need to restart the server for changes to take effect.
164
To configure the trigger document store 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Resources. Click Store Settings, and then click Edit Document Store Settings. Set the Trigger Document Store parameters as follows: For this parameter Store Location Specify... The location of the trigger document store. By default, the Integration Server saves the trigger document store in the following directory: Integration Server_directory\DocumentStore If you want to save the trigger document store in a different directory, specify the directory in this field. If the directory does not exist, the server creates it. Important! Make sure that you have write access to the specified directory and that the directory does not contain any characters considered illegal by your operating system. Initial Store Size (MB) The amount of disk space allocated to the trigger document store at start up. The trigger document store automatically increases when it receives data that exceeds the initial size. The default size is 35MB. Important! Make sure that there is enough free disk space on the Integration Server machine to accommodate the initial sizes of the default document store, the trigger document store, and the XA recovery store. 5 Click Save Changes.
165
If you changed one or more parameters that require server restart for the new value to take effect, restart Integration Server. Note: An asterisk (*) next to a parameter indicates that you need to restart the server for changes to take effect.
166
Configuring the Rate at which Integration Server Drains the Outbound Document Store
To configure how quickly Integration Server empties the outbound document store 1 2 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Resources.
167
3 4
Click Store Settings, and then click Edit Document Store Settings. Under Outbound Document Store, in the Maximum Documents to Send per Transaction, type the number of documents the server should send from the outbound document store to the Broker for each transaction. If there is no configured Broker, the Integration Server Administrator displays "Broker Not Configured" next to the field name.
168
receiveCustomerInfo trigger contains a condition that associates a publishable document type with the service addCustomer. The addCustomer service specifies "Replicator" for the Execute ACL. When the trigger condition is met, the addCustomer service will not execute because the user setting you selected (Developer) does not have the necessary credentials to invoke the service (Replicator).
Administrator. Used to access the Integration Server Administrator to configure and manage the server. Default. Used when the client does not supply a user name and password. Developer. Used to connect to the server from Software AG Designer or webMethods Developer to create, modify, and delete services that reside on the server. Replicator. Used during package replication.
169
The procedure you use to change the setenv.bat or setenv.sh file depends on whether Integration Server runs on Windows or Unix, and, if Integration Server runs on Windows, whether it runs as an application or a Windows service. For the appropriate procedure, refer to Chapter 3, Starting and Stopping the Server.
170
10
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring an Integration Server-to-Broker Server Connection . . . . . . . . . . . . . . . . . . . . . . . . . Specifying the Keep-Alive Mode for the Broker Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchronizing Broker Clients When the Primary Port for Integration Server Changes . . . . . . . . Changing the Configured Broker on Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connecting Multiple Non-Clustered Integration Servers to the Same Broker . . . . . . . . . . . . . . .
171
Overview
As backbone of the webMethods product suite enterprise solution, the Broker's role is to manage the routing of documents between applications running on different Integration Servers. For an Integration Server to join in this process, it must first be configured to connect to Broker.
172
Specify... Broker client group to which this Integration Server belongs. A client group defines a single set of properties and access permissions assigned to one or more clients (here, Integration Servers) on a single Broker. If the specified client group does not exist, the Integration Server creates it on the named Broker upon establishing its initial connection. Important! Brokers do not share can-publish and can-subscribe permissions across client groups. If you switch an Integration Server from one client group to another, you must restart the Integration Server and synchronize all publishable document types with the Broker. Next, you must shut down the server and use My webMethods to delete all of the Broker clients created for the server with the changed client group. Restart the server with the changed client group.
Client Prefix
A string that identifies the Integration Server to the Broker. By default, the server generates an obscure value for the prefix. For ease of use, you may want to replace it with a friendly name. The Broker Manager displays this prefix for each client it creates for the server. (The Broker creates multiple clients for each server that connects to it.) If your Integration Server belongs to a cluster, make sure all servers in the cluster use the same client prefix.
Specify whether you want the Integration Server to share a client prefix. Yes indicates that the client prefix may be shared among multiple Integration Servers. If the Integration Server belongs to a cluster, this option is automatically enabled. If the Integration Server does not belong to a cluster, you can enable or disable this option. Non-clustered Integration Servers that share a client prefix, belong to the same client group, and have the same triggers can connect to a single Broker and operate in a load-balanced fashion. For more information about configuring Integration Servers to receive messages from the Broker in a load-balanced fashion, see Connecting Multiple Non-Clustered Integration Servers to the Same Broker on page 179.
173
Specify... The type of authentication Integration Server client will use to connect to the Broker. Choose one of the following options: None. Select this option if the Broker is configured to accept anonymous connections. Username/Password. Select this option if the Broker uses basic client authentication. If you select this option, specify the user name and password the client will use in the Username and Password fields. SSL. Select this option if Integration Server connects to the Broker using the SSL port. If you select this option, configure the SSL parameters by providing the following information. Parameter... Keystore Specify... The full path to this Integration Server's keystore file. A keystore file contains the credentials (private key/signed certificate) that an entity needs for SSL authentication. If the Broker Server requires an SSL connection, then the information in this file is used to authenticate the Integration Server client to that Broker Server. The Integration Server's keystore file is stored on the machine on which the Integration Server resides. Keystore Type The file type of the Integration Server's keystore file, which can be either PKCS12 or JKS. Password required to access the SSL certificate in the Integration Server's keystore file.
Specify whether or not to encrypt the connection between the Integration Server and the Broker. Note: When you set Client Authentication to SSL, Encryption must be set to Yes. If you select Yes for the Encryption parameter, configure the following truststore parameters. Parameter... Specify...
174
Specify... Truststore The full path to this Integration Server client's truststore file. A truststore file contains trusted root certificates for the authorities responsible for signing SSL certificates. For an SSL connection to be made, a valid trusted root for the SSL certificate stored in the keystore must be accessible in a truststore file. The Integration Server's truststore file is stored on the machine on which the Integration Server resides. Truststore Type The file type of the Integration Server's truststore file, which is JKS.
Click Save Changes. Note: If you switch your Integration Server connection from one Broker to a Broker in another territory, you may need to synchronize your publishable document types with the new Broker. Switching your Broker connection is not recommended or supported. For more information about synchronizing publishable document types, see webMethods Service Development Help.
For more information about Broker, and configuring SSL for Broker, see Administering webMethods Broker.
175
shared-state client. The Broker cannot distinguish the reconnection of one client from the ordinary reconnections of other clients with the same client ID. The unacknowledged documents retrieved by the now disconnected client will not be made available for redelivery until the Broker receives an explicit disconnect notice (generally, when the TCP/IP connection finally times out). In some cases, this might be hours later. To avoid a situation in which unacknowledged documents stay on the Broker for an unacceptable period of time, you can select a keep-alive mode that will disconnect unresponsive clients and make unacknowledged documents available for redelivery. Note: For more information about the Broker keep-alive feature and about shared-state clients, see the webMethods Broker Java Client API Reference. You can configure one of the following keep-alive modes: Normal. The Broker sends a keep-alive message to the Integration Server at a specified time interval (keep-alive period) and expects a response within another specified time interval (max response time). If the Broker does not receive a response, it will retry up to the number of times specified by the retry count. If the Integration Server still does not respond to the keep-alive message, the Broker explicitly disconnects the Integration Server. Normal is the default mode. For example, by default, the Broker sends the Integration Server a keep-alive message every 60 seconds. If the Integration Server does not respond within 60 seconds, the Broker sends up to three more keep-alive messages before disconnecting the Integration Server. (The default retry count is 3.) Listen Only. The Broker disconnects the Integration Server if there is no activity from the Integration Server over a specified time interval (keep-alive period). In listen only mode, the Broker does not send keep-alive messages to the Integration Server and ignores the retry count. For example, suppose that the Broker expects activity from the Integration Server every 60 seconds. If there is no activity from the Broker after 60 seconds, the Broker disconnects the Integration Server. Disabled. The Broker disables keep-alive interaction with this Integration Server. The Broker does not send keep-alive messages and does not disconnect the Integration Server because of inactivity. Note: The Broker does not communicate directly with Integration Server. The Broker Client API facilitates communication between Broker and Integration Server.
176
watt.server.brokerTransport.dur. Specifies the number of seconds of idle time that the Broker waits before sending a keep-alive message to Integration Server. This is the keep-alive period. The default is 60 seconds. watt.server.brokerTransport.max. Specifies the number of seconds that the Broker waits for the Integration Server to respond to a keep-alive message. This is the max response time. The default is 60 seconds. watt.server.brokerTransport.ret. Specifies the number of times the Broker re-sends keep-alive messages before disconnecting an un-responsive Integration Server. This is the retry count. The default is 3. For information about setting a keep-alive mode using these parameters, see the sections that follow. For more information about these parameters, see Appendix B, Server Configuration Parameters.
Normal Mode
Use the settings in the following table to configure normal keep-alive mode. This is the default mode. Set this parameter... watt.server.brokerTransport.dur watt.server.brokerTransport.max watt.server.brokerTransport.ret To... Any integer greater than 0 but less than 2147483647. The default is 60. Any integer greater than 0 but less than or equal to 2147483647. The default is 60. Any integer between 1 and 2147483647. The default is 3.
Disabled
Use the settings in the following table to disable keep-alive mode.
177
Synchronizing Broker Clients When the Primary Port for Integration Server Changes
It is important to establish the primary port for your Integration Server before connecting your server to the Broker. However, if you change the server's primary port number after configuring the Broker, the Broker client for your Integration Server may become unsynchronized with your Integration Server's configuration. If you change the server's primary port after connecting to the Broker, you need to synchronize your Broker clients to the Integration Server's new port configuration. To synchronize Broker clients with the Integration Server's primary port 1 2 3 Using the Broker user interface, delete the clients that reflect the server's original primary port number, for example 10.3.33.129_5555_DefaultClient. Delete the dispatch.cnf file from the Integration Server_directory\config directory. Reconfigure the server to connect to the Broker, using the procedure described in Configuring an Integration Server-to-Broker Server Connection on page 172.
178
5 6 7 8 9
Set the Configured property to No. Click Save Changes, then restart Integration Server. Open the Edit Broker Settings as described in steps 1-4. Configure the connection to the new Broker. Click Save Changes, then restart Integration Server.
Important Considerations
Keep the following points in mind when determining whether or not to connect a nonclustered group of Integration Servers to the same Broker for load-balancing: The Integration Servers in the group must be version 7.1 or later. This configuration applies to Broker triggers and JMS triggers. The Integration Servers in the group must share the same client prefix, belong to the same client group, and have the same triggers. The Integration Servers in the group may share a document history database and a cross-reference database.
179
This configuration does not support features such as cross-referencing, duplicate document detection, AND or XOR joins, and synchronization of trigger client queues on the Broker. To use these features, the Integration Servers must belong to a cluster. Note: If Integration Servers are in a non-clustered group, modifying a Broker trigger on one of the Integration Servers could delete documents and other data on the Broker. For example, if you enable a trigger, disable a trigger, or change the processing mode, a non-clustered Integration Server deletes and then recreates the associated trigger client queue on the Broker. This action deletes any documents that are in the trigger client queue on the Broker. Note: In a cluster of Integration Servers, if a Broker trigger is modified on one of the servers, that server will not synchronize the Broker trigger changes with the associated trigger client queue on the Broker. If you enable or disable a trigger in a cluster of Integration Servers, the associated trigger client queue and its subscriptions remain on the Broker.
180
11
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with JNDI Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with JMS Connection Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Administered Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitoring a Connection Factory Object for Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using SSL with JMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Supported JMS Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding JMS Provider Client Libraries to Integration Server Classpath . . . . . . . . . . . . . . . . . . . .
181
Overview
To configure Integration Server for JMS messaging, you need to: Create one or more JNDI provider aliases to specify where Integration Server can look up administered objects when it needs create a connection to JMS provider or specify a destination for sending or receiving messages. Create one or more connection aliases that encapsulate the properties that Integration Server needs to create a connection with the JMS provider. Integration Server also includes various server configuration properties that you can use to change the default server behavior. For a list of server configuration parameters related to JMS, see Appendix B, Server Configuration Parameters
182
Specify the following information for the JNDI provider alias: Specify... The alias name that you want to assign to this JNDI provider. A description for this JNDI alias. The JNDI template that you want to use. The JNDI templates provide information that you can use to complete alias configuration for a specific provider. Note: After you create a JNDI provider, Integration Server Administrator displays Current Settings as the value of the Predefined JNDI Templates field. This indicates that Integration Server uses the currently specified settings for the JNDI provider alias.
The class name of the JNDI provider. The JNDI provider uses the initial context as the starting point for resolving names for naming and directory operations. If you selected a pre-defined JNDI template, Integration Server displays the initial context factory for the provider.
Provider URL
The primary URL of the initial context for sessions with the JNDI provider. The URL specifies the JNDI directory in which the JNDI provider stores JMS administered objects. If you selected a pre-defined JNDI template, replace the placeholder information in brackets << >> with information specific to your configuration.
The failover URLs of the initial context for sessions with the JNDI provider. If the connection to the primary JNDI provider becomes unavailable, Integration Server automatically attempts a connection to a JNDI provider specified in this list. For more information about setting up a JNDI provider failover list, see Creating a JNDI Provider Failover List on page 185.
Security Principal
The principal name, or user name supplied by Integration Server to the JNDI provider, if the provider requires one for accessing the JNDI directory. For information about whether or not the JNDI provider requires security principal information, consult the product documentation for the JNDI provider.
183
Specify... The credentials, or password, that Integration Server provides to the JNDI provider, if the provider requires security credentials to access the JNDI directory. For information about whether or not the JNDI provider requires security credentials, consult the product documentation for the JNDI provider.
Other Properties
Any additional properties the JNDI provider requires for configuration. For example, you might need to specify the classpath for any additional .jar or class files that the JNDI provider needs to connect to the JNDI. When you select a pre-defined JNDI template, Integration Server populates this field with any additional properties and placeholder information required by the JNDI provider. For more information about additional properties or classes required by a JNDI provider and the location of those files, see the product documentation for the JNDI provider.
5 6
184
To delete a JNDI provider alias 1 2 3 4 Open Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Under JMS Configuration, click JNDI Settings. Locate the alias you want to delete and click the icon in the Delete field. Integration Server displays a dialog box that prompts you to verify your action. Click OK to verify that you want to delete the JNDI provider alias.
185
To perform a test lookup for a JNDI provider 1 2 3 4 Open Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Under JMS Configuration, click JNDI Settings. Locate the alias you want to test and click the icon in the Test Lookup field.
Integration Server returns a list of the Objects located in the JNDI namespace. Note: The list displays the Objects in the JNDI namespace referenced by the first successful provider alias URL lookup. Therefore, the results displayed may or may not be from the primary alias, they could be from a failover alias.
186
Keep in mind that, because Integration Server caches the destinations locally, it is possible that the cached destinations may become stale. In this case, the original destination will be used. You can reload administered objects by enabling and disabling the connection alias or monitoring the connection object for changes. If the administered objects are no longer usable, a ServiceException will occur. For more information about monitoring connections, see Monitoring a Connection Factory Object for Changes on page 199.
Connecting to the webMethods JMS Provider with the Native webMethods API
You can configure a JMS connection alias to use the native webMethods API to connect to the webMethods JMS Provider. The native webMethods API provides a way to connect the Integration Server directly to the webMethods Broker acting as the webMethods JMS Provider. This eliminates the need for connection factories. Destinations can be created directly on the webMethods Broker and do not need to be stored in JNDI provider. Consequently, you do not need to use a JNDI provider if all JMS connection aliases specify that the connection to the JMS provider should be made using the native webMethods API. If you choose to use the webMethods JMS Provider but do not want to connect natively (using the native webMethods API), you still need to use a JNDI provider.
187
Each JMS connection alias has an associated transaction type. Within Integration Server, certain functionality must be completed within a non-transacted session. For example, to use Integration Server to send or receive large message streams, you must specify a JMS connection alias whose transaction type is set to NO_TRANSACTION. Each JMS connection alias can specify whether Designer users can create, list, and modify Destinations and durable subscribers at the webMethods Broker using the JMS trigger editor. For more information, see Allowing Destinations to be Managed through the JMS Connection Alias and Designer on page 194. If you use the webMethods JMS Provider (webMethods Broker) version 7.1 or later, you can configure a JMS connection alias so that it creates a separate connection to the JMS provider for each JMS trigger that uses the alias. If you want a concurrent JMS trigger to use multiple connections to the JMS provider, you must configure the alias to create a separate connection per trigger. For more information, see Allowing Multiple Connections for a JMS Connection Alias on page 195. If a JMS connection alias connects to the webMethods JMS Provider using webMethods Connection Factory objects in a JNDI server, you can configure Integration Server to monitor a connection factory object for each JMS connection alias. For more information, see Monitoring a Connection Factory Object for Changes on page 199. To create a JMS connection alias 1 2 3 4 5 Open Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Under JMS Configuration, click JMS Settings. Click Create JMS Connection Alias. Set the following General Settings for the JMS connection alias: Specify... Name of the connection alias. Each connection alias represents a connection factory to a specific JMS provider. A description of the JMS connection alias. Whether sessions that use this JMS connection alias will be transacted. Select... NO_TRANSACTION LOCAL_TRANSACTION To... Indicate that sessions that use this JMS connection alias are not transacted. Indicate that sessions that use this JMS connection alias are part of a local transaction.
188
Specify... XA_TRANSACTION Indicate that sessions that use this JMS connection alias are part of an XA transaction.
The JMS client identifier associated with the connections established by this JMS connection alias. User name needed to acquire a connection from the connection factory. For more information about whether or not the JMS provider requires a user name and password to obtain a connection, refer to the product documentation for the JMS provider.
Password (optional)
Password needed to acquire a connection from the connection factory. For more information about whether or not the JMS provider requires a user name and password to obtain a connection, refer to the product documentation for the JMS provider.
In Create Connection Using list, select one of the following to indicate how administered objects (connection factories and destinations) will be looked up:
If you intend to use a JNDI provider, select JNDI Lookup. If you intend to use the native webMethods API to create the connection directly on the webMethods JMS Provider, select Native webMethods API.
If you selected JNDI Lookup in the Create Connection Using list, do the following in the remaining fields under Connection Protocol Settings: Specify... The alias to the JNDI provider that you want this JMS connection alias to use to look up administered objects. For information about creating a JNDI provider alias, see Creating a JNDI Provider Alias on page 182. The lookup name for the connection factory that you want to use to create a connection to the JMS provider specified in this JMS connection alias. How Integration Server monitors the connection factory for changes, if at all. Select... No To... Indicate that Integration Server will not monitor the connection factory. This is the default.
189
Specify... Poll for changes (specify interval) Poll for changes (interval defined by webMethods Connection Factory) Monitor the connection factory by polling for changes at an interval that you specify. Monitor the connection factory at an interval determined by the refresh interval specified for the webMethods Connection Factory object. For more information about configuring a cluster connection factory, see Administering webMethods Broker and webMethods Messaging Programmers Guide. Monitor the connection factory by registering an event listener.
The number of minutes between polling attempts. The polling interval must be a positive integer. The default value is 60 minutes. Note: This field is only available if you selected Poll for changes (specify interval).
If you selected Native webMethods API in the Create Connection Using list, do the following to configure the connection to the Broker Server that you want to use as the webMethods JMS Provider for this JMS connection alias: Specify... Name (DNSname:port or ipaddress:port) of the machine on which the Broker Server resides. Name of the webMethods Broker as defined on the Broker Server. The default name is Broker #1. The name of the client group to which you want Integration Server to belong when it acts as a JMS client. The client group that you specify must already exist on the Broker Server. The default is IS-JMS.
190
Specify... A comma delimited list of Broker Servers on which the connection between the Integration Server (acting as the JMS client) and the webMethods JMS Provider can exist. This provides connection failover. If a connection failure occurs to the first Broker Server in the list, a connection attempt will be made to the next Broker Server listed. Use the following format for each webMethods Broker: {webMethods Broker Name]@<host>[:port] Note: If a connection to a Broker Server is already configured (via Settings > Messaging > Broker Settings), Integration Server populates the fields under Connection Protocol Settings with information about that Broker Server. If that Broker Server functions as the webMethods JMS Provider, you may not need to edit any information. However, make sure that the Client Group field specifies the client group to which you want Integration Server to belong when it functions as a JMS client.
Keystore
The full path to this Integration Server's keystore file. A keystore file contains the credentials (private key/signed certificate) that an entity needs for SSL authentication. If the Broker Server requires an SSL connection, then the information in this file is used to authenticate the Integration Server client to that Broker Server. The Integration Server's keystore file is stored on the machine on which the Integration Server resides.
The file type of the Integration Server's keystore file, which can be either PKCS12 or JKS. The full path to this Integration Server client's truststore file. A truststore file contains trusted root certificates for the authorities responsible for signing SSL certificates. For an SSL connection to be made, a valid trusted root for the SSL certificate stored in the keystore must be accessible in a truststore file. The Integration Server's truststore file is stored on the machine on which the Integration Server resides.
The file type of the Integration Server's truststore file, which is JKS. Password required to access the SSL certificate in the Integration Server's keystore file. Specify whether or not to encrypt the connection between the Integration Server and the webMethods Broker.
191
Under Advanced Settings, specify the following information for the JMS connection alias: Specify... The name of the class loader that you want to use with this JMS connection alias. Integration Server will use the specified class loader when performing certain activities with the JMS connection alias (send a message, receive a message, create a connection, create a destination, etc.) By default, Integration Server uses the server class loader. However, you can specify the class loader for a package instead. This may be helpful when working with third party JMS providers. For example, you might place the third party jars needed for each JMS provider in separate packages, specifically, in the Integration Server_directory/packages/packageName/code/jars directory. This can help prevent conflicts between the jars required for different JMS providers.
The maximum number of messages that can exist in the client side queue for this JMS connection alias. Integration Server writes messages to the client side queue if the JMS provider is not available when messages are sent. Each JMS connection alias has its own client side queue. Specify -1 if you want the client side queue to be able to contain an unlimited number of messages. That is, specify -1 if you do not want to set a maximum limit. If you specify 0, Integration Serverwill not write messages to the client side queue for this JMS connection alias.
192
Specify... Whether Integration Server drains the client side queue by sending the messages to the JMS provider in the same order in which Integration Server placed the messages in the client side queue. Select the check box if you want Integration Server to send messages from the client side queue in the same order in which Integration Server originally placed the messages in the client side queue. When the Drain CSQ in Order check box is selected, after the connection to the JMS provider is re-established, Integration Server continues to write new messages to the client side queue until the client side queue is completely drained. If the Drain CSQ in Order check box is not selected, after the connection to the JMS provider is re-established, Integration Server sends new messages directly to the JMS provider while it drains the client side queue. Note: You can also specify the number of messages Integration Server retrieves from the client side queue for delivery to the JMS provider at one time. By default, Integration Server sends 25 messages at a time. For more information about the watt.server.jms.csq.batchProcessingSize property, see Appendix B, Server Configuration Parameters.
Whether Integration Server creates a temporary queue on the JMS provider to handle request-reply operations that do not specify a replyTo destination. Select the check box if you want Integration Server to create a temporary queue. Clear the check box if you do not want Integration Server to create a temporary queue.
193
Specify... Whether users can create, list, and modify Destinations on the webMethods JMS Provider (webMethods Broker) through working with JMS triggers in Designer. Select the check box if you want Designer users to be able to create, list, and modify Destinations using a JMS trigger that uses this JMS connection alias. If this JMS connection alias connects to a webMethods Broker in a production environment, Software\x11 AG recommends that you prevent Designer users from managing Destinations on the webMethods JMS Provider. That is, in a production environment, the Manage Destinations check box should be cleared. For more information about using Designer to manage Destinations on the webMethods JMS Provider, see Allowing Destinations to be Managed through the JMS Connection Alias and Designer on page 194.
Whether Integration Server creates a separate connection to the webMethods JMS Provider for each JMS trigger. Select the check box if you want Integration Server to create a separate connection for each JMS trigger that uses this JMS connection alias. For more information about creating multiple connections for a single JMS connection alias, see Allowing Multiple Connections for a JMS Connection Alias on page 195.
Allowing Destinations to be Managed through the JMS Connection Alias and Designer
You can configure the JMS connection alias to enable Designer users to manage destinations and durable subscribers when working with JMS triggers. When the Manage Destinations property for a JMS connection alias is set to true (i.e., the Manage Destinations check box is selected), you can create, and modify Destinations and durable subscribers at the webMethods JMS Provider (webMethods Broker) while you work with the JMS trigger. To take advantage of this functionality, the following must be true: Integration Server must be version 8.0 SP1 or higher. The JMS provider must be the webMethods JMS Provider The webMethods JMS Provider must be webMethods Broker version 7.1 or higher.
194
The versions of following three webMethods Broker jar files installed on Integration Server must be the 8.0 SP1 or higher versions of the files.
Designer must be used to create or modify the JMS trigger. The ability to use Designer to mange JMS Destinations at the webMethods Broker is a design-time feature. In a production environment, this functionality should be disabled. For more information about using Designer to modify Destinations on the webMethods JMS Provider, see webMethods Service Development Help.
195
The versions of following three webMethods Broker jar files installed on Integration Server must be the 8.0 SP1 or higher versions of the files.
For more information about configuring JMS triggers, see the Service Development Help in Software AG Designer. Impact of Creating a New Connection per Trigger on the Connection Client ID Allowing Integration Server to create a separate connection for each JMS trigger changes the connection's client ID. When this property is set to true, each trigger that uses this alias will create its own connection to webMethods Broker. The client ID of that connection will be unique to the specific trigger. That is, the client ID for that connection will consist of the client ID specified in the connection alias plus the name of the trigger. When this property is set to false, each trigger using this alias will use the same connection. The client ID of that connection is the same for all triggers (that is, it is simply the client ID specified in the connection alias). This is an important distinction to understand when you are load balancing a group of Integration Servers against a webMethods Broker. To receive messages in a load balanced manner, each trigger must connect to the webMethods Broker using the same client ID. Because this new property has the ability to change the client ID, you must be sure that use of this property is consistent across all Integration Servers across the Integration Server group.
196
5 6
Click Edit JMS Connection Alias. Edit the properties of the connection alias. For more information about the fields, see Creating a JNDI Provider Alias on page 182. Note that the Connection Alias Name and Create Connection Using fields cannot be modified. Click Save Changes.
Click No if the alias is disabled and you want to enable it. If Integration Server cannot enable the alias, it displays a message under the alias indicating why Integration Server cannot enable the alias.
Click Yes if the alias is enabled and you want to disable it.
197
4 5
In the JMS Connection Alias Definitions list, disable the alias if it is not already disabled. Locate the alias you want to delete and click the icon in the Delete field. Integration Server displays a dialog box that prompts you to verify your action. Click OK to verify that you want to delete the JMS connection alias.
198
199
The connection monitoring period, which determines how frequently, Integration Server checks the status of active connections to the JMS provider. The connection monitoring period is determined by the watt.server.jms.connection.monitorPeriod configuration property. When the connection monitoring period elapses, Integration Server checks the status of the JMS connection alias. Integration Server also compares the polling interval to the time elapsed since the last poll to determine whether to poll for changes to the cluster connection factory. To ensure that Integration Server polls for connection factory changes at the specified interval, the polling interval value should be greater than or equal to the value of the watt.server.jms.connection.monitorPeriod property. If the value of the polling interval is less than the value of the watt.server.jms.connection.monitorPeriod property, Integration Server will not check for connection factory changes at the specified interval. For example, suppose that a JMS connection alias specifies a polling interval of 1 minute and watt.server.jms.connection.monitorPeriod is set to 10 minutes. Because checking the polling interval and, if necessary, polling for changes, occurs only when Integration Server checks the connection, Integration Server polls the cluster connection factory for changes every 10 minutes. Note: If the connection between Integration Server and the JMS provider fails, Integration Server attempts to reconnect to the JMS provider at an interval determined by the watt.server.jms.connection.retryPeriod property. After Integration Server restores the connection, Integration Server polls immediately for changes to the cluster connection factory specified in the JMS connection alias.
200
occurs, the JNDI provider deregisters the event listener. As part of monitoring the state of the connection to the JMS provider, Integration Server monitors the state of an event listener. If Integration Server determines that the event listener was deregistered, Integration Server re-registers the change listener, polls the connection factory object for changes, and, if necessary, refreshes the connection. Note: The value of the watt.server.jms.connection.monitorPeriod configuration property determines the frequency with which Integration Server checks the state of an active connection and any registered change listeners. The default value is 45 seconds.
201
To configure Integration Server to monitor a connection factory 1 2 3 4 5 Open Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Under JMS Configuration, click JMS Settings. Under JMS Connection Alias Definitions, select the JMS connection alias for which you want to monitor the associated connection factory for changes. Click Edit JMS Connection Alias.
202
Under Connection Protocol Settings, in the Monitor webMethods Connection Factory list, select one of the following: To... Indicate that Integration Server will not monitor the connection factory. This is the default. Monitor the connection factory by polling for changes at an interval that you specify. Monitor the connection factory at an interval determined by the refresh interval specified for the webMethods Connection Factory object. For more information about configuring a cluster connection factory, see Administering webMethods Broker and webMethods Messaging Programmers Guide. Monitor the connection factory by registering an event listener.
Select... No Poll for changes (specify interval) Poll for changes (interval defined by webMethods Connection Factory)
If you selected Poll for changes (specify interval), in the Polling Interval (minutes), specify the number of minutes between polling attempts. The polling interval must be a positive integer. The default value is 60 minutes. Click Save Changes.
Notes When Integration Server starts the JMS connection alias, Integration Server does the following: Verifies that the JMS connection alias connects to the webMethods JMS Provider If the JMS connection alias monitors the connection factory via an event lister, Integration Server also verifies that the JNDI provider supports EventContext interface. Integration Server throws a JMSSubsystemException if the any of the above criteria are not met.
203
When connecting to the webMethods JMS Provider using the native webMethods API, configure SSL information (Keystore, Keystore Type, Truststore, and Truststore Type) when you create the JMS connection alias. Note: If Integration Server connects to the webMethods JMS Provider using JNDI, you need to configure the connection factory on the webMethods Broker. For more information, see Administering webMethods Broker.
204
Note: The webMethods JMS Provider and JNDI provider .jar files are already included in Integration Server.
To add a third party JMS provider's JMS and JNDI libraries to the Integration Server classpath 1 Copy your JMS provider's Java API libraries from the locations specified below and place them in Integration Server_directory\lib\jars directory. JMS Provider Apache ActiveMQ Files to Copy ActiveMQ_HOME\activemq-all-5.4.*.jar Where ActiveMQ_HOME is the directory in which Apache ActiveMQ is installed JBoss Messaging jboss-messaging-client.jar (This is available in the JBoss Messaging distribution.) JBOSS_HOME\client\jbossall-client.jar JBOSS_HOME\server\SERVER_NAME\deploy\jbossaop.deployer\jboss-aop.jar JBOSS_HOME\server\SERVER_NAME\lib\javassist.jar JBOSS_HOME\server\SERVER_NAME\lib\trove.jar Where JBOSS_HOME is the directory in which JBoss is installed and SERVER_NAME is the name of the messaging server Note: JBoss Messaging 1.4.0 requires a patched version of jboss-remoting.jar. Please refer to the JBoss Messaging documentation for more details.
205
Files to Copy For Oracle Streams Advanced Queuing (AQ) 10.2.*: ORACLE_HOME\jdbc\lib\classes12.jar ORACLE_HOME\jlib\orai18n.jar ORACLE_HOME\lib\xmlparserv2.jar ORACLE_HOME\rdbms\jlib\xdb.jar ORACLE_HOME\rdbms\jlib\aqapi13.jar ORACLE_HOME\rdbms\jlib\jmscommon.jar Where ORACLE_HOME is ORACLE_BASE\product\10.2.0\db_1 and ORACLE_BASE is the directory in which the Oracle database is installed. For Oracle Streams Advanced Queuing (AQ) 11.2.0: ORACLE_HOME\jlib\orai18n.jar ORACLE_HOME\lib\xmlparserv2.jar ORACLE_HOME\rdbms\jlib\xdb.jar ORACLE_HOME\rdbms\jlib\aqapi.jar ORACLE_HOME\rdbms\jlib\jmscommon.jar ORACLE_HOME\rdbms\jlib\ ojdbc6.jar Where ORACLE_HOME is ORACLE_BASE\product\11.2.0\db_1 and ORACLE_BASE is the directory in which the Oracle database is installed. Note: If you are using Oracle Streams Advanced Queuing (AQ) 11.2.0 as the JMS provider, the value of the watt.config.systemProperties property must include "oracle.jms.conservativeNavigation=true".
206
Files to Copy For SonicMQ version 7.5: SonicMQ_directory\lib\mfcontext.jar SonicMQ_directory\lib\sonic_Client.jar SonicMQ_directory\lib\sonic_Crypto.jar SonicMQ_directory\lib\sonic_mgmt_client.jar SonicMQ_directory\lib\sonic_Selector.jar SonicMQ_directory\lib\sonic_XA.jar For SonicMQ version 7.6, all of the above, plus: SonicMQ_directory\lib\mgmt_client.jar SonicMQ_directory\lib\mgmt_config.jar SonicMQ_directory\lib\sonic_XMessage.jar Where SonicMQ_directory is the directory in which SonicMQ is installed.
webLogic
For WebLogic 9.1 and 9.2: WebLogic_directory\server\lib\weblogic.jar For WebLogic 10.3: WebLogic_directory\server\lib\wljmsclient.jar WebLogic_directory\server\lib\wlnmclient.jar WebLogic_directory\server\lib\wlclient.jar Where WebLogic_directory is the directory in which WebLogic is installed.
WebSphere MQ
For WebSphere MQ version 6.0: WebSphereMQ\Java\lib\com.ibm.mq.jar WebSphereMQ\Java\lib\com.ibm.mqjms.jar For WebSphere MQ version 7.0, all of the above plus: WebSphereMQ\Java\lib\com.ibm.mq.jmqi.jar WebSphereMQ\Java\lib\dhbcore.jar Where WebSphereMQ is the directory in which your WebSphere MQ is installed.
207
Restart Integration Server. Note: The list of files for each JMS provider is a general guideline. The requirements for each JMS provider may change. Make sure to review the documentation for your JMS provider to determine an exact list of required jar files. Note: If you are using Oracle Streams Advanced Queuing (AQ) 11.2.0 as the JMS provider, you must set the following server configuration property: watt.config.systemProperties= oracle.jms.conservativeNavigation=true. Note that this property can also have other system properties defined in it as shown in the example below:
watt.config.systemProperties=mail.imap.partialfetch=true,oracle.jms.conserva tiveNavigation=true
208
12
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Provider for Use with HTTP/S . . . . . . . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Consumer for Use with HTTP/S . . . . . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Provider for Use with JMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating an Endpoint Alias for a Consumer for Use with JMS . . . . . . . . . . . . . . . . . . . . . . . . . .
209
Overview
A Web service endpoint alias represents the network address and, optionally, any security credentials to be used with Web services. The network address properties can be used to enable dynamic addressing for Web services. The security credentials can be used to control both transport-level and message-level security for Web services. In Web service descriptors (WSD), an endpoint alias is associated with a binder. For more information about associating an endpoint alias with a binder, see webMethods Service Development Help. For a consumer (WSD) and its associated s (WSC), the alias information (including the addressing information and any security credentials), is used at run time to generate a request and invoke an operation of the Web service. For a provider WSD, the endpoint alias is used to construct the "location=" attribute of the address element (which is contained within the port element) when WSDL is requested for the Web service. The security credentials might be used when constructing a response to a Web service request. When you create a provider WSD, you can specify an existing endpoint alias which will be displayed (and can be changed) from the WSD's default binder. Integration Server uses a binder to collect the definitions for addresses, communication protocols, and data formats for a particular port type in one container. An endpoint alias is usually created for one or more of the following reasons: Dynamic endpoint addressing. Using an endpoint alias saves you from having to specify or change the server information each time you use the Web service, because the actual value of the endpoint is looked up at run time. Security. An endpoint alias is required in order to configure WS-Security for Web service providers and consumers. For information about implementing WS-Security, see the information about WSSecurity in the Web Services Developers Guide. When creating Web service endpoint aliases, keep the following points in mind: Alias names must be unique within the specified usage (provider or consumer) and protocol. This can result in multiple endpoint aliases with the same name. For example, you can have a provider alias named "aliasOne" for the HTTP protocol. You could also have a consumer alias named "aliasOne" for the HTTP protocol and a provider alias named "aliasOne" for the HTTPS protocol. Integration Server saves Web service endpoint aliases at the following location: Software AG_directory\Integration Server_directory\config\endpoints The host name and port are required for a provider HTTP/S Web service endpoint alias, but are optional for a consumer HTTP/S Web service endpoint alias. If the Integration Server on which a consumer WSD resides sits behind a firewall and the Web service request needs to be routed through a proxy server, you can assign a proxy alias to the consumer Web service endpoint alias.
210
To create a WS provider Web service endpoint alias for use with HTTP/S 1 2 3 4 Open Integration Server Administrator if it is not already open. In the Navigation panel, select Settings > Web Services. Click Create Web Service Endpoint Alias. Under Web Service Endpoint Alias Properties, provide the following information: In this field... Alias Specify... A name for the provider Web service endpoint alias. The alias name cannot include the following illegal characters: # \ & @ ^ ! % * : $ . / \ \ ` ; , ~ + = ) ( | } { ] [ > < " Description Type Transport Type A description for the endpoint alias. Provider Specify the transport protocol used to access the Web service. Select one of the following: HTTP HTTPS
211
Under TransportType Transport Properties, provide the following information: In this field... Host Name or IP Address Specify... Host name or IP address of the Integration Server for which you are creating an alias. If the host Integration Server is fronted by a proxy, specify the host name or IP address of the proxy server. Port An active HTTP or HTTPS listener port defined on the Integration Server specified in the Host Name or IP Address field. If the host Integration Server is fronted by a proxy, specify the port for the proxy server.
Under WS Security Properties, if the inbound SOAP request must be decrypted and/or the outbound SOAP request must be signed, do the following: In this field... Keystore Alias Specify... Alias of the keystore containing the private key used to decrypt the inbound SOAP request or sign the outbound SOAP response. Important! The provider must have already given the consumer the corresponding public key. Key Alias Alias of the private key used to decrypt the request or sign the response. The key must be in the keystore specified in Keystore Alias.
Under WS Security Properties, if the signing certificate chain of an inbound signed SOAP message has to be validated, specify the following: In this field... Truststore Alias Specify... The alias for the truststore that contains the list of CA certificates that Integration Server uses to validate the trust relationship.
212
Under WS Security Properties, set the timestamp properties that Integration Server uses when working with timestamps. In this field... Timestamp Precision Specify... Whether the timestamp is precise to the second or millisecond. If you set the precision to milliseconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss:SSS'Z'. If you set the precision to seconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss'Z'. If you do not select a precision value, Integration Server will use the value specified for the watt.server.ws.security.timestampPrecisionInMilliseconds parameter. Timestamp Time to Live The time-to-live value for the outbound message in seconds. Integration Server uses the Timestamp Time to Live value to set the expiry time in the Timestamp element of outbound messages. The time-to-live value must be an integer greater than 0. If you do not specify a Timestamp Time to Live value, Integration Server will use the value specified for the watt.server.ws.security.timestampTimeToLive parameter. Timestamp Maximum Skew The maximum number of seconds that the Web services client and host clocks can differ and still allow timestamp expiry validation to succeed. Specify a positive integer or zero. Integration Server uses the timestamp maximum skew value only when you implement WS-Security via a WS-Policy. Integration Server validates the inbound SOAP message only when the creation timestamp of the message is less than the sum of the timestamp maximum skew value and the current system clock time. If you do not specify a timestamp maximum skew value, Integration Server will use the value specified for the watt.server.ws.security.timestampMaximumSkew parameter. For more information about timestamps in the WS-Security header, see Timestamps in the WS-Security Header on page 228
213
Web Service Endpoint Alias. Identifies the endpoint name, description, and transport type. HTTP/S Transport Properties. Optionally, specifies the host and port used to build the endpoint URL. If transport-based authentication is required by the Web service provider, specifies the authentication credentials to be added to the HTTP/S header. For HTTPS transport, specifies the keystore alias and key alias of the private key used for SSL communication with the Web service provider. If the Web service request must be routed through a proxy server, specifies the proxy alias for the proxy server through which Integration Server routes the HTTP request. WS Security Properties. Provides information for the WS-Security header as determined by the security policy for the Web service. A Web service security policy can require that:
SOAP message requests include a UserName token. SOAP message response be decrypted. SOAP message requests to be signed. X.509 authentication. A Timestamp element be added to the security header.
Note: WS-Security credentials such as private keys and public keys do not always need to be provided in a Web service endpoint alias. If this information is not provided in the alias, Integration Server can obtain the information from other locations. For more information about usage and resolution order of certificates and keys for WS-Security, see the Web Services Developers Guide.
To create a consumer Web service endpoint alias for use with HTTP/S 1 2 3 4 Open Integration Server Administrator if it is not already open. In the Navigation panel, select Settings > Web Services. Click Create Web Service Endpoint Alias. Under Web Service Endpoint Alias Properties, provide the following information: In this field... Alias Specify... A name for the provider Web service endpoint alias. The alias name cannot include the following illegal characters: # \ & @ ^ ! % * : $ . / \ \ ` ; , ~ + = ) ( | } { ] [ > < " Description Type A description for the endpoint alias. Consumer
214
Specify... Specify the transport protocol used to access the Web service. Select one of the following: HTTP HTTPS
Under TransportType Transport Properties, provide the following information if you want to overwrite the host and/or port information in the WSDL with the host and/or port information in the Web service endpoint alias. For more information about how Integration Server builds the endpoint URL, see webMethods Service Development Help. In this field... Host Name or IP Address Port Specify... Host name or IP address of the server on which the Web service resides. An active HTTP or HTTPS type listener port defined on the host server specified in the Host Name or IP Address field.
If you are configuring the Web service endpoint for transport-based authentication such as HTTPS, specify all or a combination of the following optional fields: In this field... User Name Password Retype Password Keystore Alias Specify... User name used to authenticate the consumer at the HTTP or HTTPS transport level on the host server. The password used to authenticate the consumer on the host server. Re-enter the above password. Alias to the keystore that contains the private key used to connect to the Web service host securely. This field applies to the HTTPS transport type only. Key Alias Alias to the key in the keystore that contains the private key used to connect to the Web service host securely. The key must be in the keystore specified in Keystore Alias. This field applies to the HTTPS transport type only.
If Web service requests must be sent through a proxy server, in the Proxy Alias field, specify the alias for the proxy server. For information about working with proxy aliases, see Specifying Third-Party Proxy Servers for Outbound Requests on page 96.
215
Under WS Security Properties, provide the following information if the WS-Security policy for this consumer requires that SOAP message requests include a UsernameToken, enter values for the following fields: In this field... User Name Password Retype Password Specify... The user name to include with the UsernameToken. The password to include with the UsernameToken (must be plain text). Re-enter the above password.
If the security policy (or policies) that will be used by this Web service requires its requests to be signed, requires an X.509 authentication token to be included, or requires that SOAP message responses be encrypted, specify the following: In this field... Keystore Alias Specify Alias to the keystore that contains the private key used to: Sign outbound SOAP requests Include an X.509 authentication token for outbound SOAP requests Decrypt inbound SOAP responses Important! To verify messages from this consumer, the Web services provider must have a copy of the corresponding public key. Key Alias Alias to the private key used to sign and/or include X.509 authentication token for outbound SOAP messages and/or decrypt inbound SOAP responses. The key must be in the keystore specified in Keystore Alias.
10 Under WS Security Properties, specify the provider's certificate file. This certificate is used to encrypt the outbound SOAP request and/or verify the inbound SOAP response. In this field... Partner's Certificate Specify The path and file name of the provider's certificate, which contains its public key.
216
11 Under WS Security Properties, if the security policy (or policies) that will be used by this Web services consumer requires that responses be validated by a trusted authority, specify the following: In this field... Partner's Certificate Truststore Alias Specify Path and file name of the file containing the provider's certificate. The alias for the truststore that contains the list of CA certificates that Integration Server uses to validate the trust relationship.
12 Under WS Security Properties, configure how Integration Server handles timestamps in the security headers. In this field... Timestamp Precision Specify... Whether the timestamp is precise to the second or millisecond. If you set the precision to milliseconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss:SSS'Z'. If you set the precision to seconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss'Z'. If you do not select a precision value, Integration Server will use the value specified for the watt.server.ws.security.timestampPrecisionInMilliseconds parameter. Timestamp Time to Live The time-to-live value for the outbound message in seconds. Integration Server uses the Timestamp Time to Live value to set the expiry time in the Timestamp element of outbound messages. The Timestamp Time to Live value must be an integer greater than 0. If you do not specify a time-to-live value, Integration Server will use the value specified for the watt.server.ws.security.timestampTimeToLive parameter.
217
Specify... The maximum number of seconds that the Web services client and host clocks can differ and still allow timestamp expiry validation to succeed. Specify a positive integer or zero. Integration Server uses the timestamp maximum skew value only when you implement WS-Security via a WS-Policy. Integration Server validates the inbound SOAP message only when the creation timestamp of the message is less than the sum of the timestamp maximum skew value and the current system clock time. If you do not specify a timestamp maximum skew value, Integration Server will use the value specified for the watt.server.ws.security.timestampMaximumSkew parameter.
For more information about timestamps in the WS-Security header, see Timestamps in the WS-Security Header on page 228 13 Click Save Changes.
218
Keep the following information in mind when creating a Web service endpoint alias for a JMS binder in a provider : You can associate the Web service endpoint alias with:
A SOAP-JMS trigger that already exists. A WS endpoint trigger that you create at the same time you create the endpoint alias.
If you use a SOAP-JMS trigger in the Web service endpoint alias and subsequently assign the alias to a JMS binder in a provider , the has a dependency on the SOAPJMS trigger. Consequently, at start up or when reloading the package containing the , Integration Server must load the SOAP-JMS trigger before loading the . If the SOAPJMS trigger and are not in the same package, you need to create a package dependency for the package that contains the on the package that contains the SOAPJMS trigger. If you rename the SOAP-JMS trigger assigned to an alias, you need to update the alias to use the renamed trigger. The following properties are optional.
If you do not specify values for one of the listed properties (or specify an invalid value), Integration Server will not include information for the property in the WSDL document generated for a provider that uses the Web service endpoint alias. The absence of the property from the WSDL document instructs the Web service consumer to use the default value for the property as specified in the Java Message Service, Version 1.1. To create a provider Web service endpoint alias for use with JMS 1 2 3 Open Integration Server Administrator if it is not already open. In the Navigation panel, select Settings > Web Services. Click Create Web Service Endpoint Alias.
219
Under Web Service Endpoint Alias Properties, provide the following information: In this field... Alias Specify... A name for the JMS provider Web service endpoint alias. The alias name cannot include the following illegal characters: # \ & @ ^ ! % * : $ . / \ \ ` ; , ~ + = ) ( | } { ] [ > < " Description Type Transport Type A description for the endpoint alias. Provider JMS
Under JMS Transport Properties, provide the following information: In this field... JMS Trigger Name Specify... The name of the SOAP-JMS trigger used to Receive JMS messages Supply JMS connection properties to any s using this Web service endpoint alias. If you want to use a WS endpoint trigger, select WS Endpoint Trigger. For more information about WS endpoint triggers, see About WS Endpoint Triggers on page 496. Delivery Mode The message delivery mode for the request message. This is the delivery mode that Web service clients must specify in the JMS message that serves as the request message for the Web service. Select... PERSISTENT To... Indicate the request message should be persistent. The message will not be lost if the JMS provider fails. Indicate the request message is not persistent. The message might be lost if the JMS provider fails.
NON_PERSISTENT
Time to Live
The number of milliseconds that can elapse before the request message expires on the JMS provider. A value of 0 indicates that the message does not expire. Specifies the message priority. JMS defines priority levels from 0 to 9, with 0 as the lowest priority and 9 as the highest.
Priority
220
Specify... Name or lookup name of the destination to which the Web service sends a response (reply) message. Specify a name if the JMS connection alias used by the SOAP-JMS trigger connects to the webMethods JMS Provider natively. Specify a lookup name if the JMS connection alias uses JNDI to retrieve a connection factory that is then used to connect to the JMS provider. Type of destination to which the Web service sends the response (reply) message. Specify the destination type if the following are true: The s to which the endpoint alias is assigned use the In-Out message exchange pattern. The JMS connection alias specified by the SOAP-JMS trigger connects to the webMethods JMS Provider natively. On the webMethods JMS Provider, a queue and topic can have the same name. You must specify Reply To Type to indicate to which destination the reply will be sent. Select... QUEUE TOPIC To... Indicate that the Web service sends the response message to a particular queue. Indicate that the Web service sends the request message to a particular topic.
Reply To Type
Under JMS WSDL Options, provide the following information: Select... Include Connection Factory Name Include JNDI Parameters To... Include the connection factory name in the JMS URI. Include the JNDI parameters in the JMS URI.
Note: The JMS URI appears in the WSDL document as the location attribute value for the address element contained within the port element.
221
Under WS Security Properties, if the inbound SOAP request must be decrypted and/or the outbound SOAP response must be signed, do the following: In this field... Keystore Alias Specify... Alias of the keystore containing the private key used to decrypt the inbound SOAP request or sign the outbound SOAP response. Important! The provider must have already given the consumer the corresponding public key. Key Alias Alias of the private key used to decrypt the request or sign the response. The key must be in the keystore specified in Keystore Alias.
Under WS Security Properties, if the signing certificate chain of an inbound signed SOAP message has to be verified, specify the following: In this field... Truststore Alias Specify... The alias for the truststore that contains the list of CA certificates that Integration Server uses to validate the trust relationship.
Under WS Security Properties, configure how Integration Server handles timestamps in the security header. In this field... Timestamp Precision Specify... Whether the timestamp is precise to the second or millisecond. If you set the precision to milliseconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss:SSS'Z'. If you set the precision to seconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss'Z'. If you do not select a precision value, Integration Server will use the value specified for the watt.server.ws.security.timestampPrecisionInMilliseconds parameter.
222
Specify... The time-to-live value for the outbound message in seconds. Integration Server uses the time-to-live value to set the expiry time in the Timestamp element of outbound messages. The Timestamp Time to Live value must be an integer greater than 0. If you do not specify a Timestamp Time to Live value, Integration Server will use the value specified for the watt.server.ws.security.timestampTimeToLive parameter. Note: The Timestamp Time to Live value should be greater than the Time to Live value specified under JMS Transport Properties.
The maximum number of seconds that the Web services client and host clocks can differ and still allow timestamp expiry validation to succeed. Specify a positive integer or zero. Integration Server uses the timestamp maximum skew value only when you implement WS-Security via a WS-Policy. Integration Server validates the inbound SOAP message only when the creation timestamp of the message is less than the sum of the timestamp maximum skew value and the current system clock time. If you do not specify a timestamp maximum skew value, Integration Server will use the value specified for the watt.server.ws.security.timestampMaximumSkew parameter.
10 Click Save Changes. If you selected WS endpoint trigger for JMS Trigger Name, saving the alias creates the WS endpoint trigger. Before the WS endpoint trigger is usable, you will need to specify a destination and enable it. You can also change the values of some message processing properties. For more information about editing a WS endpoint trigger, see Editing WS Endpoint Triggers on page 497. Note: If a provider Web service endpoint alias for use with JMS specifies a WS endpoint trigger, deleting the alias also deletes the WS endpoint trigger.
223
the lookup variant and the destination name. Consequently, it is possible that some information necessary to connect to the JMS provider is absent from the WSDL. Integration Server uses the information in a JMS consumer Web service endpoint alias to replace or supplement the JMS information specified in the WSDL document. Keep the following points in mind when creating a Web service endpoint alias for use with a consumer with a SOAP over JMS binding: A JMS consumer Web service endpoint alias can specify one of the following options to connect to a JMS provider:
You only need to specify JNDI provider alias, connection factory, or JMS connection alias if information for connecting to the JMS provider was not included in the WSDL document used to create the consumer or if you want to overwrite the connection information included in the WSDL document. Note: Using a JMS connection alias to connect to the JMS provider might offer better performance. Keep in mind that a JMS connection alias can connect to the JMS provider by using JNDI to retrieve a connection factory and then establishing a connection or by connecting natively to the webMethods JMS Provider. If you want to use the client side queue with the to which the alias is assigned, you must specify a JMS connection alias as the way to connect to the JMS provider. Information in the JMS consumer Web service endpoint alias can supplement or replace the JMS URI information obtained from a WSDL. You can use the endpoint alias to provide information for the WS-Security header as determined by the security policy for the Web service. A Web service security policy can require that:
SOAP message requests include a UserName token. SOAP message response be decrypted. SOAP message requests to be signed. X.509 authentication. A Timestamp element be added to the security header.
Note: WS-Security credentials such as private keys and public keys do not always need to be provided in a Web service endpoint alias. If this information is not provided in the alias, Integration Server can obtain the information from other locations. For more information about usage and resolution order of certificates and keys for WS-Security, see the Web Services Developers Guide.
224
To create a consumer Web service endpoint alias for use with JMS 1 2 3 4 Open Integration Server Administrator if it is not already open. In the Navigation panel, select Settings > Web Services. Click Create Web Service Endpoint Alias. Under Web Service Endpoint Alias Properties, provide the following information: In this field... Alias Specify... A name for the JMS consumer Web service endpoint alias. The alias name cannot include the following illegal characters: # \ & @ ^ ! % * : $ . / \ \ ` ; , ~ + = ) ( | } { ] [ > < " Description Type Transport Type 5 A description for the endpoint alias. Consumer JMS
Under JMS Transport Properties, do the following if you want to connect to the JMS provider using a connection factory: In this field... Connect Using JNDI Provider Alias Specify... JNDI Properties The alias for the JNDI provider that Integration Server uses to look up administered objects. For information about creating a JNDI provider alias, see Creating a JNDI Provider Alias on page 182. The lookup name for the connection factory to use to create a connection to the JMS provider. Note: You need to specify a connection factory only if the WSDL document used to create the consumer did not specify a connection factory or you want to overwrite the connection factory.
Under JMS Transport Properties, do the following if you want to connect to the JMS provider using a JMS connection alias: In this field... Connect Using Specify... JMS Connection Alias
225
Specify... The name of the JMS connection alias that you want Integration Server to use to connect to the JMS provider. For information about creating a JMS connection alias, see Creating a JMS Connection Alias on page 187.
Under WS Security Properties, provide the following information if the WS-Security policy for this consumer requires that SOAP message requests include a UsernameToken. In this field... User Name Password Retype Password Specify... The user name to include with the UsernameToken. The password to include with the UsernameToken (must be plain text). Re-enter the above password.
If the security policy (or policies) that will be used by this Web service requires its requests to be signed, requires an X.509 authentication token to be included, or requires that SOAP message responses be encrypted, specify the following: In this field... Keystore Alias Specify Alias to the keystore that contains the private key used to: Sign outbound SOAP requests Include an X.509 authentication token for outbound SOAP requests Decrypt inbound SOAP responses Important! To verify messages from this consumer, the Web services provider must have a copy of the corresponding public key. Key Alias Alias to the private key used to sign and/or include X.509 authentication token for outbound SOAP messages and/or decrypt inbound SOAP responses. The key must be in the keystore specified in Keystore Alias.
226
Under WS Security Properties, specify the provider's certificate file. This certificate is used to encrypt the outbound SOAP request and/or verify the inbound SOAP response. In this field... Partner's Certificate Specify The path and file name of the provider's certificate, which contains its public key.
10 Under WS Security Properties, if the security policy (or policies) that will be used by this Web services consumer requires that responses be verified by a trusted authority, specify the following: In this field... Partner's Certificate Truststore Alias Specify Path and file name of the file containing the provider's certificate. The alias for the truststore that contains the list of CA certificates that Integration Server uses to validate the trust relationship.
11 Under WS Security Properties, configure how Integration Server handles timestamps in the security headers. In this field... Timestamp Precision Specify... Whether the timestamp is precise to the second or millisecond. If you set the precision to milliseconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss:SSS'Z'. If you set the precision to seconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss'Z'. If you do not select a precision value, Integration Server will use the value specified for the watt.server.ws.security.timestampPrecisionInMilliseconds parameter. Timestamp Time to Live The time-to-live value for the outbound message in seconds. Integration Server uses the Timestamp Time to Live value to set the expiry time in the Timestamp element of outbound messages. The Timestamp Time to Live value must be an integer greater than 0. If you do not specify a time-to-live value, Integration Server will use the value specified for the watt.server.ws.security.timestampTimeToLive parameter.
227
Specify... The maximum number of seconds that the Web services client and host clocks can differ and still allow timestamp expiry validation to succeed. Specify a positive integer or zero. Integration Server uses the timestamp maximum skew value only when you implement WS-Security via a WS-Policy. Integration Server validates the inbound SOAP message only when the creation timestamp of the message is less than the sum of the timestamp maximum skew value and the current system clock time. If you do not specify a timestamp maximum skew value, Integration Server will use the value specified for the watt.server.ws.security.timestampMaximumSkew parameter.
For more information about timestamps in the WS-Security header, see Timestamps in the WS-Security Header on page 228 12 Click Save Changes.
228
13
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying HTTP URL Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating an HTTP URL Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a URL Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
229
Overview
You can create aliases for the HTTP URLs that users specify to access resources on Integration Server. Aliases have several benefits: They are easier to type than full URL path names. They make it easier to move resources on Integration Server; an administrator simply needs to update the alias information to point to the new location; there is no need to notify users of the change. They are more secure than URL path names because users do not see directory, service, or file names. You can create an alias from Designer, Developer, or Integration Server. Create an alias from Integration Server if you want to: Assign an alias to a resource other than a Flow, Java, C, Adapter, or XSLT service. For example, from Integration Server, you can associate an alias with a DSP, HTML, jpg, Web service, or WmTomcat resource. Associate more than one alias with a particular resource. There are, however, advantages to creating aliases from Designer or Developer. You do not have to type the URL path when you define an alias. You can move a service from one folder to another without having to update the path name assigned to the alias.
230
From Designer or Developer, you can display the HTTP URL alias assigned to an individual service. Designer or Developer displays a service's alias only if the alias was created from Designer or Developer. Note: When an HTTP URL alias is migrated from an earlier release of Integration Server, the alias is displayed on the HTTP URL Alias List screen with "Server" in the Association field and nothing in the Package field. The alias is functional at this point, but the only change you can make to it is to update the package association. Once you update the package association, you can view and change the alias as you would other HTTP URL aliases.
Portability of Aliases
From Designer or Developer, you can move a service from one folder to another within the same package and the alias will stay with the service. From Integration Server, when you use the Integration Server package replication feature to copy a package from one Integration Server to another, any HTTP URL aliases associated with the package stay with it. This is true whether the alias was created from Integration Server or from Designer or Developer. When you receive a package from another Integration Server, it is possible that an alias associated with the new package has the same name as an HTTP URL alias already defined on your Integration Server. Integration Server maintains a registry of HTTP URL alias names, and displays the contents of this list on the HTTP URL Alias screen. Integration Server builds this list when it loads packages during server startup, and when an alias is added, edited, or deleted. In cases where two packages are associated with the same alias name, Integration Server uses the alias associated with the first of the two packages to load. When the second package is loaded, Integration Server flags its associated alias as a duplicate, and does not add it to the registry.
231
In other words, Integration Server uses package load order to determine precedence. WmRoot is always loaded first. The order in which other packages are loaded depends on other factors, such as package dependencies and operating system, and therefore cannot be easily predicted. For this reason, when you install a package that was published by another Integration Server, check the details screen for the package (Packages > Management > package_name) for load warnings.
232
To delete a URL alias 1 2 3 4 Open Integration Server Administrator if it is not already open. In the Navigation panel, select Settings > URL Aliases. Locate the row that contains the alias you want to delete, and click the Click OK icon.
Integration Server prompts you to confirm that you want to delete the alias.
233
234
14
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anatomy of an Integration Server SSL Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Roadmap for Configuring SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Keystores and Truststores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Server-Side SSL Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Server SSL Security Level by Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usage of CA Certificates: Technical Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WS-Security and Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
235
Overview
An administrator can configure the Integration Server to use Secure Sockets Layer (SSL) to provide secure communications with the server. This chapter explains how SSL works with Integration Server, and the information that you need to configure SSL authentication for the server side. For information about how Integration Server authenticates clients, and configuring the SSL client side, see Customizing Authentication Using JAAS on page 289.
236
the server's credentials before initiating the transaction, but it is not necessary (nor would it be practical) for the server to authenticate and keep a record of every possible client (browser). For Integration Server, this type of connection is typically one where a partner application or resource needs to verify the authenticity of the Integration Server without itself needing to be authenticated. In a two-way SSL connection, both client and server must authenticate each other's credentials before an SSL connection is established and information can be exchanged. Unlike a one-way SSL connection, both Integration Server and the partner application or resource require access to each other's SSL certificates in order to authenticate each other, establish an SSL connection, and transmit information. Compared to a one-way connection, a two-way SSL connection provides a much higher level of security.
237
Required for two-way SSL connections. Refer to the following: Importing a Certificate (Client or CA Signing Certificate) and Mapping It to a User on page 280
238
Activities If you want to allow only secure connections to the server: Ensure that the primary port uses an HTTPS or FTPS port. Delete all other non-HTTPS or non-FTPS ports. Add additional HTTPS or FTPS ports as required.
Notes Required for one-way and two-way SSL connections. Refer to Chapter 7, Configuring Ports.
239
For information about creating keystores and truststores, importing keys and certificates into keystores and truststores, and other operations with these files, refer to the documentation for your certificate management tool. For information about using Integration Server with keystores and truststores and how to create aliases for these files, see Keystores and Truststores on page 240.
Keystore File
Integration Server uses a special file called a keystore to store SSL certificates and keys. A keystore file contains one or more pairs of a private key and signed certificate for its corresponding public key. The keystore should be strongly protected with a password, and stored (either on the file system or elsewhere) so that it is accessible only to administrators.
240
HSM-Based Keystores
Under certain conditions, Integration Server supports the use of keystore files stored on a Hardware Security Module (HSM). Integration Server supports HSM-based keystores for ports, but not for other components. You cannot use HSM-based keystores with remote server aliases, outbound certificates, an internal server port, WS-Security, or Integration Server public services. Only nCipher hardware card modules are currently supported.
Creating a Keystore
You can create and manage Integration Server keystores at the command line using keytool, Sun Microsystems' Java certificate editor. For more information, refer to the keytool documentation at http://java.sun.com/javase/6/docs/technotes/tools/windows/keytool.html. You can also use other standard tools such as OpenSSL and Portecle. Note: Software AG does not provide its own set of keystore utilities for creating or managing keystore files.
Truststore File
Integration Server uses a truststore to store its trusted root certificates, which are the public keys for the signing CAs. Although a truststore can contain the trusted roots for entire certificate chains, there is no requirement for the organization of certificates within an Integration Server truststore. It simply functions as a database containing all the public keys for CAs within a specified trusted directory.
241
As shown in the above figure, the same truststore file can contain multiple trusted root certificates (public keys for the signing CAs). These trusted roots might be associated with numerous keystore files. A keystore file can contain the key pairs for multiple Integration Server components, and the entire certificate chain required for a component's authentication. With a certificate chain, it is necessary to validate each subsequent signature in the list until a trusted CA certificate is reached. For Integration Server, you must include the entire chain of certificates in a keystore and truststore. Also, any root CA certificates in use by clients must be in an Integration Server truststore.
242
243
Specify or select... The certificate file format of the keystore file, which by default is PKCS12 for keystores. You can also use JKS format for a keystore. Other keystore types can be made available by: Loading additional security providers. Setting the watt.security.keyStore.supportedTypes server configuration parameter.
Provider
The provider that is used for the keystore or truststore type. The default provider is the one shipped with the JVM, which can be Sun, IBM, or others. Generally, you should specify a provider only if your HSM device is not supported by the default provider. You can configure a different provider to support keystore types other than the default. Integration Server supports both PKCS12 and JKS for keystores, but only supports JKS for truststores.
Location
Path location of the keystore file on the server. You can specify the full-path name, or a relative path in relation to the Integration Server.
Password for the saved keystore file associated with this alias. If the keystore requires a password, the password must have been defined at keystore creation time using a keystore utility. Once you create the keystore alias, the keystore password is automatically saved as an Integration Server outbound password. Make sure you have the keystore password available when managing its corresponding keystore alias. If the keystore does not require a password, leave the fields empty.
HSM-based Keystore
Indicates whether the keystore file is stored on a Hardware Security Module (HSM) device. Only nCipher hardware card modules are currently supported. If you select this option, no path is specified in the Location field.
5 6
Click Submit. Enter the Key Aliases settings as follows: For this setting... Password / Re-type Password Specify or select... Password for each alias found in the keystore. Most aliases require a password. If Integration Server needs to use this alias for any reason, you must provide its password.
244
Specify or select... Indicates that no password is required for the alias. Select this for an alias in the keystore that is not secured with a password.
245
Specify or select... Path location of the truststore file on the server. You can specify the full-path name, or a relative path in relation to the Integration Server.
Supplied password that is used to protect the contents of the truststore. This password must have been defined at truststore creation time using a keystore utility. Once you create the truststore alias, its password is automatically saved as an Integration Server outbound password. Make sure you have the truststore password available when managing its corresponding truststore alias.
246
SSL Key, which specifies the Integration Server private and public key pair to use when presenting Integration Server's SSL credentials to a requesting partner application, Internet resource, or Web service. This setting determines the Integration Server's SSL identity. Signing Key, which specifies the private key with which to sign outgoing documents, messages, and data streams from Integration Server. Decryption Key, which specifies the private key to use for decrypting incoming documents, messages, and data streams from external sources, where the information was encrypted with the associated Integration Server public key. For the Truststore, which specifies the location of the signing CA certificates for SSL authentication, you specify its Truststore Alias. To configure the server for SSL authentication 1 2 3 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Certificates. Click Edit Certificates Settings.
Select a Keystore Alias and Key Alias for the SSL Key, Signing Key, and Decryption Key. Select a Truststore Alias for the Truststore. Important! The settings on this screen are the default SSL values used to identify the Integration Server, and specify the SSL keys to use with any Integration Server document, Web service, or built-in service. Do not change these values without first consulting with your system administrator or security administrator.
247
248
For S/MIME signature trust validation, if you do not specify a trusted certificates directory or specify a directory that does not contain the certificates of trusted CAs, by default the server trusts all signatures on S/MIME messages. However, if watt.security.cert.wmChainVerifier.trustByDefault is set to False and no directory or an empty directory is specified, the server will trust no signatures on S/MIME messages.
249
250
15
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Access to Resources by Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restricting IP Addresses that Can Connect to a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Restricting the Services or Web Service Descriptors Available from a Port . . . . . . . . . . . . . . . . Controlling the Use of Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Access to Resources with ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
251
Overview
When the server receives a client's request to access a service, the server performs a number of checks to make sure the client is allowed to access the service. The server performs the following checks, in the order shown below. The client must pass all checks to access the service: 1 Does the port allow connections from this client's IP address? The server checks allow/deny lists of IP addresses that are allowed to connect to the server through this port. If the IP address is allowed, the server performs the next test. Otherwise the server rejects the request. 2 Is the requested service available from this port? The server checks allow/deny lists of services that the server makes available for execution from this port. If the service is available from this port, the server performs the next test. Otherwise the server rejects the request. The server performs this test for requests to execute services. It does not perform this test for requests for list, read, or write access to services. 3 Is the requesting user allowed to access this service? The server checks the user name associated with the request against the appropriate access control list (ACL) associated with the service. The server checks the user name against the List, Read, Write, or Execute ACL associated with the service. If the user belongs to a group that is listed in the ACL, the server accepts the request. Otherwise the server rejects the request. You can configure these settings using the Integration Server Administrator. To limit IP addresses that connect to a port see Restricting IP Addresses that Can Connect to a Port on page 253 below. To limit the services available from a port see Restricting the Services or Web Service Descriptors Available from a Port on page 258. To use access control lists to control which users can access an element see Controlling Access to Resources with ACLs on page 264.
252
Note: By default, the Integration Server also provides a diagnostic port at 9999 that allows all hosts to connect to the server. However, users can access only the services defined with the Administrators ACL. This section describes controlling access to resources at the port level. To control access using Access Control Lists, see Controlling Access to Resources with ACLs on page 264.
253
denied). If you create a new port 6666 and do not customize IP access for it, the server uses Allow by Default for port 6666. If you later change the global IP access to Deny by Default, the server will then use Deny by Default for port 6666. If you later customize IP access to port 6666, subsequent changes to the global setting will have no effect on port 6666. To customize IP access for individual ports, see Allow Inbound Requests from Specified Hosts (Deny All Others) on page 256 and Deny Inbound Requests from Specified Hosts (Allow All Others) on page 257.
To allow inbound requests from only specified hosts 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Change Global IP Access Restrictions. Click Change IP Access Mode to Deny by Default. The server changes the access mode and displays a screen from which you can add hosts to the Allow List. Notice that the server has already included the host name and IP address of the machine from which you are using the Integration Server Administrator so that you are not locked out of the server. 5 6 Click Add Hosts to Allow List. Specify the host names (e.g., workstation5.webmethods.com) or IP addresses (e.g. 132.906.19.22) of hosts from which the server is to accept inbound requests. Separate your entries with commas, for example: *.allowme.com, *.allowme2.com. The host names or IP addresses can include upper and lower case alphabetic characters, digits (0-9), hyphens (-), and periods (.) but cannot include spaces. Note: IP addresses are harder to spoof, and therefore more secure. You can use the following pattern-matching characters to identify several clients with similar host names or IP addresses.
254
Char * ? 7
255
To allow inbound requests from only specified hosts 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Locate the port in the Port List and click Edit in the IP access column. Click Change IP Access Mode to Deny by Default. The server changes the access mode and displays a screen from which you can add hosts to the Allow List. Notice that the server has already included the host name and IP address of the machine from which you are using the Integration Server Administrator so that you are not locked out of the server. 5 6 Click Add Hosts to Allow List. Specify the host names or IP addresses of clients from which the server is to accept inbound requests (e.g., workstation5.webmethods.com). Separate your entries with commas, for example: *.allowme.com, *.allowme2.com. The host names or IP addresses can include upper and lower case alphabetic characters, digits (0-9), hyphens (-), and periods (.) and cannot include spaces. You can use the following pattern-matching characters to identify several clients with similar host names or IP addresses. Char * ? 7 Description Matches any number of characters Matches any single character Example r*.webmethods.com workstation?.webmethods.com
256
257
2 3 4
5 6
Save the file and restart Integration Server. Navigate to the Security > Ports screen and update the IP access for each port as needed. Refer to Allow Inbound Requests from Specified Hosts (Deny All Others) on page 256 and Deny Inbound Requests from Specified Hosts (Allow All Others) on page 257 for more information.
258
Deny By Default. This is the default type for newly created ports. Use this type to deny access to all services and provider s except those you specify in a list that is associated with the port. You might use a Deny By Default port to restrict access so only the set of services that a single application uses are accessible through the port. Set the port to Deny By Default and specify the services for the application in the list associated with the port. Then, clients using the application can only access the specific services for the application. All ports, except 5555, are initially set to Deny By Default with a limited list of services available. Allow By Default. Select this type if you intend to allow access to all services and provider s except those you explicitly deny in a list that is associated with the port. When Integration Server receives a service request through a port, Integration Server verifies that the service request is allowed through that port. If the service or can be invoked through the port, Integration Server continues with service or execution. If access is denied, Integration Server returns an access denied message or status to the client. Integration Server verifies port access for the top-level service only. Integration Server does not verify port access for any child service invoked by the top-level service. For example, suppose that serviceA invokes serviceB. Additionally, supposed that port 5678 is configured to deny by default. serviceA is on the allow list for the port, but serviceB is not. When Integration Server receives a request for serviceA on port 5678, Integration Server verifies that serviceA can be invoked through the port. Integration Server does not verify that serviceB can be invoked through the port. Similarly, Integration Server verifies port access for the provider only. Integration Server does not verify port access for any operations or handler services in the . Note: By default, the Integration Server provides an HTTP port at 5555 that allows all service requests that come in on that port access (unless prohibited by an ACL). Although this port is ideal for initial Integration Server installation and configuration, as well as many development environments, for deployment, you should replace this port with ports that limit access to services you intend to make available to your partners and users. Note: Another way to control access to services through a port is to restrict access to clients that present particular client certificates. See Customizing Authentication Using JAAS on page 289 for more information.
259
You can enter services, folders, or provider s one at a time. You can also allow all services and provider s associated with a specific Execute ACL. For example, to create a custom Administrator port, you can expose all services or provider s protected by the Administrators ACL. Important! When performing the following procedure, do not log into the server through the port you want to change. The procedure involves temporarily denying access to all services through the port. If you log on through the port you want to change and then deny access to all services through it, you will be locked out of the server. Instead, log on through a different existing port or create a new port to log on through.
To allow access to specified services, folders, and provider s 1 2 3 4 5 6 Open the Integration Server Administrator if it is not already open. In the Security menu in the Navigation panel, click Ports. In the Access Mode column, click Edit for the port with which you want to work. Click Set Access Mode to Deny by Default. Integration Server changes the access mode for the port. Click Add Folders and Services to Allow List. To enter the names of services, folders, or provider s, on the left side of the screen, under Enter one service or folder per line, type the fully qualified name of the service, folder or provider for which you want to allow access. Press ENTER after each entry. Note: If you specify a folder, Integration Server allows access to all of the services and provider s in the folder. 7 To specify services or provider s by selecting from a list of elements associated with an ACL, under Select a set of folders and services on the right side of the screen, do the following: a In the Select an ACL list, select the ACL used as the execute ACL for the elements for which you want to allow access. Integration Server Administrator displays and selects all of the elements that use the selected ACL as the execute ACL. b To add all of the selected items to the allow list on the left side of the screen, click Append Selected. Integration Server appends the selected entries to the existing list. c If you do not want to add all of the items to the allow list, deselect the ones you do not want. To deselect multiple items, press the CTRL key while deselecting. To add the remaining items to the list of allowed services for the port, click Append Selected. Integration Server appends the selected entries to the existing list.
260
8 9
Repeat the above steps until you have built the list of services, folders, and provider s you want to make available from this port. Click Save Additions.
10 Click Return to Ports to return to the Security > Ports > Edit Access Mode screen.
261
If you do not want to add all of the items to the deny list, deselect the ones you do not want. To deselect multiple items, press the CTRL key while deselecting. To add the remaining items to the list of denied services for the port, click Append Selected. Integration Server appends the selected entries to the existing list.
8 9
Repeat the above steps until you have built the list of services, folders, and provider s for which you want to deny access on this port. Click Save Additions.
10 Click Return to Ports to return to the Security > Ports > Edit Access Mode screen.
262
Directive soap
Used to... Route requests to the Integration Server SOAP message handler. Note: The soap directive is deprecated. The SOAP message handler routes messages to SOAP processors provided in versions of Integration Server prior to version 7.1.2. These processors have since been deprecated. The SOAP message handler also provides support for Web services developed in Integration Server version 6.5.
web ws
For example:
http://localhost:5555/invoke/wm.server/ping
By default, all Integration Server ports except the proxy port allow all the directives listed above. The proxy port allows all directives except the web directive. However, for security reasons, an organization typically allow only those directives that are necessary to fulfill its business requirements. You might allow all directives on ports that are accessible only to users within your firewall, but you might want to restrict directives on ports that are exposed to users outside the firewall. For example, if you want to receive only SOAP requests on a particular port, from both internal and external users, you could allow the soap directive but no other directives on that port. To restrict the use of directives to certain ports only, you set the watt.server.allowDirective parameter (see watt.server. on page 546). You can specify alternative names for the invoke, soap, and rest directives. For example, by default, the invoke directive is specified on URLs as "invoke" (that is, http://host:port/invoke/folder/service_name). You can identify an alternative word for users to specify as the invoke directive. For example, you might want to allow users to specify the invoke directive as "submit" (that is, http://host:port/submit/folder/service_name). To specify an alternative word for the invoke directive, set the watt.server.invokeDirective parameter (see Server Configuration Parameters on page 531). To specify an alternative word for the soap directive, set the watt.server.SOAP.directive parameter (see Server Configuration Parameters on page 531). To specify an alternative word for the rest directive, set the watt.server.RESTDirective parameter (see Server Configuration Parameters on page 531).
263
About ACLs
ACLs control access to packages, folders, and other elements (such as services, document types, and specifications) at the group level. An ACL identifies groups that are allowed to access an element (Allowed Groups) and/or groups that are not allowed to access an element (Denied Groups). When identifying Allowed Groups and Denied Groups, you select from groups that you have previously defined. There are four different kinds of access: List, Read, Write, and Execute. List. Allows a user to see that an element exists. The element will be displayed on screens in Designer, Developer, and Integration Server Administrator. List access also allows you to view an element's metadata. Read. Allows a user to view the main source of an element through Designer, Developer and Integration Server Administrator. Write. Allows a user to edit an element. This access also allows a user to delete or lock an element or to assign an ACL to it.
264
Execute. Allows a user to execute a service. This access also gives the user access to files the server serves, such as DSP and .htm files. List, Read, and Write ACLs are used mostly during development time by developers, and to some extent server administrators, who need access to create, edit, and maintain services and other elements. Execute access is used extensively in production environments. When a user tries to access an element, the server checks the appropriate ACL (List, Read, Write, or Execute) associated with the element. You cannot assign an ACL to an element unless you are a member of that ACL. For example, if you want to allow DevTeam1 to update the OrderForm service, you must be a member of the DevTeam1 ACL. In other words, your user name must be a member of a group that is listed in the DevTeam1 ACL. Similarly, when you change an ACL assignment for an element, you must be a member of the existing ACL and a member of the ACL to which you are assigning the element. The following table summarizes what the different access types mean for the different elements. Type of access and allowed actions Element Package List See that the package exists. To see what the package contains, you must have List access to the elements themselves. This access is not inherited by other elements in the package. Read N/A Write N/A Execute N/A
265
Type of access and allowed actions Element Folder List See that the folder exists. Children will inherit List access if they do not have a specific access of their own. Read Has no meaning for the folder itself. Children will inherit Read access if they do not have a specific access of their own. Write Add an element to or delete an element from the folder. Change the ACL assignment for the folder. Children will inherit Write access if they do not have a specific access of their own. Edit, lock, unlock, and delete the service. Change the ACL assignment for the service. Edit, lock, unlock, and delete the element. Change the ACL assignment for the element. Execute Has no meaning for the folder itself. Children will inherit Execute access if they do not have a specific access of their own.
See that the service exists. In Designer or Developer, the service will be listed along with nonsource information. See that the element exists.
Specifications, Schemas, Flat File Schemas, Document Types, Adapter Notifications, Triggers
See that the element exists. For a trigger, see the defined conditions.
N/A
Package Replication
For package replication, the publishing server makes sure that the user performing the replication has replication access; that is, the user is a member of the Replicator ACL. In addition, the publishing user must have List access to the package to see it from the publishing screens of the Integration Server Administrator. This List ACL "travels with" the package to the subscribing server. ACLs do not travel with other namespace elements, such as folders, services, etc.
266
On the subscribing server, the user installing the package must have List access to see it from the Install Inbound Releases screen. This means that the ACL must exist on the subscribing server and the installing user must be a member of that ACL. The installing user does not need Write access to the package.
Note: The server uses the following rule to determine access for a user that is a member of more than one group: if the user belongs to any group that is allowed, and to no group that is denied, the user is allowed. Otherwise the user is denied. The following table summarizes this approach for a user that is a member of both Group1 and Group2. Access can be any of List, Read, Write, or Execute: Group1's access to the package, folder, or other element
267
Allowed Group2's Access to package, folder, or other element Allowed Denied Not Specified User Allowed User Denied User Allowed
Predefined ACLs
The server comes with the following predefined ACLs. You cannot delete these ACLs. Administrators. Allows only users in the Administrators group and users with the My webMethods Administrators role access to a package, folder, or other element and denies all other users. Anonymous. Provides access to unauthenticated users (those that did not supply a userid) and users with theMy webMethods Users role. Default. Allows all authenticated users and users with the My webMethods Users role access to a package, folder, or other element. When an element is not specifically assigned an ACL or does not inherit an ACL from containing folders, the server uses the Default ACL. If the ACL assigned to an element is deleted, the server uses the Default ACL. The Default ACL authorizes authenticated users only. Unauthenticated users (those that did not specify a valid userid) are authorized by the Anonymous ACL. Developers. Allows only users in the Developers group and users with the My webMethods Administrators role access to a package, folder, or other element and denies all other users. Internal. Allows only users in the Administrators and Developers groups and users with the My webMethods Administrators role access to a package, folder, or other element and denies all other users. The server assigns this ACL to built-in utility services shipped with the server, such as those in the WmRoot and WmPublic packages. You should never need to assign this ACL to an element. Replicators. Allows the Replicator user and users with the My webMethods Administrators role replication privileges. Notes: You might see an ACL that is specific for an adapter, for example the wmPartnerUsers ACL. Refer to the documentation for the specific adapter for more information about its ACL. There are additional ACLs defined in the BPEL package. These ACLs and their associations are created automatically when the WmBPEL package is loaded. For more information, see BPEL Developer's Guide.
268
Creating ACLs
When creating an ACL, you select groups to use for the Allowed Groups and Denied Groups from previously defined groups. To create an ACL 1 2 3 4 5 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click ACLs. Click Add and Remove ACLs. Specify one ACL name per line. Press ENTER to separate the lines. Click Create ACLs.
269
To allow group access to an ACL 1 2 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click ACLs. The server displays the Access Control Lists screen.
Groups in the Allowed list are explicitly allowed to access the packages, folders, services, or other elements associated with this ACL. Groups in the Denied list are explicitly denied access to the packages, folders, services, or other elements associated with this ACL.
3 4
In the Select ACL list under ACL Membership, select the ACL to which you want to add groups. Do one of the following:
If you want to allow a group or role access to this ACL, under the Allowed list, click Add. If you want to deny a group or role access to this ACL, under the Denied list, click Add.
In the dialog box that appears, in the Provider list, select the location from which you want to select a user group. If an external user directory is not configured, the Provider list does not appear. In the Role/Group Name list, do one of the following:
If you select Local, select the locally defined user group for which you want to allow or deny access to the ACL. If you select Central or LDAP, in the Search field, enter search criteria for finding a role or group. Click Go. Select the role or group for which you want to allow or deny access to the ACL.
Deleting ACLs
You can delete any ACL except the predefined ACLs: Anonymous, Administrators, Default, Developers, Internal, and Replicators. You can delete ACLs that are currently assigned to packages, folder, or other elements. When a client attempts to access an element that is assigned to a deleted ACL, the server denies access. When you delete an ACL that is assigned to a package, folder, service or other element, the Integration Server retains the deleted ACL's name. As a result, when you view the element's information, the server displays the name of the deleted ACL in the associated ACL field; however the server treats the ACL as an empty ACL and allows access to no one.
270
For information about how to assign a different ACL to a package, folder, service, or other element, see Assigning ACLs to Folders, Services, and Other Elements on page 272. For information about how to assign a different ACL to file, that is, a DSP or .htm file that the server serves, update the associated .access file to assign a different ACL to the file. For more information about assigning ACLs to files, see Assigning ACLs to Files the Server Can Serve on page 273. To delete an ACL 1 2 3 4 5 6 Open Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click ACLs. Click Add and Remove ACLs. In the Remove ACLs area of the screen, select the ACL or ACLs you want to remove. Click Remove ACLs. The server issues a prompt to verify that you want to delete the ACL. Click OK to delete the ACL.
271
ACL assigned by default Element Type Top-Level Folder Subfolder Other Element List Default Inherit Inherit Read Default Inherit Inherit Write Default Inherit Inherit Execute Internal Inherit Inherit
272
Note: Use Designer or Developer to assign ACLs to packages, specifications, document types, schemas, and triggers. For more information, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide. Use the following procedure to assign a new or different ACL to a folder or service. To assign an ACL to a folder or service 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. Click Browse Folders. If the current screen does not list the folder or service to which you want to assign an ACL, click the name of the parent folder until the server displays a screen that lists the folder or service with which you want to work. Click in the appropriate ACL field (List, Read, Write, or Execute). The server displays the ACL Information screen. Use the pull-down list to select the ACL you want to assign to the folder or service and click Save Changes.
273
You control access to files by placing a .access file in the directory that contains files you want to protect. You can use an operating system tool of your choice to edit the .access file. Note: The .access files control access to files the server serves, such as DSP and HTML files. To control access to a service that a DSP or HTML file calls, you must assign an ACL to the service itself. See Assigning ACLs to Folders, Services, and Other Elements on page 272 for more information. If the directory contains subdirectories, they will not inherit the protection, so you must provide a .access file in each directory. For each file in the directory that you want to protect, place a line in the .access file to identify the file and the ACL you want to use to protect the file. For example, assume you have a directory that contains three files (adminpage.dsp, home.dsp, and index.htm). You want to protect the adminpage.dsp file with the Administrators ACL so that only administrators can access this file. You want to protect the home.dsp file with the Developers ACL so only developers can access this file. You also want to assign the Default ACL to the index.htm file so all users can access it. To accomplish this, you would place the following records in the .access file:
adminpage.dsp Administrators home.dsp Developers index.htm Default
Note: In the above example, because you want all users to be able to access the index.htm file, you could omit the index.htm Default from the .access file. The server uses the Default ACL for files that are not identified in a .access file or all files in a directory without a .access file. Important! Integration Server loads .access files when a package is loaded; therefore, if you want the changes you make to take effect immediately, reload the package.
Instead, add the following entry to the .access file on directory pub\docs:
home.dsp Developers
274
The case in which you enter the name depends on how your file system handles case. Suppose you have a file named index.dsp. If you use a case-insensitive system such as Windows, you can enter the file name in any case. Therefore Index.dsp, INDEX.DSP, and so on are all acceptable. However, if you use a case-sensitive system such as UNIX, you must enter index.dsp.
275
276
16
Authenticating Clients
278 278 278 283 285 286
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Basic Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using Multiple Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Client Authentication and Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accessing Integration Server Data through My webMethods . . . . . . . . . . . . . . . . . . . . . . . . . . .
277
16 Authenticating Clients
Overview
This chapter explains the types of client authentication available for use with Integration Server and details the authentication information required to configure the client side. For information on configuring authentication for the server side, see Securing Communications with the Server on page 235. The chapter explains how to configure an Integration Server client for basic authentication (user name and password) and SSL authentication. It also explains how to use Integration Server with Windows authentication, and how to make Integration Server data available to My webMethods applications.
Basic Authentication
When the server uses basic authentication, it prompts the client for a user name and password. If a user account is found for the supplied user name, the server authenticates the user name by comparing the supplied password to the password in the user account. If the password is correct, the server proceeds with the request. If the password is not correct, the server rejects the request. Integration Server stores passwords in a hash. Once passwords are hashed, you cannot convert them to an unhashed format. If the client does not supply a user name or password, the server uses the Default user account for the client. Client supplied a user name/password? YES YES YES NO User Name found? YES YES NO n/a Password correct? YES NO n/a n/a Request... proceeds is rejected is rejected proceeds using the Default user account
For more information on setting up user accounts, see Defining a User Account on page 66. You can also use externally defined user accounts. For more information on how to use external directories and how basic authentication works when using external user accounts, see Configuring a Central User Directory or LDAP on page 351 on Configuring a Central User Directory or LDAP on page 351.
Client Certificates
In Integration Server, a client certificate is an X.509 digital certificate that identifies a client and is used for SSL authorization.
278
16 Authenticating Clients
Certificate Mapping
The certificate mapping feature allows you to store client certificates on an Integration Server and associate each of the certificates with a user account (for example, a certificate may be used to identify the user FINANCE). When a client presents one of these certificates, Integration Server logs the client in as the user "mapped" to the certificate. My webMethods Server also allows you to associate a certificate and a user. If central user management is configured in Integration Server, Integration Server will automatically check the My webMethods Server database for certificate mappings when it cannot locate the user in its local store. Refer to Administering My webMethods Server for further details. Important! Be careful when mapping a user to particular client certificate. Make sure that the user's authorization level is an appropriate match.
279
16 Authenticating Clients
If you are going to configure one or more ports to require client certificates, you must import the client certificates you will accept and map them to the users that you want the clients to log in as. If you do not configure any ports to require client certificates, you might want to import client certificates and map them to users so that clients presenting these certificates can automatically log on as those users.
To select a local user, in the Provider list, select Local. Select the local user to which you want to map the certificate. If an external user directory is not configured, the Provider list does not appear.
To select a user from an external directory (LDAP or a central user directory), in the Provider list, select the user directory that you want to search. In the Search field, enter the criteria that you want to user to find a user. Click Go. Select the user to which you want to map the certificate.
280
16 Authenticating Clients
In the Usage list, select the purpose for which you want to import this certificate. Select from one of these options:
SSL Authentication. Use the certificate to represent the client's authentication credentials when making an SSL connection with Integration Server. Verify. Use the certificate's public key to verify the authenticity of documents, messages, or streams originating from the client and containing a digital signature. Encrypt. Use the certificate's public key to encrypt outgoing documents, messages, or streams fromIntegration Server to the client. Verify and Encrypt. Use the same certificate both to verify the authenticity of documents, messages, or streams originating from the client and containing a digital signature, and to encrypt outgoing documents, messages, or streams fromIntegration Server to the client. Message Authentication. Use the certificate to represent the client's authentication credentials when making an SSL connection with Integration Server, when using message-level rather than transport-level authentication (for example, with Web service messages whose SOAP message headers contain SSL certificate information).
281
16 Authenticating Clients
If a port is configured to request or require client certificates, Integration Server requests the client's certificate during the SSL handshake process, after the client authenticates the credentials presented by Integration Server. What happens next depends on how your server is configured and whether the port is HTTPS or FTPS.
HTTPS Ports
The following table shows how the Integration Server handles client requests received at an HTTPS port when different client authentication settings are in effect. These settings are specified on the Client Authentication parameter when configuring or editing an HTTPS port. Parameter Username/ Password Request Client Certificates The server requests client certificates for all requests. If the client does not provide a certificate, the server prompts the client for a userid and password. If the client provides a certificate: The server checks whether the certificate exactly matches a client certificate on file and is signed by a trusted authority. If so, the client is logged in as the user to which the certificate is mapped in Integration Server. If not, the client request fails, unless central user management is configured. If central user management is configured, the server checks whether the certificate is mapped to a user in the central user database. If so, the server logs the client on as that user. If not, the client request fails. Require Client Certificates The server requires client certificates for all requests. The server behaves as described for Request Client Certificates, except that the client must always provide a certificate. Client Certificate Supplied The server prompts the client for a user ID and password.
FTPS Ports
The following table shows how the Integration Server handles client requests received at an FTPS port when different client authentication settings are in effect.
282
16 Authenticating Clients
watt.ftpUseCertMap=true Certificate Username/ Password Log in with username/passwo rd supplied at prompt. If certificate is trusted and matches a mapped user, log in as that user. If certificate is not trusted or does not match a mapped user, log in with user/password supplied at prompt. Require Certificates If certificate is trusted and matches a mapped user, log in as that user. Ignore user/password supplied at prompt. If certificate is not trusted or does not match mapped user, ignore user/password supplied at prompt and reject the login request. Reject the login request. No Certificate Log in with username/pass word supplied at prompt. Log in with user/password supplied at prompt.
watt.ftpUseCertMap=false Certificate Log in with username/passw ord supplied at prompt. Accept certificate if it is trusted, but ignore user provided in certificate. Instead, log in with user/password supplied at prompt. No Certificate Log in with username/pass word supplied at prompt. Log in with user/password supplied at prompt.
Request Certificates
Accept certificate if it is trusted, but ignore user provided in certificate. Instead, log in with user/password supplied at prompt.
283
16 Authenticating Clients
organizations prefer to provide certificates signed by their own CAs for clients to use, rather than accept the client's certificate.) You control which certificate the Integration Server presents to an SSL server by using remote server aliases or special public services. You can set up the Integration Server to present client certificates from multiple organizations. This involves obtaining the certificates, setting them up on the server, and using remote aliases or special public services to control which certificate is being presented.
Importing Certificates
You must import certificates for the SSL servers with which Integration Server will communicate so that two-way SSL authentication is possible. Once you have imported the certificates, you can centralize them in a secure location that is accessible to Integration Server; for example, in the Integration Server config directory.
284
16 Authenticating Clients
Description Specifies the key and associated certificate chain to present. Specifies the key and associated certificate chain to present, where the information is located in byte arrays (rather than files). With a set of services, use to revert the key and certificate chain back to their defaults. With a set of services, use to revert the key and certificate chain back to their defaults, where the key and certificate information is located in byte arrays (rather than files).
pub.security:clearKeyAndChain pub.security:clearKeyAndChainFromBytes
285
16 Authenticating Clients
The server authenticates when a client attempts to... Connect to Integration Server fromDesigner or Developer
The server controls access to the requested resource by determining whether... The client is a member of the Developers Group, which indicates the client has developer privileges.
For more information, refer to Securing Communications with the Server on page 235.
286
16 Authenticating Clients
To configure the MWS Single Sign-On Resource setting 1 2 In Integration Server, go to Settings > Resources. Under Single Sign On with My webMethods Server, ensure that the following value is entered for the MWS SAML Resolver URL setting:
https://localhost:8585/services/SAML
287
16 Authenticating Clients
288
17
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using JAAS with Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JAAS Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pluggable Authentication Modules (PAMs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Writing a Custom JAAS Login Module for Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . JAAS Custom Login Module Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
289
Overview
This chapter explains how to set up a custom JAAS login module for use with Integration Server authentication.
290
Available login contexts. Login modules that will execute. Order in which the modules will execute. Settings that determine which actions to take if a module fails. Following is a portion of the default JAAS configuration file for Integration Server. It shows the IS_Transport and WSS_Message_IS login contexts. The JAAS custom login modules for Integration Server include: Transport-level authentication, which is specified in the IS_Transport login context (shaded gray in the code portion below). Message-level authentication for Web services, which is specified in the WSS_Message_IS login context. Integration Server message-level authentication is described in the Web Services Developer's Guide. Note: The JAAS configuration file contains additional login contexts; only IS_Transport and WSS_Message_IS (shown in the following code segments from is_jaas.cnf) are discussed here.
IS_Transport { /* com.wm.app.b2b.server.auth.jaas.X509ValidatorModule requisite; */ com.wm.app.b2b.server.auth.jaas.X509LoginModule requisite; com.wm.app.b2b.server.auth.jaas.BasicLoginModule requisite; }; WSS_Message_IS { /* * Please do not rearrange the following Software AG * login modules; add your login modules before or after * these two modules */ com.wm.app.b2b.server.auth.jaas.X509LoginModule requisite; com.wm.app.b2b.server.auth.jaas.BasicLoginModule requisite; }; ...
291
For example, the BasicLoginModule attempts to get the user name and password. If it cannot locate either, it returns a value of "false," which causes this module to fail. The modules listed within IS_Transport contain the "requisite" designation. That designation means that for the overall login to succeed, one of the modules in the login context must succeed. For more information about the JAAS configuration file, refer to the Sun Microsystems documentation for JAAS.
X509ValidatorModule
In the above IS_Transport login context, the X509ValidatorModule is commented out because it is optional functionality. When enabled, this module performs path validation on the given X509Certificate chain, and you can configure it to perform certificate revocation lists (CRLs) checking by adding the check_crl_status and crl_url parameters as shown below:
IS_Transport { com.wm.app.b2b.server.auth.jaas.X509ValidatorModule requisite check_crl_status=true crl_url="file:///C:\\webMethods\\sec\\crl\\lh.crl"; com.wm.app.b2b.server.auth.jaas.X509LoginModule requisite; com.wm.app.b2b.server.auth.jaas.BasicLoginModule requisite; }; ...
The crl_url can point to a file url as shown above or it can point to a live CRL url (for example, http://myca.com/crl/lh.crl). For certificate path validation, this module tries to use the truststore associated with the port on which the request came in. If the port does not identify a truststore, then this module uses Integration Server's default outbound truststore. You can override this and provide your own Integration Server truststore alias using the "trustStore_alias" property of the module as shown below:
com.wm.app.b2b.server.auth.jaas.X509ValidatorModule requisite trustStore_alias="my trustStore";
292
If you registered a PAM for the "X509" authentication mechanism, it will be treated as an extension to X509LoginModule. If a PAM is registered and the corresponding JAAS login module (BasicLoginModule or X509LoginModule) is called, authentication is first attempted on the credentials supplied for that module. If that authentication is not successful, then the PAM is called and another attempt to authenticate the user is made. Important! Removing the line of code specifying the BasicLoginModule or X509LoginModule in the JAAS configuration file will disable any registered PAM for the corresponding authentication mechanism. Information about customizing Integration Server client authentication with PAMs, is available in Administering webMethods Integration Server version 8.0.
Extend SagAbstractLoginModule
Extend the com.softwareag.security.jaas.login.SagAbstractLoginModule Implement the following abstract methods:
initConfiguration() authenticate(com.softwareag.security.jaas.login.SagCredentials sagcredentials)
Integration Server collects the credentials and populates them in the com.softwareag.security.jaas.login.SagCredentials object. Integration Server then starts the JAAS login on the appropriate login context (for example, ISTransport). The JAAS framework looks in the configuration for the login modules associated with the login context. Each login module is called in turn for initialization and login; this is handled by the SagAbsractLoginModule, which delegates login module specific initialization and login to the derived class. For example, when JAAS login is invoked in your module, SagAbstractLoginModule invokes authenticate(sagcredentials) on your login module by passing in the com.softwareag.security.jaas.login.SagCredentials. Your login module's authenticate method should retrieve the credentials from the object and perform the authentication (for more information, see the Javadoc for the SagCredentials and SagAbstractLoginModule).
SagCredentials
If authentication is successful, the module populates SagCredentials with the correct username. If the current user name in the SagCredentials is not the one to be used, use the sagcredentials.setUserName(string) method to update the user name.
293
Implement Commit()
Depending on how the login context is configured, it is possible for more than one module to succeed with a different user name. Integration Server does not have a default mechanism to determine which course of action to take when multiple login modules succeed with different user names. To circumvent these situations, Integration Server login modules implement the following commit method:
public boolean commit() throws LoginException { createUserPrincipal = true; super.commit(); return true; }
Here, createUserPrincipal is a member variable in SagAbstractLoginModule. The method super.commit() refers to the commit() method in SagAbstractLoginModule. This commit() method retrieves the user name from the SagCredentials and creates a SagUserPrincipal only if there are no SagUserPrincipal objects in the Subject. Your login module should implement the commit() method as shown above. If more than one login module in IS_Transport succeeds, only the first module that invoked commit() creates the principal. Thus, once you have implemented commit(), you can arrange the order of the login modules in the JAAS configuration file to suit your needs. If there are multiple principals in the Subject, Integration Server takes the principal at index 0. If JAAS is able to authenticate the user, JAAS returns a javax.security.auth.Subject. Integration Server adds this JAAS subject into the current session. You can retrieve the subject by making the following call:
com.wm.app.b2b.server.InvokeState.getCurrentSession().getCurrentJaasSubject()
294
1.
import import import import import javax.security.auth.login.LoginException; com.softwareag.security.jaas.login.SagAbstractLoginModule; com.softwareag.security.jaas.login.SagCredentials; com.softwareag.security.jaas.principals.SagUserPrincipal; com.wm.app.b2b.server.UserManager;
2.
public class TestLoginModule extends SagAbstractLoginModule {
5.
public boolean commit() throws LoginException { if(userId != null) { createUserPrincipal = "true"; super.commit(); return true; } else { return false; } }
6.
protected void initConfiguration(){ this.userId = null; }
295
7.
public boolean authenticate(SagCredentials userCreds) throws LoginException { String username = userCreds.getUserName(); if(username == null || username.length()==0) { return false; } if(userCreds.getPassword() == null) { return false; } String password = new String(userCreds.getPassword()); if(password == null || password.length()==0) { return false; } if(username.equals("bob") && password.equals("123") && UserManager.getUser(username) != null) { userId = username; return true; } else { return false; } } public boolean logout() throws LoginException { userId = null; return true; } }
2. 3. 4.
The user ID derived from authentication. If the login context's overall authentication fails, this method aborts the login. If the authentication attempt by the login module is successful, then this method cleans up any state information that was originally saved.
296
Code Portion 5.
Description This block of code shows the implementation of commit described in Implement Commit() on page 294. The commit method returns "true" if a SagUserPrincipal is created by this login module, and it returns "false" if the login module should be ignored. Initializes the custom JAAS login module. Attempts to authenticate the user by retrieving the credentials from the given com.softwareag.security.jaas.log.SagCredentials object. During the commit phase, SagAbstractLoginModule creates a principal using the user name identified in the SagCredentials object. If the current user name in the SagCredentials object is not the one to be used, use the sagcredentials.setUserName(string) method to update it with the correct user name. For simplification, the method specifies a hard-coded user name and password.
6. 7.
297
298
18
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Outbound Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Backing Up Outbound Password and Master Password Files . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Master Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Expiration Interval for the Master Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About the configPassman.cnf File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Outbound Password Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Master Password Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What to Do if You Lose or Forget Your Master Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When There Are Problems with the Master Password or Outbound Passwords at Startup . . . . E-mail Listeners and Package Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
299
Overview
As part of its normal operations, the Integration Server may connect to applications and subsystems such as remote Integration Servers, proxy servers, and databases. The Integration Server, acting as a client, is required to supply a password, referred to as an outbound password, to each of these systems before connecting to them. The Integration Server uses the outbound passwords to identify itself or authenticate to the other systems. When you configure the Integration Server to connect to an application or subsystem, for example a database, you specify the password the Integration Server must send to the database server in order to connect to it. Later, when an Integration Server user makes a request that requires the database, the Integration Server sends the configured password to the database server and connects to it. Note: Whenever you create a keystore or truststore alias, the keystore or truststore password is automatically saved by Integration Server as an outbound password. For more information, see Keystore, Truststore, and Key Aliases on page 243. To protect these outbound passwords, the Integration Server encrypts them. By default it encrypts them using Password-Based Encryption (PBE) technology, also known as PKCS#5. This encryption method requires the use of an encryption key or master password that you specify. The encrypted outbound passwords are stored in a file. Note: Flow services may also store and retrieve outbound passwords to access secure resources, using the pub.security.outboundPasswords services. For more information, see the webMethods Integration Server Built-In Services Reference. The master password is also encrypted, and by default, is stored in a file. However, when the password is stored in a file, there is a chance that someone could access the file and decrypt the password. Therefore, for greater security, you can configure the Integration Server to prompt for the master password at server startup instead. Note: To protect the master password file (if you use one) and the outbound passwords file, assign them operating system Administrator access. As stated above, outbound passwords are used by the Integration Server to authenticate to other entities. In contrast, inbound passwords are used by users and other servers to authenticate to the Integration Server. Inbound passwords are stored as a one-way hash. See Managing Users and Groups on page 65 for a discussion of setting up inbound passwords. The following sections describe how to manage outbound passwords.
300
Working with Master Password Settings on page 305 Working with Master Password Settings on page 305 Resetting the Master Password and Outbound Passwords on page 308
301
Always back up and restore these files together. If you change the name or location of the outbound password store or the master password store, make sure your backup procedure backs up the correct files.
302
303
Method the Integration Server uses to obtain the master password The following sections describe the configPassman.cnf file in detail and how to change outbound password and master password settings.
This property must always be present and uncommented. If you want to change the file name or location, change the highlighted area only. You can specify an absolute or relative path. In the path name, use the forward slash (/) only; the backward slash (\) is not supported.
304
305
You cannot configure the Integration Server to prompt for the master password at server initialization if: The Integration Server runs as a Windows service. Refer to Running Integration Server as a Windows Application vs. a Windows Service on page 50 for more information. The Integration Server runs as a background application on UNIX.
When There Are Problems with the Master Password or Outbound Passwords at Startup
If the Integration Server detects a problem with the master password or outbound passwords at startup, it will place you in safe mode, which is a special mode from which you can diagnose and correct problems. When the Integration Server is in safe mode, it displays the Integration Server Administrator, but the Integration Server is not connected to any external resources.
306
When you are placed into safe mode because of problems with the master password or outbound passwords, you will see the following message in the upper left corner of the Server Statistics screen of the Integration Server Administrator:
SERVER IS RUNNING IN SAFE MODE. Master password sanity check failed -- invalid master password provided.
Important! When you are in safe mode, do not configure or modify outbound passwords unless they have been reset as part of the Reset All Outbound Passwords task. When there is a problem with these passwords, you can correct the problem by restoring the passwords or resetting them. The method you choose depends on the problem with the passwords. There are a number of reasons the Integration Server will automatically go into safe mode. Passwords are Corrupted or Out of Sync It is possible that the master password file, outbound password file, or both are corrupted. It is also possible that these files are out of sync with each other. The files are out of synch when the key used to encrypt the contents of the outbound password file is not the key in the master password file. In either case, refer to Determining Whether You Can Restore the Passwords on page 307 for instructions. You Entered the Wrong Master Password by Mistake You might be in safe mode because you unintentionally entered the wrong master password when prompted for it at server startup. If you think this is the case, shutdown the Integration Server and restart it, this time specifying the correct master password when prompted. Platform Locale Has Changed Any change to the OS locale or default encoding can render the outbound password and master password files unreadable by the Integration Server. For this reason, Software AG recommends that you do not change platform locale after the Integration Server has been installed and started.
307
The Integration Server is configured to prompt for the master password and you do not have recent backups of the outbound password file and the passman.cnf file. The Integration Server is configured to prompt for the master password and you have lost or forgotten the master password.
308
To reset stored outbound passwords and the master password 1 Start the Integration Server if it is not already running. If your Integration Server is configured to prompt you for a master password during server initialization, enter any value. Integration Server takes you into safe mode, which is the Integration Server Administrator, but in a mode that is not connected to any external resources. 2 3 4 In the Security menu of the Navigation panel, click Outbound Passwords. Click Update Master Password. Click Reset All Outbound Passwords. The Integration Server displays a warning screen, to be sure you want to reset the passwords. 5 6 Click Reset Passwords. The Integration Server asks again if you are sure you want to reset the passwords. Click OK. This step clears the stored outbound passwords and changes the master password to "manage." 7 8 From the Outbound Passwords screen, click Change Password and change the master password to something other than "manage." Restart the Integration Server. You will see error messages as the Integration Server attempts to connect to the applications and subsystems for which the server no longer has passwords stored. 9 Go to the configuration screen for each application or subsystem and re-enter the password required for the Integration Server to connect to that application or subsystem. Screens to check include those that define remote server aliases, cluster configuration, JDBC connection pools, e-mail listeners, LDAP servers, proxy servers, Broker configuration, and WmDB.
309
To enable the port, go to the Security > Ports > Edit E-mail Client Configuration Screen in the Integration Server Administrator and update the Password field to specify the password needed to connect to the e-mail server. If you export a package that is associated with an e-mail listener from a 6.5 Integration Server to a pre-6.5 Integration Server, the e-mail listener will not be replicated at all. You must manually reconfigure the listener on the pre-6.5 Integration Server after installing the package there.
310
19
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring PKI System Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating a PKI Profile and Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connecting to and Disconnecting from the PKI System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Logging in a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deleting a PKI Profile Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing and Updating Information for a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing or Updating PKI Profile Alias Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Determining Whether a PKI Profile Is Logged In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recovering a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Changing the Password for a PKI Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Updating Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exporting a PKI Profile from the File System to an HSM Device . . . . . . . . . . . . . . . . . . . . . . . . . Installing an Entrust PKI Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Password Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About CRL Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
311
Overview
Public Key Infrastructure (PKI) allows users to exchange information securely over a network through the use of public and private keys. PKI also performs automatic key management. The Integration Server interacts with PKI through profiles. PKI profiles provide a secure way of storing keying material needed for encrypting, decrypting, verifying, and signing documents. A PKI profile is a file that contains your private key, user certificate, digital signature, CA certificate, certificate histories, and other information. You can store PKI profiles in your file system (as .epf files), or for even greater security, on an HSM device. An HSM device provides a secure alternate location for PKI profiles. Even if a hacker completely subverts the Integration Server and underlying operating system, they cannot get the private key out of the HSM device, but they might be able to get the key from an .epf file. The PKI system consists of the Certificate Authority and an LDAP Directory. The Certificate Authority manages keys and security credentials. The LDAP directory stores copies of encryption certificates associated with PKI profiles, as well as policy certificates and Certificate Revocation Lists (CRLs). If your PKI system administrator does not allow direct connections to your PKI system, you can set up a PKI proxy. The proxy sits between the client (in this case your Integration Server) and your PKI system and routes PKIXCMP messages between them. See Installing an Entrust PKI Proxy on page 327 for more information.
312
Getting Started
The following section outlines the steps required to set up your system to use PKI profiles: 1 2 Install the PKI system according to vendor instructions. If your PKI system administrator does not allow direct connections from clients, install a PKI proxy server, according to the vendor's instructions. See Installing an Entrust PKI Proxy on page 327 for more information. (Optional) Install an HSM device on the machine on which your Integration Server runs, according to the vendor's instructions. Important! The library must reside in your operating system path. 4 Install the WMPKI package on the Integration Server (or make sure it was installed when you installed the server). Go to the Packages > Management screen on the Integration Server Administrator and look for WmPKI in the list of packages or check the Integration Server_directory\packages directory.
313
Configure the PKI system settings from the Integration Server. In this step you specify PKI connection settings. See Configuring PKI System Settings on page 314 below for instructions. Create PKI profiles if they were not previously created using another tool. In this step you use the activation codes you obtained from your Registration Authority to create PKI profiles. See Creating a PKI Profile and Alias on page 316 for instructions.
Instruct your development staff to write or update applications to use the built-in public services in your WmPKI package (the pub.pki series). These built-in services enable your application to the access PKI profiles and perform cryptographic operations. For more information about using these services, see the webMethods Integration Server Built-In Services Reference.
314
Specify... Host name (IP address) and port of the LDAP directory associated with your PKI authority, for example 127:0.0.1:389. The LDAP directory contains copies of encryption certificates associated with your PKI profiles. It also contains the policy certificate and CRLs. Note: When the Integration Server attempts to connect to the LDAP directory, the watt.security.pki.jnditimeout property specifies how long the Integration Server waits for the connection to succeed. If the connection fails, you will need to re-attempt your action later. For more information, see Appendix B, Server Configuration Parameters.
Select Use HTTP Proxy if you are using the PKI proxy and enter the following information: For this parameter... Entrust Authority Host Proxy Entrust Authority URL Proxy LDAP Directory URL Specify... Host name (IP address) of the server on which the PKI authority is running. The proxy connects to this host. URL of the proxy to your PKI authority. URL of the proxy to your PKI authority's LDAP directory.
Under Enable CRL Checking, select Yes if you want the Integration Server to perform a revocation check against certificates. CRL checking is performed only for internal certificates, that is, certificates issued by your PKI system's certificate authority. If CRL checking is enabled and the server encounters a revoked certificate, the server rejects the certificate (and the request) and issues an error message. Note: If your server will be disconnected from the PKI system for long periods of time, disable CRL checking. See About CRL Checking on page 328 for more information about this topic.
In the Hardware Device Library Name field, enter the name of the file that contains the PKCS #11 shared library. This library (for example cknfast.dll) is supplied by your HSM vendor and allows your Integration Server to communicate with the HSM device. Note: The library must reside in your operating system path.
315
2 3 4 5 6
Under PKI Profile Location, select File System if you want to store the PKI profile in your file system or Hardware Device if you want to store the PKI profile on an HSM device.
316
If you selected File System under PKI Profile Location, enter the following information: For this parameter... File Name Specify... Name of the .epf file. You can specify an absolute or relative path. If you specify just the file name, the server writes the PKI profile to the server root directory. Be sure to specify a path that is valid and accessible to the server. Password you want to associate with the PKI profile. This password is required when you log in a PKI profile. There may be times when the server asks you to change a password. See Password Rules on page 327 for more information. The same password again to make sure you typed it correctly.
Password
Confirm Password 9
If you selected Hardware Device under PKI Profile Location, enter the following information: For this parameter... Label Specify... Label of the token to associate with this PKI profile. To see a list of tokens (and their labels) currently inserted into the HSM device, click View Label Information. Later, when you log in the PKI profile, the server will search each slot in the HSM device until it finds a token with this label. Password associated with the PKI profile. This password was assigned to the token when it was formatted.
Password
10 Select Use Auxiliary Profile if you want to create an auxiliary PKI profile, which stores information about previous decryption key updates. The server uses this file when decrypting messages that were encrypted with an old key. Enter the following information: For this parameter... Path to Auxiliary Profile Specify... Path to the auxiliary PKI profile for the HSM device (see below). Be sure to specify a path that is valid and accessible to the server. Name of the auxiliary file for the HSM device. This file resides in the file system and contains a history of all decryption keys created. When you perform a key update, the new decryption key is added to the file. The server uses this file when decrypting messages that were encrypted with an old key.
11 Under Key Information, enter the following information: For this parameter... Specify...
317
Key Strength
Strength of the signing and encryption keys, measured as the number of bits in the public or private keys. Select 1024 or 2048. 1024 is the default. A larger size increases the strength of encryption, but can slow performance. Encryption algorithm to use for the signing and encryption of keys. Select RSA or DSA. RSA is the default.
If you selected Hardware Device under PKI Profile Location, enter the following information: For this parameter... Label Specify... Label of the token to associate with this PKI profile. To see a list of tokens (and their labels) currently inserted into the HSM device, click View Label Information. Later, when you log in the PKI profile, the server will search each slot in the HSM device until it finds a token with this label.
318
Under PKI Profile EXecute ACL Information, enter the ACL that governs which user groups on your server can use this PKI profile. Select an ACL from the drop down list. By default, only members of groups governed by the Internal ACL can use this profile.
10 Under List of Trusted Certificates, specify a list of external certificates trusted by this PKI profile. You can add multiple certificates by using this format: D:\certs\cert1;D:\certs\cert2;.... 11 Click Create PKI Profile Alias.
319
To log in a PKI Profile 1 2 3 4 5 If you are logging in a PKI profile that is stored on an HSM device, make sure you insert the appropriate token into a slot on the HSM device. Open the Integration Server Administrator if it is not already open. In the Adapters menu of the Navigation panel, click PKI. In the PKI menu, click Profile Management. In the entry for the PKI profile you want to log in, click Log In.
320
To Display or update the Execute ACL associated with the PKI profile
To determine whether or not a PKI profile is logged in 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Adapters menu of the Navigation panel, click PKI. In the PKI menu, click Profile Management. Look at the Logged In column for the PKI profile. If it contains Yes, the profile is logged in. If it contains No, the profile is logged out.
321
To recover a PKI Profile 1 If you are recovering a PKI profile that is stored on an HSM device, make sure a preformatted token has already been inserted into a slot in the device. The token should be empty except for a label and a password. Click View Label Information to display a list of tokens (and their labels) currently inserted in the HSM device. Open the Integration Server Administrator if it is not already open. In the Adapters menu of the Navigation panel, click PKI. In the PKI menu, click Profile Management. Click Recover PKI Profile. Under Activation Codes from Registration Authority, enter the following information: For this parameter... Reference Number Authorization Code 7 8 Specify... Reference number provided by your registration authority when you initiated the key recovery. Authorization code provided by your registration authority when you initiated the key recovery.
2 3 4 5 6
Under PKI Profile Location, select File System if you want to store the PKI profile in your file system or Hardware Device if you want to store the PKI profile on an HSM device. If you selected File System under PKI Profile Location, enter the following information: For this parameter... File Name Specify... Name of the .epf file. You can specify an absolute or relative path. If you specify just the file name, the server writes the PKI profile to the server's root directory. Be sure to specify a path that is valid and accessible to the server. Password you want to associate with the PKI profile.
Password
322
Specify... Enter the same password again to make sure you typed it correctly.
If you selected Hardware Device under PKI Profile Location, enter the following information: For this parameter... Label Specify... Label of the token to associate with this PKI profile. To see a list of tokens (and their labels) currently inserted into the HSM device, click View Label Information. Later, when you log in the PKI profile, the server will search each slot in the HSM device until it finds a token with this label. Password associated with the PKI profile. This password was assigned to the token when it was formatted.
Password
10 Select Use Auxiliary Profile to create an auxiliary PKI profile, which stores information about previous decryption key updates. The server uses this file when decrypting messages that were encrypted with an old key. Enter the following information: For this parameter... Path to Auxiliary Profile Auxiliary Profile Name Specify... Path to the auxiliary file for the HSM device (see below). Be sure to specify a path that is valid and accessible to the server. Name of the auxiliary file for the HSM device. This file resides on the file system and contains a history of all decryption keys created. When you perform a key update, the new decryption key is added to the file. The server uses this file when decrypting messages that were encrypted with an old key.
11 Under Key Information, enter the following information: For this parameter... Key Strength Specify... Strength of the signing and encryption keys, measured as the number of bits in the key. Select 1024 or 2048. 1024 is the default. A larger size increases the strength of encryption, but can slow performance. Encryption algorithm to use for the signing and encryption of keys. Select RSA or DSA. RSA is the default.
323
To change a password 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Adapters menu of the Navigation panel, click PKI. In the PKI menu, click Profile Management. In the Change Password column in the PKI Profile Alias List, click Password in the row for the PKI profile whose password you want to change. The server prompts you to enter the new password and confirm it.
Updating Keys
For security purposes, keys have expiration dates. This prevents unlimited use in cases where CRLs are not being checked. When and how keys expire depends on the kind of key account you set up with your PKI authority. There are usually two kinds of accounts: With Expiry Accounts, the key expires on a specific date and is not renewable. You might obtain an expiry key account for a contractor who works for your company for 6 months. You cannot update keys for expiry accounts. With a Renewal Account, the key will expire, but you have the option of renewing it. The PKI authority can renew it for you automatically, or you can renew it manually. The PKI authority will attempt to automatically renew the key after a period of time, for example, 6 months. If you want to renew the key before then, you can do so from the Integration Server Administrator. When you renew or update a key, the server obtains a new key from your PKI system and writes it to the PKI profile. Important! Your server must be connected to your PKI system when you update keys.
324
To update keys 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Adapters menu of the Navigation panel, click PKI. In the PKI menu, click Profile Management. In the Update Keys column in the PKI Profile List, click Update in the row for the PKI profile whose keys you want to update. Important! The keys can only be updated if the profile is logged in (i.e., if the Logged In field is set to Yes. If the Logged In field is set to No, then click Log In.
2 3 4 5 6
325
Under PKI Profile on Hardware Device, enter the following information: For this parameter... Label Specify... Label of the token to associate with this PKI profile. To see a list of tokens (and their labels) currently inserted into the HSM device, click View Label Information. Later, when you log in the PKI profile, the server will search each slot in the HSM device until it finds a token with this label. Yes if you want the key history of the PKI profile to be exported with the PKI profile, else No. The key history will be written to the new PKI profile on the HSM device.
Select Use Auxiliary Profile to create an auxiliary PKI profile, which stores information about previous decryption key updates. The server uses this file when decrypting messages that were encrypted with an old key. Enter the following information: For this parameter... Path to Auxiliary Profile Specify... Path to the auxiliary PKI profile for the HSM device (see below). Be sure to specify a path that is valid and accessible to the server. Name of the auxiliary file for the HSM device. This file resides in the file system and contains a history of all decryption keys created. When you perform a key update, the new decryption key is added to the file. The server uses this file when decrypting messages that were encrypted with an old key.
Under Password for PKI Profile, enter the password associated with the PKI profile. This password is required when you log in the PKI profile.
10 Click Export. 11 Create a new alias for the profile. SeeCreating the PKI Profile Alias on page 318 for instructions.
326
The Directory servlet directs messages to the LDAP directory. 3 Configure your Integration Server to point to the proxy server. See Configuring PKI System Settings on page 314 for instructions.
Password Rules
Under some circumstances, the Integration Server might ask you to change a PKI profile's password. This can happen if you try to log in a PKI profile when your Integration Server is not connected to the PKI system. When the Integration Server is connected to the PKI system, the Integration Server follows the PKI system's rules for passwords. (The PKI system's rules are enforced when you create a password because the Integration Server must be connected to the PKI system for PKI profile creation.) When the Integration Server is not connected to the PKI system, the server uses a default set of password rules. These default rules are stored in your Integration Server. If you log in a profile when your Integration Server is not connected to your PKI system (when the server's default rules are in effect) and your default rules are more restrictive than the rules under which the PKI profile was created (the PKI system's rules), the Integration Server will log in the PKI profile then ask you to change the password to one that adheres to the default rules. Example: Your PKI-system rules and the default rules are the same except your default rules require that a password contain a digit. The Finance PKI profile's password does not contain a digit because one was not required during creation. You try to log in the Finance profile when the Integration Server is not connected to the PKI system. The Integration Server (running with the default rules) sees that the password does not contain a digit and asks you to change the password. After you change the password to one that adheres to the default rules, that is, contains a digit, the Integration Server allows you to log in the Finance PKI profile.
327
By default, the server does not perform CRL checking. You can turn CRL checking on or off as needed. If CRL checking is turned on, the Integration Server performs it at the following times: When you log in a PKI profile. If CRL checking is enabled and the server encounters a revoked certificate, the server rejects the certificate (and the request) and issues an error message.
Could not login PKI Profile Alias 'alias': The signing certificate is not valid: The certificate being validated is revoked.
During signature verification. The server performs signature verification when it processes a signed document. If the client's certificate was signed by your CA, the server performs a revocation check at this point. Note: If your server will be disconnected from the PKI system for long periods of time, disable CRL checking.
328
20
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Reverse HTTP Gateway Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Advantages to Reverse HTTP Gateway vs. Traditional Third-Party Proxy Servers . . . . . . . . . . . Clustering in the Reverse HTTP Gateway Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Up the Reverse HTTP Gateway Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Connecting Your Internal Server to a Reverse HTTP Gateway Server . . . . . . . . . . . . . . . . . . . . Performing Client Authentication on the Reverse HTTP Gateway Server . . . . . . . . . . . . . . . . . . Frequently Asked Questions About Reverse HTTP Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . .
329
Overview
If your Integration Server sits behind an internal firewall and is not allowed to accept communications from external clients through the DMZ, you can set up a Reverse HTTP Gateway to allow the Internal Server to process requests from external clients. In this configuration, your Internal Servers remain behind your inner firewall, where external clients cannot access them. You place another Integration Server in your DMZ to act as a Reverse HTTP Gateway Server. The Reverse HTTP Gateway Server acts as an intermediary between the Internet and your Internal Servers. By default, all user validation and transaction processing is performed on the Internal Server.
External clients send requests to the Reverse HTTP Gateway Server (1), which in turn passes the requests to the Internal Server (2). After processing the requests, the Internal Server sends the response to the Reverse HTTP Gateway Server (3), which in turn passes it back to the client (4). With a Reverse HTTP Gateway, there is no need to open a port through the internal firewall to allow a connection from the DMZ to the internal network. For a Reverse HTTP Gateway to work, the internal firewall must still allow a connection from the Internal Server to the DMZ (that is, an outbound connection). By limiting the connections to just those established by the Internal Server, the Reverse HTTP Gateway facility makes it more difficult for an attacker to directly penetrate your internal network, even if they subvert a system in the DMZ. However, like any other security mechanism, it is not foolproof; the information still flows from the DMZ to the internal network over the connection established from the inside. The Reverse HTTP Gateway Server is transparent to the client and, unlike some thirdparty proxy servers, requires no modifications to the client. Reverse HTTP Gateway supports nearly all requests that a regular Integration Server handles, including guaranteed delivery.
330
Important! To get the maximum benefit from the Reverse HTTP Gateway configuration, Software AG highly recommends that you configure your inner firewall to deny all inbound connections.
331
332
333
Done?
Notes This is the port through which the Reverse Gateway Integration Server listens for requests from external clients. An Integration Server is not considered to be a Reverse Gateway Integration Server unless it has an enabled gateway external port. Configure access to this port so that partners and other clients with whom you trade have access. Note: If you plan to use an HTTPS port here, you must store a server certificate, server private key, and a CA certificate on this server. See Chapter 14, Securing Communications with the Server for instructions.
This is the port through which the Reverse Gateway Integration Server maintains its connection to the Internal Server. See Setting Up the Gateway External Port on page 335 for instructions on setting up this port. If you are going to set up an encrypted connection between the Internal Server and the Reverse Gateway Integration Server, you can optionally store a certificate for the Internal Server's administrator user on the Reverse Gateway Integration Server. See Importing a Certificate (Client or CA Signing Certificate) and Mapping It to a User on page 280 for more information. Optional (but strongly recommended). Set up IP address filtering on the registration port so that only the Internal Integration Server can connect to your Reverse Gateway Integration Server. This step provides an additional layer of protection to supplement the IP address filtering performed by your firewall and the user authentication. Note: Even if your external firewall filters out connections to the Reverse Gateway registration port, IP address filtering is a good idea because it will stop insiders from connecting to the Reverse Gateway Integration Server. See Restricting IP Addresses that Can Connect to a Port on page 253 for more information.
334
Note: By default, this port will be disabled and all services will be set to deny by default except for some basic services required by the Integration Server.
To set up the gateway external port 1 2 3 4 5 Open the Integration Server Administrator for the Reverse HTTP Gateway Server if it is not already open. In the Navigation panel of the screen, on the Security menu, click Ports. Under Add Port, select Reverse HTTP Gateway Server. Click Submit. On the Edit Reverse HTTP Gateway Server Configuration screen, under Gateway External Port Port, enter the following information: For this parameter Protocol Specify... Select HTTP or HTTPS. If you select HTTPS, additional security and credential fields will be displayed at the bottom of the screen. The number you want to use for the gateway external port. Use a number that is not already in use. This is the port that clients will connect to through your outer firewall. This field associates a package with a port. Typically you will not need to work with packages on a Reverse HTTP Gateway Server; therefore, you can leave this field with the default setting.
Port
Package name
335
Specify... IP address to which to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use this specific address. If you do not specify a bind address, the server picks one for you. How long a request will remain in the queue after the port is suspended. The default is 200 milliseconds (ms). The maximum is 65535 ms. After this time has passed, the request is rejected. How long to wait before closing an idle connection to a client. The default is 20000 ms. If you select Disable, the server uses the common server thread pool for this port. If you select Enable, the server creates a private thread pool for this port so that it does not need to compete with other server functions for threads. If Threadpool is enabled, the following three fields are displayed. Threadpool Min Minimum number of threads the server maintains in this thread pool. When the Reverse Gateway Server starts, the thread pool initially contains this minimum number of threads. The server adds threads to the pool as needed until it reaches the maximum allowed. The default is 1. Threadpool Max Maximum number of threads the server maintains in this thread pool. If this maximum number is reached, the server waits until services complete and return threads to the pool before running more services. The default is 5. Threadpool Priority Priority with which the JVM treats threads from this thread pool. The larger the number, the higher the priority. The default is 5. Important! Be very careful when setting the thread pool priority; it can affect server performance and throughput.
Backlog
336
If you selected HTTPS in the Protocol field, enter the following information under Security Configuration: For this parameter Client Authentication Specify... The type of client authentication to perform for requests coming through the gateway external port (in other words, requests coming from the external client). See Chapter 16, Authenticating Clients for more information. Note: In a default Reverse HTTP Gateway configuration, the Reverse HTTP Gateway Server does not perform client authentication. Rather, it obtains authentication information (user/password or certificates) from the external client and passes it to the Internal Server for authentication. However, if you want the Reverse HTTP Gateway Server to perform client authentication as well, you can do so by setting the watt.server.revInvoke.proxyMapUserCerts system property to "true." See Performing Client Authentication on the Reverse HTTP Gateway Server on page 345 for more information. Option Username/Password. Description The Reverse HTTP Gateway Server will not request client certificates. Instead it looks for user and password information in the request header. The Reverse HTTP Gateway Integration Server will request client certificates for requests that come through this port (the gateway external port). If the client does not present a certificate, the request proceeds using the user and password information contained in the request header. The Reverse HTTP Gateway Server requires client certificates for all requests that come through this port (the gateway external port). If the client does not supply a certificate, the request fails.
337
Specify... Important! Use the same authentication mode here as you use for the Internal Server. For example, suppose you specify authentication mode Required on the Internal Server. Specifying Required on the gateway external port of the Reverse Gateway Integration Server ensures that the request passed to the Internal Server includes a certificate.
If you selected HTTPS in the Protocol field, optionally enter the following information under Listener Specific Credentials: Note: Use these settings only if you want to use a different set of credentials from the ones specified on the Certificates Screen. For this parameter Keystore Alias Specify... Optional. Keystore alias created for the keystore containing the certificate that the Reverse Gateway Integration Server is to present to requests coming in through this port (the gateway external port). Optional. Specifies the alias for a specific key in the above specified keystore. Optional. Alias for the truststore file that contains the trusted root certificates associated with the CA signing authority.
Locate the port in the Port List, and click No in the Enabled column to enable the gateway external port. The server displays a dialog box that prompts you to verify your action. Click OK to verify you want to enable the port. Integration Server replaces the No with the enabled. icon to indicate that the port is now
338
To set up the gateway registration port 1 2 3 4 5 Open the Integration Server Administrator for the Reverse Gateway Integration Server if it is not already open. In the Security menu of the Navigation panel, click Ports. Under Add Port, select Reverse HTTP Gateway Server. Click Submit. On the Edit Reverse HTTP Gateway Server Configuration screen, under Gateway Registration Port, enter the following information: For this parameter Protocol Specify... Select HTTP or HTTPS. If you select HTTPS, additional security and credential fields will be displayed at the bottom of the screen. The number you want to use for the gateway registration port. Use a number that is not already in use. It is best not to use a standard port such as 80 (the standard port for HTTP) or 443 (the standard port for HTTPS); since the external firewall will allow access to those ports from the outside world. Package name This field associates a package with a port. Typically you will not need to work with packages from a Reverse Gateway Integration Server; therefore you can leave this field with the default setting. IP address to which to bind this port. Specify a bind address if your machine has multiple IP addresses and you want the port to use this specific address. If you do not specify a bind address, the server picks one for you.
Port
339
Specify... How long a request will remain in the queue after the port is suspended. The default is 200 milliseconds (ms). The maximum is 65535 ms. After this time has passed, the request is rejected.
If you selected HTTPS in the Protocol field, enter the following information in the Security Configuration panel: For this parameter Client Authentication Specify... The type of client authentication to perform when the Internal Server establishes a persistent connection to the Reverse Gateway Integration Server. This setting controls whether the Reverse HTTP Gateway Server will ask the Internal Server to present a certificate. See Chapter 16, Authenticating Clients for more information about how clients are authenticated. Option Username/Password Description The Reverse HTTP Gateway Server will not request a client certificate from the Internal Server, but rather will look for user and password information. The Reverse HTTP Gateway Server will request a client certificate from the Internal Server. If the Internal Server does not present a certificate, the request proceeds using the user and password information. The Reverse HTTP Gateway Server requires a client certificate from the Internal Server. If the Internal Server does not supply a client certificate, the request fails. In addition, if the certificate is not mapped to a user with Administrator privileges on the Reverse HTTP Gateway Server, the request fails.
If you selected HTTPS in the Protocol field, enter the following information under Listener Specific Credentials: Note: Use these settings only if you want to use a different set of credentials from the ones specified on the Certificates Screen.
340
Specify... Optional. Keystore alias created for the keystore containing the certificate that the Reverse Gateway Integration Server is to present to requests coming in through this port (the gateway external port). Optional. Specifies the alias for a specific key in the above specified keystore. Optional. Alias for the truststore file that contains the trusted root certificates associated with the CA signing authority.
Locate the port in the Port List, and click No in the Enabled column to enable the Gateway Registration port. The server displays a dialog box that prompts you to verify your action. Click OK to verify you want to enable the port. The server replaces the No with the icon to indicate that the port is now enabled.
341
To set up the Internal Server 1 2 3 4 5 Open the Integration Server Administrator for the Internal Server if it is not already open. In the Navigation panel of the screen, on the Security menu, click Ports. Under Add Port, select Internal Server. Click Submit. On the Edit Internal Server Configuration screen, under Internal Server, enter the following information: For this parameter Protocol Specify... Select HTTP or HTTPS. If you select HTTPS, additional security and credential fields will be displayed at the bottom of the screen. This field associates a package with a port. Typically you will not need to work with packages on an Internal Server; therefore you can leave this field with the default setting. Number of connections maintained between the Reverse Gateway Server and the Internal Server. Note: For best performance, on the Internal Server, set the Max Connections settings on the listener to be slightly less than the Maximum Threads of the Server Threadpool, which is set on the Settings > Resources page. If you have more than one listener defined on the Internal Server, the sum of their Max Connection settings should be slightly less than the Maximum Threads of the Server Threadpool. Do not set the Max Connections to be equal to the Internal Server's threadpool. Instead, reserve enough threads to handle the execution of scheduled services, triggers, and users who connect directly to the Internal Server.
Package name
Max Connections
342
Specify... If you select Disable, the server uses the common server thread pool for this port. If you select Enable, the server creates a private thread pool for this port so that it does not need to compete with other server functions for threads. If Threadpool is enabled, the following three fields are displayed. Threadpool Min Minimum number of threads the server maintains in this thread pool. When the server starts, the thread pool initially contains this minimum number of threads. The server adds threads to the pool as needed until it reaches the maximum allowed. The default is 1. Threadpool Max Maximum number of threads the server maintains in this thread pool. If this maximum number is reached, the server waits until services complete and return threads to the pool before running more services. The default is 5. Threadpool Priority Priority with which the JVM treats threads from this thread pool. The larger the number, the higher the priority. The default is 5. Important! Be very careful when setting the thread pool priority; it can affect server performance and throughput.
Under Reverse HTTP Gateway Server, enter the following information: For this parameter Host Port Specify... Host name or IP address of the machine on which the Reverse HTTP Gateway Server is running. Port number of the gateway registration port on the Reverse Gateway Server.
343
If you selected HTTPS in the Protocol field, optionally enter the following information under Registration Credentials. Note that the registration credentials specified here must satisfy the settings on the Reverse HTTP Gateway Server's Gateway Registration Port: For this parameter User Name Password Keystore Alias Specify... Name of the user on the Reverse HTTP Gateway Server that the Internal Server should connect as. Password of the user on the Reverse HTTP Gateway Server that the Internal Server should connect as. Optional. Keystore alias created for the keystore containing the certificate that the Internal Server sends to the Reverse HTTP Gateway Server for client authentication. The Internal Server sends this certificate when it makes its initial registration connection to the Reverse HTTP Gateway Server. The Internal Server sends this certificate only if asked to by the Reverse HTTP Gateway Server. Specify a value here only if you want to present a different server certificate from the one specified on the Certificates screen. Key Alias Truststore Alias Optional. Key alias created for the key pair and associated certificate, in the previously specified keystore. Optional. Alias for the truststore file that contains the trusted root certificates associated with the CA signing authority.
Under External Client Security, in the Client Authentication list, specify the type of client authentication the Internal Server performs against external clients. External clients pass their authentication information to the Reverse HTTP Gateway Server, which in turn passes it to the Internal Server. Option Username/Password Description The Internal Server will not request client certificates from external clients. Instead it will look for user and password information in the request header. The Internal Server will request client certificates for requests from external clients. If the external client does not present a certificate, the request proceeds using the user and password information contained in the request header. The Internal Server requires client certificates for requests from external clients. If the external client does not supply a certificate, the request fails.
344
Important! Use the same authentication mode here as you use for gateway external port. For example, suppose you specify authentication mode Required on the Internal Server. Specifying Required on the gateway external port of the Reverse HTTP Gateway Server ensures that the request passed to the Internal Server includes a certificate. See Chapter 16, Authenticating Clients for more information about processing client certificates. 9 Click Save Changes. 10 In the Port List, locate Internal Registration, and click No in the Enabled column. This step enables the connection between the Internal Server and the gateway registration port on the Gateway HTTP Server. The server displays a dialog box that prompts you to verify your action. 11 Click OK to verify you want to enable the connection. The server replaces the No with the enabled. icon to indicate that the connection is now
345
Make sure that the external client's imported certificate or user name is the same on both the Reverse HTTP Gateway Server and the Internal Server. 3 Set the client authentication mode of the gateway external port on the Reverse HTTP Gateway Server to Require Client Certificates: a b c Navigate to the Security > Ports screen. Find the row for the gateway external port and click the port number, then click Edit HTTP Port Configuration. From the Edit Reverse HTTP Gateway Server Configuration screen, in the Gateway External Port area of the screen, in the Client Authentication field, select Require Client Certificates and click Save Changes. For more information about this port, see Setting Up the Gateway External Port on page 335.
Each connection consumes a thread, either from the Internal Server's common thread pool, or from the internal listener's private thread pool, if one is defined. The consumed thread can only be used to process requests from the Reverse HTTP Gateway Server. If you have defined a private thread pool for the internal registration listener, then the number of connections you can specify in the Max Connections field is limited to the maximum number of threads allowed in the private thread pool for this listener.
346
If you have multiple internal registration listeners, each with its own private threadpool, then the same rule applies for each internal registration listener. If you have not defined a private thread pool for an internal registration listener, then a reasonable limit for the Max Connections field is 75% of the number of server threads specified in Server Thread Pool Max Threads field on the Settings > Resources page. If you have multiple internal registration listeners and none of them have private threadpools, then the sum of all connections specified in the Max Connections fields for these listeners should not exceed 75% of the number of server threads specified in Server Thread Pool Max Threads. A thread will remain open unless it is closed by a firewall, a network glitch, or an exception. Is there persistence with the Reverse HTTP Gateway Server? No. The Reverse HTTP Gateway Server is just a network hop for the incoming request. I want to authenticate the SSL credentials of external clients. Where do I set up certificates? The following table shows where to set up certificates for the default Reverse HTTP Gateway configuration, in which the Internal Server performs client authentication. If you want to perform client authentication on the Reverse HTTP Gateway Server as well, see Performing Client Authentication on the Reverse HTTP Gateway Server on page 345. Reverse HTTP Gateway Server Gateway External Port Set up a keystore that contains the server certificate and private key for the Reverse Gateway Server. Set up a truststore that contains the certificates of certificate authorities trusted by the Reverse Gateway Server. The Reverse Gateway Server will make sure that certificates sent by external clients are signed by CAs in this truststore. This truststore must be the same as the truststore on the Internal Server. Set up a truststore that contains the certificates of certificate authorities trusted by the Internal Server. The Internal Server will make sure that certificates sent by external clients (through the Reverse Gateway Server) are signed by CAs in this truststore. This truststore must be the same as the truststore for the Reverse Gateway Servers gateway external port. Internal Server
347
Reverse HTTP Gateway Server (Optional) Import public certificates of external users and map them to users on the Reverse Gateway Server. Do this only if you want to perform client authentication on the Reverse Gateway Server in addition to the Internal Server. If you choose to perform client authentication on both the Reverse Gateway Server and the Internal Server, make sure the certificate mappings are the same on both servers. Registration Port (HTTPS) Import the Internal Server's public certificate and map it to a user that has administrator privileges. Make sure the Internal Servers CA certificate is present in the truststore of the gateway registration port
Internal Server Import public certificates of external users and map them to users on the Internal Server. If you choose to perform client authentication on both the Reverse Gateway Server and the Internal Server, make sure the certificate mappings are the same on both servers.
Set up a keystore that contains the Internal Servers certificate and private key. Make sure the registration ports CA certificate is present in the Internal Servers truststore.
Can I use the Reverse HTTP Gateway Server as my outbound proxy server as well? No. The only requests that go through the Reverse HTTP Gateway Server are inbound requests from the external client destined for the Internal Server and responses to those requests from the Internal Server back to the external client. Any non-solicited requests from the Internal Server go directly to the external client. What authentication mode should I use for the Reverse HTTP Gateway Server and the Internal Server? Authentication mode is the method a server uses to authenticate client requests. In a default Reverse HTTP Gateway configuration, the Reverse HTTP Gateway Server receives authentication information from the external client and passes it on to the Internal Server, which performs the authentication. Be sure to specify the same authentication mode for the Internal Server and for the gateway external port on the Reverse Gateway Server. For example, if the Internal Server's authentication mode is Required, the gateway external port on the Reverse Gateway Server must also be Required so that the Reverse Gateway Server always passes the external client's certificate to the Internal Server. In contrast, the authentication mode of the gateway registration port on the Reverse Gateway Server does not need to match the authentication mode of the Internal Server or the gateway external port.
348
If you want to perform client authentication on the Reverse HTTP Gateway Server, see Performing Client Authentication on the Reverse HTTP Gateway Server on page 345. Does Reverse HTTP Gateway support the FTP protocol? No, it is limited to HTTP and HTTPS only. Are the SOCK and SSLSOCK protocols supported? No, these were proprietary protocols used in the 4.x and 6.x releases. Starting in the 7.1 release, SOCK and SSLSOCK have been replaced by HTTP and HTTPS. Is it possible to run filtering services on the Reverse Gateway server? No, filtering services were available in the 4.x and 6.x releases, but are not available in 7.x. and later.
349
350
21
Before You Begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of How Integration Server Works with Externally Defined Users and Groups . . . . . . . Configuring Central User Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of Using LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Server to Use LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Considerations for User Accounts and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About Granting Administrator Privileges to External Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Granting Developer Privileges to External Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Granting Access to Services and Files to External Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
351
Overview of How Integration Server Works with Externally Defined Users and Groups
The following sections provide information about how and when Integration Server interacts with users and groups defined in a central user directory or in LDAP, specifically: How externally defined users and groups can be used in Integration Server.
352
When Integration Server accesses information about externally defined users and groups. How Integration Server authenticates users who belong to externally defined groups or roles.
353
If the server cannot find an internally-defined user account for the supplied user name, the server accesses the external directory (either a central user directory or LDAP) to obtain user name and password information for the client. If it finds an externally defined user account, the server authenticates the client using the externally defined information. For example, if a user account is defined in the My webMethods Server user directory, Integration Server authenticates the client using the information defined in the My webMethods Server database. If the supplied password is correct, the server proceeds with the request. If the supplied password is not correct, the server rejects the request. Note: If the passwords are contained in an external authentication system other than Central Users or LDAP, for example Kerberos, you must create your own pluggable module to obtain this information. See Customizing Authentication Using JAAS on page 289 for information about setting up a pluggable module. If the server cannot find either an internally or externally defined user account for the user, the server rejects the request. If the user does not supply a user name or password, the server uses the internallydefined Default user account.
354
Integration Server must have a JDBC connection pool that points to the My webMethods Server database component, and the CentralUsers function in Integration Server must point to that connection pool. If you installed My webMethods Server in the same installation directory as Integration Server, the Software AG Installer created the connection pool from the My webMethods Server database parameters you supplied and pointed the CentralUsers function at that pool. The connection pool is named CentralUsersPool. If you installed My webMethods Server in a different installation directory from Integration Server, however, you must create the connection pool and point the CentralUsers function at that pool. For instructions, see Installing webMethods Products. If you later want to stop using central user management, follow the same instructions in Installing webMethods Products, but in the Associated Pool Alias list, click None, and then restart Integration Server. Note: Integration Server updates the Anonymous ACL automatically to include theMy webMethods Users Role from My webMethods Server.
355
356
Enter the following information: For this field... Cache Size (Number of Users) Specify... The maximum number of LDAP users Integration Server can keep in memory in the user cache. The default is 10. Once the limit is reached, Integration Server selects users for removal from the cache based on how long they have been idle. As a result, activity can extend the time a user remains in the cache. As a general rule, specify a cache size equivalent to 5-10% of the number of users in your LDAP system. However, if only a few sessions are ever logged on simultaneously, set the cache size to be the same as the number of simultaneous sessions. Credential Time-to-Live (Minutes) The number of minutes an LDAP user's credentials (userid and password) can remain in the credential cache before being purged. The default is 60 minutes. When a user first attempts to log in, Integration Server creates a user object and checks the user's credentials against the LDAP directory. Integration Server stores the credentials so that subsequent requests to authenticate will be made against the cached credentials, not the LDAP directory. For security reasons, you can control the length of time these cached credentials are valid. The credentials are secure because they are stored using a one-way hashing function, and cannot be recovered from the cache. If a user attempts to log in with credentials that do not match the cached version, Integration Server flushes the cache and checks the credentials against the LDAP directory. If the credentials are valid, the Integration Server caches them; otherwise, the cache remains empty. For normal secure environments, a time-to-live value between one hour and one day is adequate. For higher security environments, a time-to-live of between one and five minutes may be more appropriate. The Time-to-Live is absolute; therefore, activity will not cause the credentials to remain in cache longer.
Click Save Configuration. To finish configuring Integration Server to use an LDAP directory, continue to the procedure Defining an LDAP Directory to Integration Server on page 358.
357
358
Specify... The user ID the Integration Server should supply to connect to the LDAP server, for example, o=webm.com or dc=webm,dc=com. This user should not be the Administrator account, but a user that has permission to query groups and group membership. If your LDAP server allows anonymous access, leave this field blank.
Credentials
The password the Integration Server should supply to connect to the LDAP server, that is, the Principal's password. The Integration Server encrypts this password according to the settings specified on the Outbound Passwords screen. For more information, see Securing Communications with the Server on page 235. The number of seconds the Integration Server will wait while trying to connect to the LDAP server. After this time has passed, the Integration Server will try the next configured LDAP server on the list. The default is 5 seconds. Increase this number if your network has latency problems. If most requests will be from batch processes, you can increase this number to be 30 seconds or more. The minimum number of connections allowed in the pool that the Integration Server maintains for connecting to the LDAP server. When the Integration Server starts, the connection pool initially contains this minimum number of connections. The Integration Server adds connections to the pool as needed until it reaches the maximum allowed, which is specified in the Maximum Connection Pool field. The default is 0. The maximum number of connections allowed in the pool that the Integration Server maintains for connecting to the LDAP server. When the Integration Server starts, the connection pool initially contains a minimum number of connections, which are specified in the Minimum Connection Pool field. The Integration Server adds connections to the pool as needed until it reaches the maximum allowed. The default is 10.
359
Specify... Builds a distinguished name by adding a prefix and suffix to the user name. The Synthesize DN method can be faster than the Query DN method (see below) because it does not perform a query against the LDAP directory. However, if your LDAP system does not contain all users in a single flat structure, use the Query DN method instead. DN Prefix A string that specifies the beginning of a DN you want to pass to the LDAP server. DN Suffix A string that specifies the end of a DN you want to pass to the LDAP server. For example, if the prefix is "cn=" and the suffix is ",ou=Users" and a user logs in specifying "bob", the Integration Server builds the DN cn=bob,ou=Users and sends it to the LDAP server for authentication. Note: Be sure to specify all the characters required to form a proper DN. For instance, if you omit the comma from the suffix above, that is, you specify "ou=Users" instead of ",ou=Users", the Integration Server will build the invalid DN (cn=bobou=Users).
Query DN
Builds a query that searches a specified root directory for the user. Use this method instead of the Synthesize DN method (see above) if your LDAP directory has a complex structure. UID Property A property that identifies an LDAP userid, such as "cn" or
"uid".
User Root DN Enter the full distinguished name. For example, if you specify ou=users,dc=webMethods,dc=com, the Integration Server will issue a query that starts searching in the root directory ou=users for a common name that matches the name the user logged in with.
360
Specify... An Integration Server group with which the user is associated. The user is allowed to access services that members of this Integration Server group can access. This access is controlled by the ACLs with which the group is associated. If you also specify a value in the Group Member Attribute field, the user has the same access as members of the Integration Server group and members of LDAP groups that have been mapped to an Integration Server ACL. Important! Do not specify Anonymous as the default group if any user in this group needs to have administrator privileges. The default ACL denies the Anonymous group and will not allow access the root page. Choose the appropriate group in the Default Group field to ensure that the required ACLs get assigned to your group. Important! You must specify a value in the Group Member Attribute field, the Default Group field, or both.
The name of the attribute in a group's directory entry that identifies each member of the group. This value is usually "member" or "uniqueMember", but can vary depending on the schema of the LDAP directory. Integration Server uses this information during ACL checking to see if the user attempting to log in belongs to an LDAP group that has been mapped to an ACL. If no value is specified here, Integration Server does not check for membership in an LDAP group. As a result, the user's ability to access Integration Server services is controlled by the Integration Server group specified in the Default Group field. Note: You must specify a value in the Group Member Attribute field, the Default Group field, or both.
Group ID Property
361
Note: You must specify values in the Group ID Property and Group Root DN fields. 6 7 Click Save Changes. The LDAP Directory List displays the added the LDAP directory. Click Move Up/Move Down to order the directories in the list based on their priority. Note: If you define multiple LDAP servers, Integration Server will search the LDAP directories in the order in which they are displayed on the Security > User Management > LDAP Configuration screen. If Integration Server does not find the user in the first LDAP directory, it will search in order through the list.
362
About Keeping Internal and External User Accounts and Group Names Unique
Software AG recommends that you keep user names and group names unique between internal and external user accounts and groups. Having an external user account that has the same user name as an internal user account, or an external group with the same group name as an internal group might get confusing. If you do have identically named user names or group names, the server always uses the internally-defined information. To avoid confusion, Software AG recommends that you do not set up user accounts or groups internally if you are using an external directory. The exceptions are the predefined user accounts Default, Administrator, Developer, Replicator, and the predefined groups Everybody, Administrators, Developers, Replicators, and Anonymous. You cannot delete these user accounts and groups; therefore, make sure the internal accounts and groups have the correct definitions.
363
An exception to the above diagram is that all internally-defined users are members of the internally-defined Everybody group.
364
Anonymous ACL (if their role/group is not part of this already) Note: If you configured Integration Server to use central user management, the Anonymous ACL automatically includes the My webMethods users role.
365
Developers group. Instead, you need to set up an externally defined group for Software AG Designer or webMethods Developer. Then, add the externally defined group to the Developers ACL.
To grant developer privileges to an externally defined user 1 2 Set up an externally defined user account for the user if one does not already exist. Set up an externally defined developers group if one does not already exist. Important! Do not name the externally defined group "Developers." The name of the group must not be the same name as any internally-defined group. 3 4 Make the externally defined user a member of the externally defined developers group (ISDevs in the picture above). Update the Developers ACL to include the externally defined developers group in the Allowed list. Refer to Allowing or Denying Group Access to ACLs on page 269 for information on how to include externally defined developers to the Allowed list.
366
If you want to allow an externally defined user access to a service or file, update the ACL that protects the service or file to identify the external user's group or role as an Allowed group in the ACL. Similarly, if you want to explicitly deny an externally defined user access to a service or file, update the ACL that protects the service or file to identify the external user's group or role as a Denied group in the ACL.
367
368
22
Managing Packages
370 373 376 383 388 413
Using Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How the Server Stores Package Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Information about Your Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Copying Packages from One Server to Another . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using a Package Class Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
369
22 Managing Packages
Using Packages
A package contains a set of services and related files, such as specifications, document types, and DSPs. When you add a service, specification, document type, or DSP to the webMethods Integration Server, you must add it to a package. Use a package to group services and related files. By placing related files in a package, you can easily manage all the services and files in the package as a unit. For example, you can make them all available, disable them, refresh them, or delete them with one action. Additionally, if you have more than one Integration Server installed, you can use package management features to copy some or all services and files in a package to another server. You can group your services using any package structure you choose, though most organizations group services into packages by function or application. For example, you might put all purchasing-related services in a package called PurchaseOrderMgt and all time-reporting services into TimeCards. Important! Every service on the server must belong to a package. Before you can make a service available for execution, you must load the package to which it belongs. Access to a package and its contents is controlled through Access Control Lists (ACLs). Using ACLs, you control who can display a package from the Integration Server Administrator, Designer, and Developer, who can edit the contents of a package, and who can execute services contained in the package. For more information about protecting packages, see Controlling Access to Resources with ACLs on page 264. You can associate a package with a specific port so that when you replicate the package, it continues to use a port with the same number on the new server. See About Configuring Ports on page 110 for more information about associating a package with a port. Important! Be careful when replicating a package that is associated with a port; the new port might decrease security on the target system. For example, suppose you replicate a package that is associated with an HTTP port at 5556. The replication process creates an HTTP port at 5556 on the target server. If the target server normally uses only HTTPS ports because of their greater security, then the new port presents a possible security hole on that server.
Predefined Packages
The following packages are predefined and installed by default:
370
22 Managing Packages
Package Default
Description Integration Server looks in this package if a user accesses the server without specifying a package name (for example, by using the URL http://localhost:5555). You can also use it to store elements you create without first creating a package. Note: Integration Server searches the pub directory in the Default package for an index.dsp or index.html file. As shipped, the pub directory contains an index.html file that points the user to an index.dsp file in the WmRoot package. This index.dsp file loads the Integration Server Administrator. To prevent a user from inadvertently accessing the Integration Server Administrator, you can edit the index.html file in Default/pub and change it to point to an innocuous page. See Stage 7: Setting Up Security on page 527 for more information.
WmPublic
This package contains services that you can call from your client applications and services. See the webMethods Integration Server Built-In Services Reference for more information. This package provides core Integration Server functionality and auxiliary files. Important! Do not alter or delete this package.
WmRoot
WmTomcat
This package contains the Tomcat JSP/servlet engine developed by the Apache Software Foundation (http://www.apache.org/). Using this engine, developers can deploy and execute JavaServer Pages, Java servlets, and their supporting files within the Integration Server environment or incorporate Web applications into new or existing webMethods packages. This package supports webMethods 6 or later adapters. Important! Although the WmArt package is installed by default, if you are not fully licensed to use this package, it will be hidden from view, and you will not be able to build or run custom adapters, or use any transaction services.
WmART
WmVCS
This package contains services that enable you to store Integration Server elements in a source control system. See the Storing Services in a Version Control System for information about configuring Integration Server to use a source control system and using Developer with a source control system. For information about using Designer with a source control system, see webMethods Service Development Help.
371
22 Managing Packages
Package WmXSLT
Description This package contains services that you use to transform XML data from one format or structure to another. See the webMethods Integration Server Built-In Services Reference and the XSLT Services Developers Guide for more information.
The packages in the table below provide services that enable you or other webMethods products to perform certain tasks. This package... WmARTExtDC WmISExtDC WmTNExtDC Contains services that... Infrastructure Data Collector uses to discover and monitor adapters installed on Integration Server, Integration Server itself, and Trading Networks Server, respectively. Integration Server uses to extract and publish metadata about its services to CentraSite Metadata. Support business processes modeled in Software AG Designer. Flow services or the File Polling processing service can call to initially accept and consume inbound flat files. Support business processes monitored using webMethods Optimize. Support business processes executed using the webMethods Process Engine. Support tasks developed using the webMethods Task Engine. You can use to call methods on COM objects, and Windows-specific samples, such as sample Visual Basic services. Note: This package is deprecated in Integration Server 7.1 If you want to streamline Integration Server (for example, because you are using it only to host adapters), you can disable many of the packages described in above. For more information... Administering webMethods Optimize
WmAssetPublisher
webMethods BPM and CAF Workspace Metadata Help Software AG Designer Online Help webMethods Integration Server Built-In Services Reference Optimize documentation Administering webMethods Process Engine Working with BPM Tasks: webMethods Task Engine Users Guide Developing Integration Solutions: webMethods Developer Users Guide
WmDesigner WmFlatFile
WmOptimize WmPRT
WmTaskClient
WmWin32
372
22 Managing Packages
Important! Do not disable, delete, or alter the following packages: Default, WmPublic, WmRoot. You can disable the following packages: Package WmART Restriction Important! Do not disable this package unless you are also going to disable WmARTExtDC, or WmARTExtDC will not load. None. Important! Do not disable the WmISExtDC package unless you are also going to disable WmTNExtDC and WmARTExtDC, or those packages will not load. None. None.
WmAssetPublisher WmARTExtDC WmISExtDC WmTNExtDC WmFlatFile WmPRT WmDesigner WmTaskClient WmOptimize WmTomcat WmVCS WmXSLT
Sample Package
The WmSamples package contains sample services. You can find the WmSamples package in the certified samples area of the Knowledge Base on the Empower Product Support Web Site.
373
22 Managing Packages
When you create a new package, the server creates the following subdirectories to hold all the files associated with the package:
The code subdirectory holds the Java and C/C++ services that belong to this package. Within the code subdirectory are the classes, jars, static, source, and lib subdirectories:
The classes subdirectory is for Java classes for the Java and C/C++ services. The jars subdirectory is for Java classes that are packaged together in jar files. The static subdirectory is also for Java classes that are packaged together in jar files. Place the jar files in this location when you want to make them available to other packages in the Integration Server and also to packages in other Integration Server systems. When you place jar files in the static subdirectory, then at startup the Integration Server automatically loads these files to the server classpath. Also, the jar files are available to other packages even when the immediate package is disabled. Note: The Integration Server does not automatically create the static subdirectory when you create a new package. This subdirectory is user defined.
The source subdirectory is for the source of Java services. The libs subdirectory (not shown here) holds DLLs or specialized libraries that the Java and C/C++ services use. Note: The Integration Server does not automatically create the libs directory because the directory's existence prevents you from reloading a package without restarting the server. You cannot reload a package that uses shared libraries; you must restart the server.
374
22 Managing Packages
For ease of administration, place services that use shared libraries in the same package. The config subdirectory might hold following files:
listeners.cnf. This file contains information about what ports you have defined for the package and what services you can access through each port. For more information about configuring ports and allowing access to services through a port, see Setting Up a Reverse HTTP Gateway on page 329. urlalias.cnf. This file contains definitions for HTTP URL aliases associated with services in the package. If there are no aliases, the file does not exist. Do not manually update a urlalias.cnf file. For more information about HTTP URL aliases, see Setting Up HTTP URL Aliases for Services on page 229.
The ns subdirectory holds flow services, specifications, document types, schemas, triggers, adapter notifications, adapter documents, adapter services, adapter connectors, and code fragments for Java services. The pub subdirectory holds Web documents for the package. For instructions on how to access the Web documents for a package, see Displaying Documentation for a Package on page 382. The doc subdirectory holds documentation for the package. The resources subdirectory holds resource bundles <bundle.properties>, such as application data (not user data), which is kept separate from the Integration Server application. The following items represent typical resources inside a bundle:
Icons Window positions Dialog box definitions Program text Menus You can easily modify and update various aspects of the Integration Server without reinstalling the entire application. A Japanese language pack for the Integration Server is an example of a resource bundle that contains language and image files for the Japanese version of the server.
The templates subdirectory holds output templates that are associated with this package. The web subdirectory holds JSPs that are associated with this package.
Manifest File
Each package has a manifest file. It contains: Indication of whether the package is enabled or disabled. The server does not load disabled packages at server initialization and you cannot access elements that reside in disabled packages.
375
22 Managing Packages
List of startup, shutdown, and replication services, if any, for the package. For more information about startup, shutdown, and replication services and how to identify them, see Running Services When Packages Are Loaded, Unloaded, or Replicated on page 422. Package description. A brief description of the package. Version information. Package version and build number. Also included is the JVM version under which the package was published. Patches applied. A list of patches that have been applied to the package. These are names or numbers that are meaningful to your installation, possibly obtained from your problem tracking system. Package dependencies, if any, for the package. For a specific package, the developer can identify other packages that the server should load before it loads the elements in a particular package. In other words, the developer can identify when one package depends on another. For information, see Displaying Information about a Package on page 380, webMethods Service Development Help, and Developing Integration Solutions: webMethods Developer Users Guide. Target package name. Name of the package. Publishing server. The Integration Server that published the package. If the package has not been published, this field contains None. The manifest for a package is in the manifest.v3 file in the top directory for the package.
376
22 Managing Packages
Information Name of Access Control List (ACL) that controls which users can list the package List of elements in a package that the server failed to load into memory List of load errors for the package List of startup, shutdown, and replication services in a package List of packages on which a package depends List of servers that subscribe to this package Documentation for the package
Refer to page: Displaying Information about a Package on page 380 Displaying Information about a Package on page 380 Displaying Information about a Package on page 380 Displaying Information about a Package on page 380 Displaying Information about a Package on page 380 Displaying Information about a Package on page 380 Displaying Documentation for a Package on page 382
To display a list of HTTP URL aliases associated with a package, use the Settings > HTTP URL Aliases screen. For more information about HTTP URL aliases, see Setting Up HTTP URL Aliases for Services on page 229.
To view the packages that reside on the server 1 2 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management.
377
22 Managing Packages
Tip! Click Show All Packages to disable filtering and restore the default list of all packages on the server.
To filter the package list 1 2 In the Packages menu of the Navigation panel, click Management. The Packages List will display all the packages on your server. Click Filter Packages. The filtering options will appear above the Packages List. Note: When Filter Packages is enabled, any changes to the Integration Server (such as new packages, etc.) will not be reflected in the Packages List. When you click Show All Packages and return to normal mode, the list will be updated. 3 Select some or all of the following options: Option Filter criteria Description The string you want to submit to the filter. By default, packages with names that match the string are included in the results. Filter criteria can be literals or a combination of literal and wildcard characters. The * (asterisk) and ? (question mark) are the only supported wild-card characters. Leaving the filter criteria blank includes all packages. Important! The package names in the Filter criteria field are casesensitive. For example, if you enter wma*, the filter will ignore any packages beginning with WmA. Include Enabled Include Disabled Include Both Filter on result Exclude from result 4 Specify whether to include only packages that are enabled (those with Yes in the Enabled column of the Packages List), only those that are disabled (No is in the Enabled column), or to include both enabled and disabled packages. Enable this option when you have already filtered the list and you want to re-filter the results, rather than the default list. Enable this option to display the packages that do not match the Filter criteria, rather than the packages that do match.
Click Submit. Only the packages which match the filter options will be displayed.
378
22 Managing Packages
Yes
Partial
No
When the server is started, it automatically loads into memory all elements that are in enabled packages. If a package is disabled at startup, the server loads the elements into memory when the package is enabled. You can manually reload a package if necessary. For instructions on reloading a package, see Reloading a Package on page 385.
379
22 Managing Packages
Status
Indicates that... The package is enabled and clients can access the elements in the package. The package is disabled and clients cannot access the elements in the package. Some of the elements in the package encountered warnings, but were loaded and are available for use. To learn which elements caused warnings, look at the Load Warnings list at the bottom of the screen.
Yes No Warnings
For instructions on enabling and disabling packages, see Enabling a Package on page 385 and Disabling a Package on page 386.
Package Information
Integration Server maintains the following information about each installed package. Field Package Name Version Build Description Name of the package. Version number of the package. A number that a developer assigns to a package each time it is regenerated. For example, a developer might generate version 1.0 of the Ordering package 10 times and assign build numbers 1,2,3,...10. These build numbers are generally used to identify the generations of a package in a development environment. Minimum version of the Java Virtual Machine (JVM) required to run this package.
380
22 Managing Packages
Description The Access Control List assigned to the package. Users associated with this ACL can see the package listed on the Integration Server Administrator, Designer, or Developer. To see the folders and elements contained in the package, a user must have List access to the folders and elements themselves. A list of patches that have been applied to this release of the package. These are numbers that are meaningful to your installation, possibly obtained from your problem tracking system. A description of the package and its intended use. The name of the company, organization, or server that published the package. Note: By default, the Integration Server automatically enters the publishing server name in this field only when you create a package release.
Patches Included
Description Publisher
Created on
Date, time, and year in which the package was created. Note: By default, the Integration Server automatically enters the date, time, and year in this field only when you create a package release.
Elements Loaded
Number of elements that the server successfully loaded. To view the elements that the server has successfully loaded, click the Browse services in < PackageName> link. Number of elements that the server failed to load. If the server failed to load one or more elements, the Load Errors section of the screen lists the elements that it could not load, along with the reason. List of the services that you or another administrator have identified as startup services. For more information about startup services, refer to Running Services When Packages Are Loaded, Unloaded, or Replicated on page 422. List of the services that you or another administrator have identified as shutdown services. For more information about shutdown services, see Running Services When Packages Are Loaded, Unloaded, or Replicated on page 422. List of the services that you or another administrator have identified as replication services. For more information about replication services, see Running Services When Packages Are Loaded, Unloaded, or Replicated on page 422.
Startup Services
Shutdown Services
Replication Services
381
22 Managing Packages
Description List of the packages the server must load before it loads this package. For more information about package dependencies, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide. List of packages that depend on this package. If you disable the package, these packages will be affected. List of other Integration Servers that subscribe to this package. For information on how to copy packages from one server to another, how to subscribe to packages, and how to publish packages to another server, see Copying Packages from One Server to Another on page 388. Displays a list of elements that generated errors and could not be loaded onto the server when the package was installed. When some elements do not load, the load status for the package becomes Partial. Displays a list of elements that generated warnings when the package was installed. The server was able to load the packages, despite the warnings. When package elements are loaded with warnings, the load status for the package becomes Warnings. A list of patches or partial packages that have been applied to this release of the package.
Load Errors
Load Warnings
Patch History
382
22 Managing Packages
DocName
Activate
Activating a Package on page 384 Reloading a Package on page 385 Enabling a Package on page 385 Disabling a Package on page 386
Reload
Enable
Disable
383
22 Managing Packages
When you want to: Delete all services and related files in a package. Recover the services and related files from a package that you previously deleted. You can only recover a deleted package if you had the server save a copy of the package before deleting it. Make a working copy of a package without making it generally available to others through a release. You might use this copy as a backup. Copy a package from one server to another.
Refer to page: Deleting a Package on page 386 Recovering a Package on page 387
Archive
Copy
Note: You can also manage packages by using a set of built-in services. See the webMethods Integration Server Built-In Services Reference for more information.
Creating a Package
When a developer wants to create a new grouping for services and related files, the developer creates a package. This creates an empty container into which your developers can store services and related files. When a developer creates a package, the server builds the directory structure of the package as described in How the Server Stores Package Information on page 373. For instructions on creating a package, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide.
Activating a Package
There may be times when a package is installed on your server but is not active. When a package is active, it is officially recognize by the server and displayed in the Package Liston the Package Management screen. When a package is inactive, it exists in the Packages directory, but is not officially recognized by the server. Possible reasons for a package being inactive are: You manually installed the package while the server was running. Another server published the package to your server, but the package requires a version of the JVM that is higher than the version on your server. A subscribing server will not activate a package under these circumstances.
384
22 Managing Packages
The package you installed has dependencies on another package that either does not exist on your server or is disabled. If the package is disabled, the server installed the package but did not activate it. You can activate the package when the dependencies are satisfied. The package will not be available until either you restart the server or you activate the package. To activate a package 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. Click Activate Inactive Packages. In the Inactive Packages area, select the package you want to activate from the pulldown menu and click Activate Package.
Reloading a Package
If the server is running when a developer changes a Java service or flow service, you must reload the package in which the service is contained for the changes to take effect. Reloading the package invokes the VM class loader to reload the package's Java services and reloads the flow services into memory. Developers can also reload a package from Designer or Developer. To reload a package 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. Click the reload icon in the Reload column for the package.
The green check mark icon in the Loaded? column indicates whether the server loaded the package successfully. For more information, see Determining Whether the Server Successfully Loaded the Package on page 379.
Enabling a Package
To allow clients access to the elements in a package, you must ensure the package is enabled. Before the server can access an element in a package, the package must be enabled and the element must be loaded. By default, packages are enabled. When you enable a disabled package, the server loads the elements in the package into memory.
385
22 Managing Packages
To enable a package 1 2 3 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. Click No in the Enabled column for the package you want to enable. The server issues a prompt to verify that you want to enable the package. Click OK to enable the package. When the package is enabled, the server displays a icon and Yes in the Enabled column.
Disabling a Package
When you want to temporarily prohibit access to the elements in a package, disable the package. When you disable a package, the server unloads all of its elements from memory. Important! Never disable the WmRoot package. The Integration Server uses the services in this package.
To disable a package 1 2 3 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel click the Management link. Click the green check mark on in the Enabled column for the package you want to disable. The server issues a prompt to verify that you want to disable the package. Click OK to disable the package. When the package is disabled, the server displays No in the Enabled column. Note: The server retains the access status of a package (enabled or disabled) across server restarts. When you start the server, the server does not load elements in disabled packages.
Deleting a Package
When you no longer need the services and files in a package, you can delete the package. When you delete a package, all the elements of the package (services, specifications, document types) become unavailable. When you delete a package, you can optionally select to save a copy of the package. If you save a copy, the server copies the package to the Integration Server_directory\replicate\salvage directory before deleting the package from the Integration Server_directory\packages directory. If needed, you can recover the package at a later time. For instructions on recovering a deleted package, see Recovering a Package on page 387.
386
22 Managing Packages
Important! Never delete the WmRoot package. The Integration Server uses the services in this package.
To delete a package 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel click Management. If you want to save a copy of the package so you can recover it later if necessary, check the icon in the row that corresponds to the package you want to delete. If you do not want to save a copy, click the package you want to delete. icon in the row that corresponds to the
Click Delete. The server asks you to confirm you want to delete the package. Click OK.
Recovering a Package
If you deleted a package using the Safe delete option and you need the package again, you can recover the package. To recover a package 1 2 3 4 5 6 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel click Management. Click Recover Packages. In the Recover Packages area, select the package you want to recover from the pull down. If you want the Integration Server to automatically activate the package when it is recovered, select the Activate Upon Recovery check box. Click Recover.
Archiving a Package
There may be times when you want to make a copy of a package without making it generally available. For example, you might want to back it up or send it to someone with whom you do not have a publisher/subscriber relationship. Note: An alternative way of creating a backup is using the pub.packages:backupPackage service. However, when you use the backupPackage service, the package metadata of the backed up package is the same as the original package. For example, the creation timestamp will reflect the creation timestamp of the original package. For more information, see the webMethods Integration Server Built-In Services Reference.
387
22 Managing Packages
To archive a package 1 2 3 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. Locate the package you want to archive in the Package List, and click the icon.
The server displays a screen from which you specify the files you want to archive, the type of archive (full or patch), and version information. See Specifying File and Version Information for a Release or Archive on page 401 for instructions on specifying this information. Note: You can also archive a package automatically after installing the package. For more information, see About Installing Packages Published by Another Server on page 411.
388
22 Managing Packages
Subscribing servers receive the package in their inbound directory (Integration Server_directory\replicate\inbound). To activate the new package, an administrator on the subscribing server must install the package after it arrives. (This procedure is explained in About Installing Packages Published by Another Server on page 411.) Either a publisher or a subscriber can request a subscription. A publisher can send (push) the package and the subscriber can request (pull) the package. Before you send a package to another server, you must create a release. When you create a release, the server creates a distribution file that contains the package and information about the package, and makes the package available to subscribers. You can have multiple releases for a given package. For example, you might have separate releases for versions 1.0, 1.1, and 1.2 of a given package. Or, you might use different releases to separate packages for different audiences. Each release must have a unique name. Important! If you have multiple releases of a given package and one or more subscribers have specified the automatic pull feature, those subscribers will receive all releases of a package when a new release of it becomes available. For more information about the automatic pull feature, see The Subscribing Server on page 404. A release can contain the complete package (a full release) or just patches to the package (a patch release). Typically you will publish a full release when you have made major changes to the package and use patches just to correct problems with a package.
389
22 Managing Packages
With a full release, the new package entirely replaces the old package on the subscriber's server. With a patch release, the files in the patch release replace the versions of those files in the target package; all other files in the target package remain intact. In addition to specifying a full or patch release, you can select all files to go in the release or just some. The following diagram illustrates how a patch release replaces files:
The following diagram illustrates the results if you selected a single service for replication and specified a full release instead.
390
22 Managing Packages
Most often you will select all files and specify a full release, or select some files and specify a patch release. There might be times however when you want to select just some files and specify a full release. For example, there might be files in a package, such as internal documentation files, that a developer does not want released to others. Selecting all files except the extraneous ones and specifying a full release results in a package that contains just the desired files. There might be other times when you want to replace some files, leave others intact, and delete others. To achieve this greater level of control, you can perform a patch release and specify files to copy and files to delete. Files that you do not specify for copying or deletion remain intact. In the following example, we want to leave Service A intact, replace Service B, and delete Service C from the target package.
391
22 Managing Packages
The following shows what you must specify on the Specify Files for the Release screen to accomplish this task:
392
22 Managing Packages
The Integration Server keeps track of package versions, Integration Server versions, and JVM versions so that during package installation the subscribing server can make sure the package being installed is compatible with the subscribing server's environment. The type of version checking performed depends on whether the release is a full or patch release. Note: If patch releases have been applied to a package, the developer can see the patch history when viewing the package from Designer or Developer. However, when the publisher publishes a full release of the package, the patch history is removed.
Version Checking
When the administrator on the subscribing server installs the package, the subscribing server performs some version checking:
393
22 Managing Packages
Target server verifies that... Target JVM Version The target server is running the same or a later version of the JVM, as specified during release creation. If this requirement is not met, the subscribing server issues a warning and installs the package but does not activate it. See Activating a Package on page 384 for instructions on activating a package. For a full release The version of the package on the target server is earlier than or the same as the package being installed. If this requirement is not met, package installation fails. For example, if you create a new release and specify that it contains Version 2.0 of the wmExample package, the wmExample package on the target system must be release 2.0 or earlier. This restriction prevents you from inadvertently installing an old version of a package over a newer one. For a patch release The version of the package on the target server exactly matches the version required by the release (as specified during release creation). If this requirement is not met, package installation fails. For example, if you create a new release that contains a patch for wmExample package version 2.0, and you specify that the target package must be version 2.0, package installation will fail if the target package is not version 2.0. This restriction gives you greater control over how and where patches are applied. This is useful because patches are typically release dependent.
Package Version
394
22 Managing Packages
Publisher. The administrator of a publishing server can use the publisher functions to add (or remove) subscribers to any package that originates on the publishing server (i.e., one to which you do not subscribe). Subscriber. The administrator of a remote Integration Server (the subscriber) can submit a subscription request to the publisher. When the publisher receives this request, it automatically adds that server to the subscription list for the requested package as long as authentication was successful. Subscribers can also issue cancellation requests (i.e., cancel their subscriptions) for packages to which they subscribe.
395
22 Managing Packages
Task: Removing subscribers for a package Publishing a package to subscribing servers Specifying File and Version Information for a Release or Archive
Refer to page: Removing Subscribers for a Package on page 399 Publishing a Package on page 399 Specifying File and Version Information for a Release or Archive on page 401
396
22 Managing Packages
Note: To request a subscription from a subscribing server, see Subscribing to a Package from a Subscribing Server on page 406.
To add a subscriber 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Publishing. Click Add Subscribers. Select the package for which you want to identify subscribers from the drop down list in the Package field. To identify a subscribing server, enter information in the following fields: Field Host Name Host Port Transport Description Name of the machine on which the subscribing server is running. Port number on which the subscribing server listens for this package to be published. Method the publishing server uses to send the package to the subscribing server. Select HTTP or HTTPS. HTTP is the default. Note: If you want the publisher to use SSL when sending the package to the subscriber, you must specify HTTPS here. When the publisher connects to the subscriber, the publisher uses the server's default Outbound SSL Certificates as specified on the publisher's Security > Certificates screen. Remote User Name User the publishing server uses to log into the subscriber server. This user must be a member of a group that is assigned to the Replicators ACL on the subscribing server. Password of the user that the publishing server uses to log into the subscribing server. E-mail address of the administrator to notify when the publishing server releases a package.
Click Add Subscriber. The server adds the subscriber to the list in the Subscribers field. Repeat this step for each server you want to identify as a subscriber to the package.
397
22 Managing Packages
To update subscriber information 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Packages menu of in the Navigation panel, click Publishing. Click Update and Remove Subscribers. Locate this subscriber in the information list and click Edit in the Update column. To change subscriber information, enter information in the appropriate fields below: Field Packages Description Packages to which the subscriber subscribes. You can change the subscription to be for another package. You can only select a package to which your server does not already subscribe because you cannot both publish and subscribe to the same package. Name of the machine on which the subscribing server is running. Port number on which the subscribing server listens for this package to be published. The number you specify must correspond to a port that already exists and is enabled on the subscribing server. In addition, the publishing server must have replicator access or higher. Method the publishing server uses to send the package to the subscribing server. Select HTTP or HTTPS. HTTP is the default. The transport type must match the type defined for the host port on the subscribing server. Note: If you want the publisher to use SSL when sending the package to the subscriber, you must specify HTTPS here. When the publisher connects to the subscriber, the publisher uses the server's default Outbound SSL Certificates as specified on the publisher's Security > Certificates screen. Remote User Name User the publishing server uses to log into the subscriber server. This user must be a member of a group that is assigned to the Replicators ACL on the subscribing server. Password of the user that the publishing server uses to log into the subscribing server. E-mail address of the administrator to notify when the publishing server releases a package.
Transport
Click Submit Changes. The server adds the subscriber to the list in the Subscribers field. The server updates the information on both the subscribing and publishing servers.
398
22 Managing Packages
To remove subscribers 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Packages menu of in the Navigation panel, click Publishing. Click Remove Subscribers. Locate the package for which you want to remove subscribers and check the box in the Delete field. Note: If the subscriber is running when you remove it from the subscriber list, the publisher tells the subscriber it has been removed. However, if the subscriber is not running, the subscriber will not know the subscription has been canceled. In this case, you should manually delete the subscription from the subscriber server later when it is available.
Publishing a Package
Publishing a package to other Integration Servers involves two tasks: Creating a release.To publish a package, your server creates a distribution file that contains the information for the package. When you create the distribution file, you select what information to include in the file. You can select all files to send, or just some. In addition, you can request a full release or a patch release. With a full release, the new package entirely replaces the old package on the subscriber's server. With a patch release, the files in the patch release replace the versions of those files in the target package; all other files in the target package remain intact. See Overview of Package Replication on page 388 for more information about how full and patch releases differ. After you indicate the files to include in the release, the server places all the selected files into a single, compressed file (a zip file). It places the zip file in the Integration Server_directory\replicate\outbound directory. If the outbound directory already contains a zip file for this package, the server overwrites the existing file. Sending the release. After you create the release, you can send it to the subscribing servers.
399
22 Managing Packages
A subscribing server receives the zip file containing the release in its inbound directory (Integration Server_directory\replicate\inbound). If a zip file for the package already exists in a subscribing server's inbound directory, the server overwrites it. The zip file remains in the inbound directory on the subscribing server until the administrator of that server installs the package. A developer can set up the package to execute a service when you create the release. When you begin to create the release, this service executes before the list of files to be zipped is displayed. You can use this service to write state and configuration information for the package to a file. This file will be included with the other zipped files included in the release. For instructions on setting up replication services, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide. Important! Before you can publish a package, you must specify the subscribers. For instructions, refer to Adding Subscribers from a Publishing Server on page 396. Creating a Release Use the following procedure to create a release for a package. To create a release 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Publishing. Click Create and Delete Releases. Locate the package for which you want to create a release, and click Create Release for PackageName. The server displays a screen from which you specify the files you want to include in the release, the type of release (full or patch), and version information. See Specifying File and Version Information for a Release or Archive on page 401 for instructions on specifying this information.
Sending a Release Use the following procedure to send a package release. To send the release 1 2 3 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel click Publishing. Locate the release of the package you want to send under Available Releases, and click Send Release.
400
22 Managing Packages
401
22 Managing Packages
Do this: In the Files to include section, select Files specified by filter and enter a valid filter, for example *.java or *.class. or To include all files except those with a similar name, in the Files to include section, click All except files specified by filter and enter a valid filter, for example *.bak. If the developer added package dependencies or startup, shutdown, or replication services to the package since the last archive or release was created, be sure to include the manifest.v3 file. Otherwise these services will not be available in the resultant package. See Running Services When Packages Are Loaded, Unloaded, or Replicated on page 422 for more information about startup, shutdown, and replication services. You can specify the following special character to perform pattern matching. Char * Description Matches any number of characters Example *.java
Identify files you want to delete from the target package by entering one file name per line. Separate each entry with a semicolon (;). When the subscribing server installs the package, these files will be deleted from the target package.
402
22 Managing Packages
Specify package version information and description: Field Archive/Release Type Description Full: All files in the package are written to the archive or release Patch: Selected files in the package are written to the archive or release. When the administrator on the target server installs a patch archive or release, the files contained in the patch archive or release replace the versions of those files in the target package; all other files in the target package remain intact. If the developer added package dependencies or startup, shutdown, or replication services to the package since the last archive or release was created, be sure to include the manifest.v3 file. Otherwise these services will not be available in the resultant package. See Running Services When Packages Are Loaded, Unloaded, or Replicated on page 422 for more information about startup, shutdown, and replication services. Archive/Release Name Brief Description Version A name you assign to the archive or release, for example Beta Release of WmExample Package. A description you assign to the archive or release, for example Dec release with patches to correct OrderProcess problem. The version number you assign to the package you are archiving or releasing. This version might not be the same as the version of the package itself. When a developer first creates a package, the version number is set to 1.0. For more information about the checking the Integration Server performs, see Version Checking on page 393. Build Number A number that a developer assigns to a package each time it is regenerated. For example, a developer might generate version 1.0 of the WmExample package 10 times, assigning build number 1,2,3...10. A list of patches that have been applied to this release of the package. These are numbers that are meaningful to your installation, possibly obtained from your problem tracking system.
Patches Included
403
22 Managing Packages
Specify subscriber settings: Field webMethods Integration Server What It Means: Version of the webMethods server that must be running on the target server. For more information about the version checking performed by the subscribing server, see Version Checking on page 393. Minimum Version of JVM Minimum version of the Java Virtual Machine (JVM) that the target Integration Server should be running when using this package. When the administrator installs the package, the server checks the version of the JVM it is running. If it is running a different version, the server installs the package but does not activate it. For more information about the version checking performed by the subscribing server, see Version Checking on page 393.
5 6
Specify version of target package (for patch releases only). This is the version of the package the target server must be running. When the administrator installs the patch on the target server, the server checks to make sure the version of the target package is the same as the one specified here. If the target package is a different version, the server does not install the package. This restriction gives you greater control over how and where patches are applied. This is useful because patches are typically release dependent.
404
22 Managing Packages
Task: Displaying packages to which your server subscribes Manually Pulling a Package Subscribing to a package from another server Updating subscription information Canceling a subscription to a package on another server Installing a package that was published from another server
Refer to page: Displaying Packages to Which Your Server Subscribes on page 405 Manually Pulling a Package on page 405 Subscribing to a Package from a Subscribing Server on page 406 Updating Subscriber Information on page 397 Canceling a Subscription on page 411 About Installing Packages Published by Another Server on page 411
405
22 Managing Packages
Find the release of the package you want to pull and in the Retrieve field, click the retrieval method you want to use. Field Via Service Invocation Via FTP Download What It Means: The publishing server sends the release using HTTP or HTTPS. The publishing server sends the release using FTP. When you select FTP, the server prompts you for information required to use FTP: Release Name: Name assigned to the release, for example Beta Release of WmExample Package. Remote Server Alias: Name of the machine on which the publishing server resides. Remote Server FTP Port: FTP port on the publishing server through which the publisher will send the package. Remote User Name: User that the subscriber uses to log into the publishing server. Remote Password: Password of the user that the subscribing server uses to log into the subscribing server.
Install the package. For instructions, see About Installing Packages Published by Another Server on page 411.
406
22 Managing Packages
Method the publisher will use to connect to the subscriber when sending it a package. The subscriber must supply a valid userid and password that the publisher can use to log on to the subscribing server. This userid must be a member of a group that is assigned to the Replicators ACL. In addition, the subscriber must supply other connection information, such as listening port. Requesting a Subscription to a Package from Another Server The following procedures describe how to request a subscription. Note: The publishing server must be running at the time you add the subscription
To request a subscription to a package from another server 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Subscribing. Click Subscribe to Remote Package. Type the name of the package in the Package field. Be sure to type the name exactly as it is specified on the publishing server, using the same combination of upper- and lowercase characters. Enter the information in the following fields to set up your request: Field Publisher Alias Description Alias assigned to the publisher. The alias definition tells the subscriber how to connect to the publishing server to register for a subscription. The alias contains connection information such as host name or IP address. If you have not already defined an alias for this publisher, click the link to go to the Remote Servers screen. From this screen you can set up an alias for the publisher. See Setting Up Aliases for Remote Integration Servers on page 93 for more information. Port number on which the subscriber listens for the publisher to send the package. This setting determines whether the publisher uses HTTP or HTTPS. Important! If you want the publisher to use SSL when sending the package to the subscriber, you must specify an HTTPS port here. Local Password Notification Email Password for the local user name. E-mail address to notify when the publishing server releases a package or a package is delivered.
Local Port
407
22 Managing Packages
Description Specifies whether the subscribing server is to automatically pull the package from the publisher when a new release becomes available. If you select Yes, you must also specify the e-mail address of a user on an e-mail server to which the publishing server should send a service-invocation e-mail. The subscribing server, through an e-mail port, periodically checks this e-mail address for a service-invocation e-mail. When the subscribing server processes the e-mail, it pulls the package. The service invocation e-mail contains a call to a service that runs on the subscribing server and loads the package to the subscribing server's Inbound directory. For automatic pull to work, you must set up an e-mail port to listen at the automatic pull address (described below). For information about setting up an e-mail port, see Setting Up Aliases for Remote Integration Servers on page 93.
E-mail address to which the publishing server is to send a serviceinvocation e-mail when a new release of the package becomes available. Use a different e-mail address for the notification and serviceinvocation e-mails. For example, send notification e-mails to [email protected] and service invocation e-mails to [email protected]. For automatic pull to work, you must set up an e-mail port to listen at this address. For information about setting up an e-mail port, see Setting Up Aliases for Remote Integration Servers on page 93.
Click Start Subscription. Important! If you request a subscription to a package that does not exist on the specified server, or if that server does not own the package (i.e., it is a subscriber of the package), you will receive an error message, and the publishing server does not process your subscription.
408
22 Managing Packages
To update your subscription information 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Packages menu of in the Navigation panel, click Subscribing. Click Update and Unsubscribe from Remote Package. Click Edit in the Update column for the package you want to update. To change subscription information, enter information in the appropriate fields below: Field Package Description Package for which you want to change subscription information. You can change the package to another package if you do not already subscribe to or publish the new package. This restriction exists because you cannot both subscribe to and publish the same package. Publisher Alias Alias assigned to the publisher. The alias definition tells the subscriber how to connect to the publishing server to register for a subscription. The alias contains connection information such as host name or IP address. If you have not already defined an alias for this publisher, click the link to go to the Remote Servers screen. From this screen you can set up an alias for the publisher. See Setting Up Aliases for Remote Integration Servers on page 93 for more information. Port number on which the subscriber listens for the publisher to send the package. This setting determines whether the publisher uses HTTP or HTTPS. Important! If you want the publisher to use SSL when sending the package to the subscriber, you must specify an HTTPS port here. Note: When the publisher connects to the subscriber, the publisher uses its default certificate (specified on its Security Settings screen). Make sure the port you specify here can accept that certificate. Local User Name User as which the publisher will log into the subscriber. This user must belong to a user group that is assigned to the Replicators ACL. If you delete the user or change its association with the Replicators ACL, the publisher cannot send this package to the subscriber. Local Password Password for the local user name.
Local Port
409
22 Managing Packages
Description E-mail address to notify when the publishing server releases a package or a package is delivered. Specifies whether the subscribing server is to automatically pull the package from the publisher when a new release becomes available. If you already have automatic pull configured and want to turn it off, select No. Then go to the Automatic Pull E-mail field and delete the e-mail address there. If you want to configure your server for Automatic Pull, select Yes. You must also specify the e-mail address of a user on an e-mail server to which the publishing server should send a serviceinvocation e-mail. The subscribing server, through an e-mail port, periodically checks this e-mail address for a service-invocation e-mail. When the subscribing server processes the e-mail, it pulls the package. The service invocation-e-mail contains a call to a service that runs on the subscribing server and loads the package to the subscribing server's Inbound directory. For automatic pull to work, you must set up an e-mail port to listen at the automatic pull address (described below). For information about setting up an e-mail port, see Setting Up Aliases for Remote Integration Servers on page 93.
E-mail address to which the publishing server is to send a serviceinvocation e-mail when a new release of the package becomes available. Use a different e-mail address for the notification and serviceinvocation e-mails. For example, send notification e-mails to [email protected] and service invocation e-mails to [email protected]. For automatic pull to work, you must set up an e-mail port to listen at this address. For information about setting up an e-mail port, see Setting Up Aliases for Remote Integration Servers on page 93.
Note: The publishing server must be running at the time you add the subscription. 6 Click Submit Changes. The server updates the information on both the subscribing and publishing servers.
410
22 Managing Packages
Canceling a Subscription
When you cancel a subscription, the server sends your cancellation notice to the publishing server. The publishing server removes your server from the subscription list for the specified package. If the publisher is not running when you cancel your subscription, the next time the publisher tries to send the package to your server, the publisher is informed of the cancellation and automatically deletes the subscription from its list of subscribers. Note: If a subscriber removes a subscription initiated by the publisher, the subscribing server removes the subscription from its subscriptions list, but the subscription is not immediately removed from the publisher's list. Instead, the next time the publishing server tries to send the package to the subscriber, the publisher is notified of the removal and then deletes the subscription from the publisher's list.
To cancel your subscription to a package on another server 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Subscribing. Click Update and Unsubscribe from Remote Package. Locate the package for which you want to cancel the subscription and click the icon.
411
22 Managing Packages
to the Integration Server_directory\replicate\archive directory. If you do not want to archive a package automatically after installation, you can archive it later. For more information, see Archiving a Package on page 387. Installing a Package Published by Another Server When installing a package published by another server, keep the following points in mind: A package coming from the publisher already has a List ACL associated with it, specifically, the List ACL that was assigned to the package on the publishing server. The installing user does not need to be a member of that ACL to install the package; however, users on the subscribing server must be members of the package's List ACL in order to display the package on Integration Server Administrator screens. Important! Be sure the server where you are installing the package has an ACL with the same name as package's List ACL. If the List ACL does not exist, no users will be able to display the package on Integration Server Administrator screens. If the package you are installing has dependencies on another package that does not exist on your server, the server will install the package but will not enable it. You will not be able to enable the installed package until the dependencies are satisfied. If the package you are installing is associated with an e-mail listener, the server will install the package but will not enable the listener. This is because the password required for the Integration Server to connect to the e-mail server was not sent with other configuration information about the listener. To enable the listener, go to the Security > Ports > Edit E-mail Client Configuration Screen and update the Password field to specify the password needed to connect to the e-mail server. If you export a package that is associated with an e-mail listener from a 6.5 Integration Server to a pre-6.5 Integration Server, the e-mail listener will not be replicated at all. You must manually reconfigure the listener on the pre-6.5 Integration Server after installing the package there. For instructions on configuring the e-mail listener, refer to About Adding an E-mail Port on page 128. When you install a package from another Integration Server, it is possible that an HTTP URL alias associated with the new package has the same name as an HTTP URL alias already defined on your Integration Server. If Integration Server detects a duplicate alias name, it will display load warnings on the Packages > Management > package_name screen. For more information about duplicate HTTP URL aliases, refer to Portability of Aliases on page 231. Important! Make sure that packages you install come from a legitimate source, such as a replication from another server. If you are not sure, check with the developers in your organization to verify that an authorized person updated the package. Unknown packages might contain code that could damage your server.
412
22 Managing Packages
To install a package that was published from another server 1 2 3 4 5 6 7 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. Click Install Inbound Releases. Select the package you want to install from the Release file name drop down list. If you want Integration Server to make the package available immediately following installation, select the Activate upon installation check box in the Option field. If you want Integration Server to archive the package automatically after installation, select the Archive upon installation check box. This check box is selected by default. Click Install Release. Integration Server installs the package and displays a message to that effect.
Reload the package. For more information about how Integration Server loads classes, refer to How the Server Loads Java Classes on page 35.
413
22 Managing Packages
414
23
Managing Services
416 416 418 419 422 424
About Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fully Qualified Service Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Finding Information about Services and Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Running Services When Packages Are Loaded, Unloaded, or Replicated . . . . . . . . . . . . . . . . . Running Services in Response to Specific Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
415
23 Managing Services
About Services
A service is a server-resident unit of functionality that clients can invoke. A service might be an entire application or used as part of a larger application. There are several types of services: flow services (including Web service connectors), adapter services, Java services, and C/C++ services. You can create all flow services using Software AG Designer or webMethods Developer. You can create database flow services from the Integration Server Administrator as well. You can also use Designer or Developer to create adapter services, Java services, or use your own development environment to create Java and C/C++ services. For more information about the types of services and how to create them, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide. You can designate one or more services in a package as a startup, shutdown, or replication service. A startup service is a service that the server automatically executes when a package is loaded. A shutdown service is a service that the server automatically executes when a package is unloaded. A replication service is a service that the server automatically executes when a package is replicated. To improve the performance of services, you can have the server cache the service results. Then, when the server receives subsequent requests for the service, it returns the cached results rather than executing the service. For more information, see Caching Service Results on page 443. You can use the scheduling function of Integration Server to schedule services to execute at times you specify. For more information on scheduling services, see Scheduling Services on page 425.
416
23 Managing Services
Finance:StockQuote If the folder portion identifies more than one folder, separate each folder name with a period. folder.subfolder1.subfolder2:service For example, if the "HomeLoan" service is in the "Personal" folder, which is contained in the "Finance" folder, the fully qualified service name is: Finance.Personal:HomeLoan The fully qualified name of each service must be unique within the server. In addition, the fully qualified name of a service cannot be the same as the fully qualified name of any specification or document type that resides on the server. Note: The watt.server.illegalNSChars setting in the server.cnf file (which is located in the IntegrationServer_directory\config directory) defines the characters that you cannot use when naming folders and services. To view or change this setting, use the Settings > Extended screen from the Integration Server Administrator as described in page Working with Extended Configuration Settings on page 103.
417
23 Managing Services
418
23 Managing Services
Service Information
Integration Server Administrator displays the following information for a service. Section General Info Description Identifies The folder in which the service is contained and the service name. The name of the package with which the service is associated. The type of service: Flow, Java, or C/C++. Whether or not the service is stateless. Universal Name The name that will be used to qualify the name of this service. It consists of the namespace name and the local name. By convention, a URI is generally used as the namespace name (e.g., http://www.gsx.com/gl). This assures that the universal name is globally unique. The local name uniquely identifies the service within the collection encompassed by namespace name. Most sites use the unqualified portion of the service name as the local name You may use any sequence of characters or digits for the namespace name and the local name. Java-Specific Parameters Access Control For a Java service, identifies the Java class name and method name for the service. Identifies the ACLs assigned to the service or specification. For information about ACLs, services, and specifications, see Controlling Access to Resources with ACLs on page 264. Identifies whether the server is to save the results of executing this service in cache. For information, see Caching Service Results on page 443. Identifies the name of a binding service that parses incoming XML for the service, the output template associated with the service (if any), and the type of the output template (HTML or XML). For information about output templates, refer to the Dynamic Server Pages and Output Templates Developer's Guide.
Cache Control
Data Formatting
419
23 Managing Services
Testing Services
You can test the operation of a service. This allows you to quickly and easily verify the operation of a service and test it with special-case input values. Note: Designer and Developer offer a more robust environment for testing services.
To test a service 1 2 3 4 5 6 7 Open the Integration Server Administrator if it is not already open. From the Packages menu in the Navigation panel, click Management. From the Package List, click the package whose service you want to test. Click Browse Services in packagename. Click on the name of the service you want to test. To test the service, click Test servicename. The server displays the Test ServiceName screen. If you want to test the service with input values, fill in the required input information in the Assign Input Values section of the screen and click Test with inputs. If you want to test the service without specifying input values, click Test (without inputs).
420
23 Managing Services
Integration Server requires you to try canceling a thread before it will allow you to kill a thread. Once you successfully cancel a thread, you no longer have the option of killing it. You can cancel or kill threads for user-written Java or flow services only; you cannot cancel or kill threads for Integration Server system services. When you cancel or kill a thread, Integration Server returns a thread to the global, trigger, or scheduler thread pool, depending on the function being performed. Integration Server identifies which threads you can cancel or kill by flagging them on the System Threads screen as follows: Threads that can be canceled are marked with a Threads that can be killed are marked with an in the Cancel column. in the Kill column.
Important! The ability to cancel or kill service threads is controlled by the watt.server.threadKill.enabled property. If you want to be able to cancel or kill threads, this property must be set to true, which is the default setting. Caution! Use care when canceling or killing threads. Canceling a thread might not free up resources being held by the service. Killing a thread might put your resources in an unstable state.
421
23 Managing Services
In the row for the thread you want to cancel, click the Integration Server prompts you to confirm your action. If the cancel is successful... If the cancel is not successful...
Integration Server removes the thread from the display. Integration Server updates the display to show an column. If you want to kill the thread, click the . in the Kill
Integration Server prompts you to confirm your action. If Integration Server is able to kill the thread, it removes the thread from the display. If Integration Server is not able to kill the thread, the thread remains in the display.
422
23 Managing Services
423
23 Managing Services
424
24
Scheduling Services
426 426 431 432 433 434 435 435 436 437 440
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scheduling a User Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Updating Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suspending User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resuming Suspended User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Canceling a Scheduled User Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Scheduled System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simple Repeating Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complex Repeating Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clustering Target Node Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
425
24 Scheduling Services
Overview
Use the server's scheduling function to schedule services to execute at times you specify. Services that you schedule are referred to as user tasks. You can: Create user tasks that Integration Server executes:
A single time Repeatedly at a simple interval, for example hourly every day Repeatedly at a complex interval, for example every other Tuesday in June
View a list of scheduled tasks. Update scheduling options for existing user tasks. Cancel a scheduled user task before Integration Server completes all scheduled executions. Temporarily suspend a task's execution. Create user tasks that run on one, any, or all Integration Servers in a cluster. Specify an action Integration Server is to take if a task has missed its scheduled execution time. Note: In addition to using Integration Server Administrator to schedule tasks, you can also perform scheduling by using a set of built-in services. See the webMethods Integration Server Built-In Services Reference for more information.
426
24 Scheduling Services
Note: The JVM in which the Integration Server is running automatically transitions to and from Daylight Saving Time (DST). These transitions may affect your scheduled tasks. When transitioning to DST, the server advances the clock forward one hour. Tasks scheduled during this transition hour will not be processed by the server. When transitioning from DST, the server sets the clock back one hour. Tasks scheduled during this transition hour will be repeated.
To schedule a user task 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler. Click Create a Scheduled Task. Set the Service Information parameters as follows: For this parameter Description folder.subfolder:service Specify... A description of the task. The fully qualified service name of the service you want Integration Server to execute. Click Assign Inputs to enter new input values or modify existing values for the service you want Integration Server to execute. Before assigning input values, note that: You can only assign values for top-level input parameters of data type String. Assigning input values using Assign Inputs overwrites any input values assigned to a service using the built-in services in the pub.scheduler folder. For information about specifying service names, see Fully Qualified Service Names on page 416. Run As User The user name you want the server to use when running the service. Click to search for and select your user. A user can be selected from the local or central directory. Integration Server runs the service as if the user you specify is the authenticated user that invoked the service. If the service is governed by an ACL, be sure to specify a user that is allowed to invoke the service.
427
24 Scheduling Services
Specify... Whether you want the task to run on other Integration Servers in the cluster: Select Any server if the task needs to run on only one server in the cluster, and it does not matter which one. Select All servers if the task needs to run on all Integration Servers in the cluster. Select the name from the list of Integration Servers in the cluster if the task needs to run on only a specific server. The default is the current Integration Server. The Cluster Target Node option is not available if your Integration Server is not part of a cluster. For more information about running your Integration Server as part of a cluster, see the webMethods Integration Server Clustering Guide. For more information about the Cluster Target Node options, see Clustering Target Node Options on page 440.
Select an action to perform If the Task Is Overdue. Integration Server periodically checks the status of scheduled tasks. If it finds a task that should have started but has not, Integration Server runs the task immediately, unless you have specified a special action to take for late tasks. Integration Server performs this "late action" if the task has missed its scheduled start time by a number of minutes you specify in the if more than xxx minutes late field. Note: The maximum number of minutes that the if more than xxx minutes late field can accept is 35000. For tasks that are late but do not exceed the specified period, Integration Server runs the task immediately:
428
24 Scheduling Services
Select Run Once, Repeating, or Complex Repeating to indicate when and how often you wantIntegration Server to execute the service. Select... Run Once To... Schedule a task to run just once. Specify the following: Date. The date on which you want Integration Server to execute the service. Enter the date using the format YYYY/MM/DD. For example, if you want the server to execute the service on March 11, 2010, specify 2010/03/11. Time. The time at which you want Integration Server to execute the service. Enter the time using the format HH:MM:SS (using a 24hour clock). For example, if you want Integration Server to execute the service at 1:00:00 a.m., specify 1:00:00; if you want Integration Server to execute the service at 1:00:00 p.m., specify 13:00:00. Repeating Schedule simple repeating tasks, for example once a day at a specific time. Specify the following Start Date and Start Time. The date and time of the first execution. For Start Date, use the format YYYY/MM/DD. For Start Time, use the format HH:MM:SS (using a 24-hour clock). For example, if you want the service executions to start on May 3, 2010 at 1:00:00 p.m., specify 2010/05/03 for Start Date and 13:00:00 for Start Time. End Date and End Time. The date and time of the last execution. For End Date, use the format YYYY/MM/DD. For the End Time, use the format HH:MM:SS (using a 24-hour clock). For example, if you want the service executions to stop on June 4, 2010 at 2:00:00 a.m., specify 2010/06/04 for End Date and 02:00:00 for End Time. Omitting End Date indicates that you want this service to execute for an indefinite period of time. If you omit End Time, Integration Server uses the current time. Interval. Execution interval. Enter the number of seconds that you want Integration Server to wait between executions of the service.
429
24 Scheduling Services
Select...
To... Repeat after completion. Whether to wait for the previous execution of the service to complete before starting the next. For example, suppose the GetData service is scheduled to run every minute, but sometimes takes longer than that to complete. By default, Integration Server will start the next execution even though the previous one has not yet completed. If you check the Repeat after completion box, Integration Server will wait for the service to complete before running the next execution of the service. Executions that could not run while the service was executing are delayed. For more information about using the Repeating option, see Simple Repeating Option on page 436.
Complex Repeating
Schedule a task that repeats at a more complex interval, for example, every other day, or twice a month. Specify the following: Start Date and Start Time. The date and time of the first execution. For Start Date, use the format YYYY/MM/DD. For Start Time, use the format HH:MM:SS (using a 24-hour clock). For example, if you want the service executions to start on May 3, 2010 at 1:00:00 p.m., specify 2010/05/03 for Start Date and 13:00:00 for Start Time. If you omit the Start Date, the first execution occurs on the first date as indicated by the Run Mask parameters. If you omit Start Time, the server uses the current time. End Date and End Time. The date and time of the last execution. For End Date, use the format YYYY/MM/DD. For the End Time, use the format HH:MM:SS (using a 24-hour clock). For example, if you want the service executions to stop on June 4, 2010 at 2:00:00 a.m., specify 2010/06/04 for End Date and 02:00:00 for End Time. Omitting End Date indicates that you want this service to execute for an indefinite period of time. If you omit End Time, the server uses the current time.
430
24 Scheduling Services
Select...
To... Run Mask. Specific months, dates (1-31), days of the week (Sunday-Monday), hours, minutes, and seconds when you want a task to run. You can select one or more items from each category. To select multiple items, press the Ctrl key while making your selections. If you do not select any items from a category, Integration Server assumes all items for the selection. Repeat after completion. Whether to wait for the previous execution of a service to complete before starting the next. For example, suppose the GetData service is scheduled to run every minute, but sometimes takes longer than that to complete. By default, Integration Server will start the next execution even though the previous one has not yet completed. If you check the Repeat after completion box, the server will wait for the service to complete before running the next execution of the service. Executions that could not run while the service was running are delayed. For more information about using the Complex Repeating options see Complex Repeating Option on page 437.
To view scheduled user tasks 1 2 Open the Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler. The Server Scheduler screen displays the list of scheduled user tasks. Integration Server automatically deletes the expired scheduled user tasks from the Server Scheduler screen. If you do not want Integration Server to delete the expired tasks until the next server restart, set the watt.server.scheduler.deleteCompletedTasks parameter to false. For more information about this parameter, see Appendix B, Server Configuration Parameters.
431
24 Scheduling Services
To update a scheduled user task 1 2 Open the Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler.
432
24 Scheduling Services
3 4 5
Click the service name for the user task you want to update. Update the scheduling options for the selected user task. For information about the options you can specify, see Scheduling a User Task on page 426. Click Update Tasks.
To suspend a scheduled user task 1 2 3 Open the Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler. Locate the task in the Services list, and click the icon in the Status column to suspend the task. The server displays a screen to confirm you want to suspend the task. Click OK. The server replaces the icon with Suspended to indicate that the task is now suspended.
433
24 Scheduling Services
To suspend all scheduled user tasks 1 2 3 Open Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler. Click Pause Scheduler. Integration Server displays a message prompting you to confirm that you want to suspend the tasks. Click OK. Integration Server will initiate the scheduled user tasks only after you have resumed the tasks.
434
24 Scheduling Services
Individual tasks that you have suspended by clicking the will remain suspended until you specifically activate it. To resume all scheduled user tasks 1 2 3
Open Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler. Click Resume Scheduler. Integration Server displays a message prompting you to confirm that you want to resume the initiation of tasks. Click OK. Integration Server will proceed to initiate the scheduled user tasks. Important! If a task misses its scheduled execution time because the execution of tasks was suspended at that time, the next execution of the task depends on the value of the If the Task Is Overdue setting. Based on this setting, Integration Server will start the task as soon as you resume the initiation of tasks, skip this execution of the task, or suspend the task and wait for administrator action. For more information, see Scheduling a User Task on page 426.
To cancel a scheduled user task 1 2 3 Open the Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler. Click the icon in the Remove column for the user task you want to cancel. The server issues a prompt to verify that you want to cancel the user task. Click OK.
435
24 Scheduling Services
To view the scheduled system tasks 1 2 3 Open the Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Scheduler. Click View system tasks. The server displays the View System Tasks screen. It lists the names of each scheduled task, the next date and time the server is to execute the task, and how often (Interval) the server is to execute the task. Note: The View System Tasks screen shows the tasks for local server only; if you are running a cluster of servers, you will not see the system tasks for other servers in the cluster.
Start Time
End Date
End Time
436
24 Scheduling Services
Indicates... Whether Integration Server should wait for the previous execution of a service to complete before starting the next. For example, suppose the GetData service is scheduled to run every minute, but sometimes takes longer than that to complete. By default, the server will start the next execution even though the previous one has not yet completed. If you check the Repeat after completion box, Integration Server will wait for the service to complete before running the next execution of the service. Executions that could not run while the service was executing are delayed.
Interval
Time interval, in seconds, at which you want the service to execute. For example, if you want the server to execute the service every 24 hours, specify 86400 seconds for the interval.
The following example shows how to use the Simple Repeating option settings: If you want the service to execute... Every hour on July 1st in the year 2010. For this setting: Start Date Start Time End Date End Time Interval Specify... 2010/07/01 00:00:00 2010/07/01 00:00:00 60
437
24 Scheduling Services
Indicates... The time at which you want the server to begin executing the service. Use the format HH:MM:SS to specify the time (using a 24-hour clock). If you leave this field blank, the server uses the current time. The date on which you want the server to execute the service for the last time. Use the format YYYY/MM/DD to specify the date. If you leave this field blank, the server executes the service for an indefinite period of time or until you cancel the scheduled user task. The time on the last date at which you want the server to execute the service. Use the format HH:MM:SS to specify the time (using a 24-hour clock). If you leave this field blank, the server uses the current time. Whether Integration Server should wait for the previous execution of a service to complete before starting the next. If you want Integration Server to wait for a service to complete execution before it starts the next scheduled execution of the service, check this box. For example, suppose the GetData service is scheduled to run every minute, but sometimes takes longer than that to complete. By default, the Integration Server will start the next execution even though the previous one has not yet completed. If you check the Repeat after completion box, Integration Server will wait for the service to complete before running the next execution of the service. Executions that could not run while the service was executing are delayed.
End Date
End Time
Run Mask
Specific months, days (1-31), days (Sunday-Saturday), hours, and minutes you want the service to run. You can select one or more items from each category. To select multiple items, press the Ctrl key while making your selections. If you do not select any items from a category, Integration Server assumes all items for the selection. For example, if you do not specify a month, Integration Server assumes you want the service to execute every month. If you do not select any items for any of the settings, the Integration Server assumes you want the service to execute every month, every day, all week days, every hour, and every minute; in other words, the service runs every minute from the time you add the task.
Integration Server combines all your selections to determine when to execute the service. The following shows examples of how to use the Complex option settings:
438
24 Scheduling Services
If you want the service to execute... The 28th day of every month at midnight for the year 2010.
For this setting: Start Date Start Time End Date End Time Months Month Days Week Days Hours Minutes
Every Monday in the months of January, February, and March at 2:30 p.m. for an indefinite period of time.
Start Date
Start Time End Date End Time Months Month Days Week Days Hours Minutes Every hour of every Tuesday of the month of June, 2010. Start Date Start Time End Date End Time Months Month Days Week Days Hours Minutes
leave blank leave blank leave blank January, February, March no selection Monday 14 30 2010/06/01 00:00:00 (or leave blank) 2010/06/30 00:00:00 (or leave blank) June no selection Tuesday no selection 0
439
24 Scheduling Services
If you want the service to execute... Every minute of every hour of every Tuesday of the month of June, 2010.
Specify... 2010/06/01
Start Time End Date End Time Months Month Days Week Days Hours Minutes
00:00:00 (or leave blank) 2010/06/30 00:00:00 (or leave blank) June no selection Tuesday no selection no selection
440
24 Scheduling Services
Indicates... If you select All servers, the task runs on all servers in the cluster. For example, suppose you run an application on each server in the cluster, and each server maintains its own database for that application. If you need to run a cleanup task against all the databases every day, then from one server you can schedule a task to run every day on all the servers in the cluster. When you schedule a task to run on all servers in the cluster, the server divides the task into a main or parent task, and a child task for each server in the cluster. See Tasks in a Clustered Environment on page 441 below for more information about these tasks.
441
24 Scheduling Services
442
25
What Is Caching? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Are Cached Results Returned? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resetting the Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Monitoring Service Cache Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
443
What Is Caching?
Caching is an optimization feature that can improve the performance of services. You indicate the services for which you want to use caching from Software AG Designer or webMethods Developer. When you enable caching for a service, webMethods Integration Server saves the entire contents of the pipeline after invoking the service in a local cache for the period of time that you specify. The pipeline includes the output fields explicitly defined in the cached service, as well as any output fields produced by earlier services in the flow. When the server receives subsequent requests for a service with the same set of input values, it returns the cached result to the client rather than invoking the service again. Caching can significantly improve response time of services. For example, services that retrieve information from busy data sources such as high-traffic commercial Web servers could benefit from caching. The server can cache the results for all types of services: flows, Java services, and C/C++ services. The goal for caching is to strike the right balance between data concurrency and memory usage. To gauge the effectiveness of your cache, you can monitor its performance by viewing service statistics from the Integration Server Administrator and adjust your caching values accordingly. You set the controls for caching a service from Designer or Developer. For more information on configuring a service's use of cache, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide.
444
Service without input parameters. When a cached service does not have input parameters (for example, a date/time service) and previous results do not exist in the cache, at run time the Integration Server executes the service and stores the results. When the service executes again, the cached copy is used. In other words, the pipeline is not used; you will always receive cached results until the cache expires. When variables that are defined in the cached service's input parameters are missing from the pipeline, the Integration Server extracts any variables that exist in the pipeline that match the cached service's input parameters. If no required variables exist in the pipeline, the Integration Server ignores the pipeline and essentially considers that no input parameters were provided. Important! If you edit a cached service by changing the inputs (not the pipeline), you must reset the server cache. If you do not reset it, the old cached input parameters will be used at run time. You can rest the cache from Designer, Developer or Integration Server Administrator. For more information about resetting service cache from Integration Server Administrator, see Resetting the Cache on page 445.
445
446
26
About Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Server for Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Administering Guaranteed Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
447
The guaranteed delivery capabilities allow you to build robust, transaction-based client applications without having to embed complex error handling code to respond to transient failures. Important! Use the guaranteed delivery capabilities with stateless (i.e., atomic) transactions because state information cannot be maintained from one request to the next. As a result, guaranteed delivery capabilities cannot be used with multi-request conversational services. For more information about guaranteed delivery, refer to the Guaranteed Delivery Developers Guide.
448
449
watt.server.tx.sweepTime Use the watt.server.tx.sweepTime setting to specify the number of seconds between sweeps (clean up) of the job store of inbound transactions. The server sweeps the job store to remove expired transactions. The default is: 60 seconds watt.server.tx.heuristicFailRetry Use the watt.server.tx.heuristicFailRetry setting to indicate whether the server is to reexecute services for transactions in the job store that are PENDING when the server is restarted after a failure. If a transaction is PENDING, the service began but did not complete execution when the server failed. Because the server cannot determine the exact status of a service request, the server considers the guaranteed transaction to have encountered a heuristic failure. You can configure the server to respond to heuristic failures as appropriate. The default watt.tx.heuristicFailRetry setting causes the server to execute a service at least one time at the risk of re-executing it a subsequent time after a heuristic failure. Alternatively, you can reconfigure the setting to guarantee that a service is executed at most one time at the risk of not executing a service due to a heuristic failure. If the watt.tx.heuristicFailRetry setting is true, the server resets the transaction status from PENDING to NEW, and the server will retry the service. When the setting is true, a request to execute a service can only fail if the transaction expires before the server executes the service. (The client specifies the settings that indicate when a transaction expires.) If the watt.tx.heuristicFailRetry setting is false, the server resets the transaction status from PENDING to FAIL to indicate the heuristic failure; the server does not retry the service. When the setting is false, a request to execute a service can fail due to a heuristic failure or due to the transaction expiring.
450
watt.tx.disabled Use the watt.tx.disabled setting to specify that you want to disable the use of guaranteed delivery for outbound requests. By default, the server allows the use of guaranteed delivery for outbound transactions. The default is "false." If an unexpected exceptional conditional is encountered, guaranteed delivery may be disabled by the server. In this case, the watt.tx.disabled property will be set to "true". The default is: false. watt.tx.defaultTTLMins Use the watt.tx.defaultTTLMins setting to specify the default time-to-live (TTL) value for outbound guaranteed delivery transactions. Specify the number of minutes you want the server to maintain outbound transactions in the job store when a service initiating an outbound transaction does not specify a TTL value. The default is: 30.
451
watt.tx.retryBackoff Use the watt.tx.retryBackoff setting to specify the number of seconds to wait after a service request failure before the Job Manager resubmits the request to execute the service to the Integration Server. The default is: 60. watt.tx.sweepTime Use the watt.tx.sweepTime setting to specify the number of seconds between sweeps of the job store of outbound transactions. The server sweeps the job store to identify transactions that it needs to submit. The default is: 60. watt.tx.jobThreads Use the watt.tx.jobThreads setting to specify the number of client threads you want to make available in a thread pool to service pending requests. The default is: 5.
452
To shut down guaranteed delivery 1 2 3 4 5 6 7 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. In the list of packages, click WmRoot. Click Browse Services in WmRoot. In the list of services, click wm.server.tx:shutdown. Click Test shutdown. The server displays the test screen for the wm.server.tx:shutdown service. Click Test (without inputs). The server disables the guaranteed delivery capabilities for inbound transactions.
453
454
27
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Choosing Local Server Locking or VCS Integration Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disabling and Re-enabling Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
455
Introduction
This chapter contains information intended for the server administrator and users who regularly replicate and publish packages as part of the production process.
Disabling Locking
To disable locking, you use theIntegration Server Administrator or manually edit server.cnf. The following procedure describes the Integration Server Administrator procedure.
456
Important! Make sure that you only use this method of changing the settings. Later, if you change the settings by editing server.cnf, conflicts can occur.
To disable locking on the Integration Server 1 2 3 4 Complete the tasks in Disabling and Re-enabling Locking on page 456. In the Integration Server Administrator, under Settings, click Extended. Click Edit Extended Settings. In the Extended Settings box, type a key and value according to the following table. If you want to... Disable user locking and show no locks Disable user locking but show system locks 5 6 Click Save Changes. The information is saved to Integration Server_directory\config\server.cnf. Restart the Integration Server. The updated settings are now in effect. Type this... watt.server.ns.lockingMode=none watt.server.ns.lockingMode=system
Re-Enabling Locking
To re-enable locking, you use the Integration Server Administrator or manually edit server.cnf. The following procedure describes the Integration Server Administrator procedure. Important! Make sure that you only use this method of changing the settings. Later, if you change the settings by editing server.cnf, conflicts can occur.
To re-enable locking on the Integration Server 1 2 3 4 5 6 Complete the tasks in Disabling and Re-enabling Locking on page 456. In the Integration Server Administrator, under Settings, click Extended. Click Edit Extended Settings. In the Extended Settings box, set the value of watt.server.ns.lockingMode to full. Click Save Changes. The information is saved to Integration Server_directory\config\server.cnf. Restart the Integration Server for the changes to take effect.
457
Best Practices
Remote Server Configuration
It is not recommended that you use Cooperative Development functionality in an Integration Server cluster. Locking information for elements could be inadvertently shared with another Integration Server in the cluster. Use a standalone Integration Server not a cluster, while developing to eliminate these Cooperative Development problems.
458
Source Code
If there has been a significant change to the source code, always reload the package to reflect the latest system locks.
459
460
28
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Document Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Document Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Limiting Server Threads for Broker/Local Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cluster Synchronization for Broker/Local Trigger Management . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying Broker/Local Trigger Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Managing Trigger Service Retries and Shutdown Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Local Publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Polling Frequency for Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
461
Introduction
In a publish-and-subscribe solution, the retrieval and flow of documents through the Integration Server consumes resources, primarily server threads and memory. The rate at which the Integration Server can retrieve and process documents is determined by the availability of these resources. However, server resources also need to be available to perform other functions. The Integration Server Administratorprovides controls for managing resources consumed by document retrieval and document processing. You can use these controls to balance the resource demands for document retrieval and processing with the server resources needed to perform other work. Specifically, you can use the controls provided by Integration Server Administrator to: Increase or decrease the number of server threads used to retrieve documents from the Broker. Decrease the capacity of all Broker/local trigger queues. Suspend document retrieval for one or more Broker/local triggers. Increase or decrease the number of server threads used to process documents. Decrease the number of threads that the Integration Server can use to process documents for concurrent Broker/local triggers simultaneously. Suspend document processing for one or more Broker/local triggers. Change the configured trigger queue capacity, refill level, or execution threads for a specific Broker/local trigger. Additionally, the Integration Server Administrator provides a cluster synchronization feature that you can use to propagate selected changes to other Integration Servers in a cluster automatically. These controls can be useful in a production environment to free up server threads and memory to accommodate an unexpected server load (such as a sudden influx of HTTP requests) or in anticipation of a high usage time. You can also use the controls during the capacity planning stage of your project to determine the configured values for Broker/local triggers and server thread usage. The following sections contain more information about managing document retrieval and document processing using the provided controls.
462
Integration Server keeps temporary copies of the documents it is retrieving in memory. The Integration Server releases the temporary copies from memory after successfully processing the document. Integration Server provides controls that you can use to manage the server resources used for document retrieval. Specifically, you can use the controls to: Limit the number of server threads used for document retrieval. Manage the rate of document retrieval and the amount of memory used during document retrieval by adjusting trigger queue capacity. Suspend or resume document retrieval for one or more Broker/local triggers. These controls can be used during development, capacity planning, or at run time. The following sections provide more information about these controls. You can also configure the frequency with which Integration Server polls each trigger client queue for new documents. For more information, see Configuring Polling Frequency for Triggers on page 488.
463
Increasing the percentage of the server thread pool available for document retrieval can increase the arrival rate of documents because it allows more triggers to retrieve documents from the Broker at one time. For more information about setting the number of server threads for document retrieval, see Limiting Server Threads for Broker/Local Triggers on page 479.
464
You can use the Queue Capacity Throttle provided in the Integration Server Administrator to decrease the capacity and refill levels of all the trigger queues on the Integration Server. The Queue Capacity Throttle reduces the capacity and refill levels for all the trigger queues by the same percentage. For example, if you set the Queue Capacity Throttle to 50% of maximum, a trigger queue with a capacity of 10 and a refill level of 4 will have an adjusted capacity of 5 and an adjusted refill level of 2. By decreasing the capacity and refill levels, you can: Reduce the amount of memory needed to retrieve documents from the Broker. Reduced capacity and refill levels mean that the Integration Server retrieves fewer documents for a Broker/local trigger at one time. Because the Integration Server retrieves fewer documents, the Integration Server uses less memory when retrieving documents. Reduce the memory needed to store the documents while they await processing. Note: Decreasing the capacity might increase the frequency with which the Integration Server retrieves documents because the Integration Server might empty the trigger document store to the adjusted refill level more quickly.
Decreasing the Capacity and Refill Level for All Broker/local triggers
Use the following procedure to decrease the capacity and refill levels for all Broker/local trigger queues. To decrease the capacity and refill level of trigger queues 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Click Broker/Local Trigger, and then click Edit Global Trigger Controls. Under Document Retrieval, in the Queue Capacity Throttle field, select the percentage of configured capacity at which you want all trigger queues to operate. The Integration Server automatically adjusts the refill levels by the same percentage. If you want to apply the queue capacity throttle change to all the servers in a cluster, select the Apply Change Across Cluster check box. This check box appears only if the current Integration Server belongs to a properly configured cluster and is configured to synchronize Broker/local trigger changes across the cluster. For more information about configuring an Integration Server to synchronize trigger management changes across a cluster, see Cluster Synchronization for Broker/Local Trigger Management on page 481. 6 Click Save Changes.
465
Notes:
The Queue Capacity Throttle setting is maintained across server restarts and package reloads. If the percentage by which you reduce capacity does not resolve to a whole number, the Integration Server rounds up or rounds down to the nearest whole number. However, if rounding down would reduce the value to 0, the Integration Server rounds up to 1. For example, if you set the Queue Capacity Throttle to 10% of maximum, a trigger queue with a capacity of 15 and refill level of 4 will have an adjusted capacity of 2 and an adjusted refill level of 1 (The Integration Server rounds the calculated adjusted capacity of 1.5 up to 2 and rounds the calculated adjusted refill level of 0.4 up to 1). When you reduce the Queue Capacity Throttle and save your changes, the Integration Server does not immediately reduce the number of documents in a trigger queue. Instead, the Integration Server continues to process documents in the trigger queue until it reaches the adjusted refill level. Then, the Integration Server retrieves enough documents to fill the trigger queue to the adjusted capacity. For example, if you set Queue Capacity Throttle to 50%, a trigger queue with a capacity of 8 and a refill level of 2 will have an adjusted capacity of 4 and an adjusted refill level of 1. The Integration Server processes documents in the trigger queue until it reaches the adjusted refill level of only 1 document. Then, the Integration Server retrieves up to 3 documents to increase the number of documents in the queue to 4 (the adjusted capacity). If you reduce the capacity to a low percentage for an extended period of time, the document might expire on the Broker. For each publishable document type, you can specify a Time to live property. This property specifies how long a document can remain on the Broker before the Broker discards it. For more information about publishable document types, see the Publish-Subscribe Developer's Guide. If you use the Queue Capacity Throttle as part of your capacity planning process and you determine that the configured values for trigger capacity and refill level need to change, you can use the Integration Server Administrator or webMethods Developer to set the new capacity and refill level values for each Broker/local trigger. For more information about setting the capacity and refill level for a trigger, see Modifying Broker/Local Trigger Properties on page 484.
466
467
In the Retrieval State list, do the following: Select... Active Suspended To... Resume document retrieval for all the triggers on the Integration Server. Suspend document retrieval for all the triggers on the Integration Server.
If you want the state change to be permanent and maintained after the Integration Server restarts or after a package reload, select the Apply Change Permanently check box. If you do not select this check box, the Integration Server considers the change to be temporary. If you want to apply the document retrieval change to all the servers in a cluster, select the Apply Change Across Cluster check box. This check box appears only if the current Integration Server belongs is configured to synchronize trigger changes across the cluster. For more information about configuring an Integration Server to synchronize trigger management changes across a cluster, see Cluster Synchronization for Broker/Local Trigger Management on page 481.
468
Notes:
The Integration Server does not suspend (or resume) document retrieval if the trigger is locked or disabled. If the Integration Server cannot suspend (or resume) document retrieval on the local Integration Server, cluster synchronization cannot occur. The Integration Server does not suspend (or resume) document retrieval for triggers that have been excluded from trigger management changes using the watt.server.trigger.managementUI.excludeList. For more information about this property, see Server Configuration Parameters on page 531. Suspending document retrieval affects document retrieval from the Broker only. Triggers will continue to receive locally published documents. Additionally, triggers will continue to receive documents delivered to the default client. When you suspend document retrieval, the Integration Server will not dispatch any server threads to retrieve documents from the Broker. Any server threads currently retrieving or processing documents for the trigger will execute to completion. When you suspend document retrieval, documents to which this trigger subscribes will collect in the trigger's client queue on the Broker. Documents remain in the trigger's client queue until document retrieval resumes for the trigger or the documents expire. When you resume document retrieval, the Integration Server resumes document retrieval for all triggers at the percentage specified by the Queue Capacity Throttle. If you do not resume document retrieval before the server restarts, the trigger package reloads, or the trigger properties are modified, the Broker discards any volatile documents in that trigger's client queue.
469
After suspending document retrieval for all triggers, you might resume document retrieval for specific triggers. If the server is functioning under an unusually heavy load, you might first suspend retrieval for all triggers and then gradually resume retrieval, starting with the triggers involved in key processes. If the Integration Server suspends document retrieval for a serial trigger because the associated trigger service ends in error, you need to resume document retrieval for that trigger. For more information about configuring a serial trigger to suspend retrieval and processing automatically after an error, see the Publish-Subscribe Developer's Guide. Suspending or Resuming Document Retrieval for a Broker/local trigger The following procedure explains how to suspend or resume document retrieval for an individual Broker/local trigger. To suspend or resume document retrieval for a Broker/local trigger 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Click Broker/Local Trigger. Under Individual Trigger Controls, locate the row containing the trigger for which you want to suspend document retrieval. In the Active column located under Document Retrieval, click Yes or No. (The Active column displays "Yes" if document retrieval is active for the trigger; "No" if document retrieval is suspended. An asterisk (*) appears next to the status if the document retrieval state is temporary.) In the Retrieval State list, do the following: Select... Active Suspended 7 To... Resume document retrieval for this trigger. Suspend document retrieval for this trigger.
If you want the state change to be permanent and maintained after the Integration Server restarts, select the Apply Change Permanently check box. If you do not select this check box, the Integration Server considers the change to be temporary. If you want to apply the document retrieval change for this trigger to all the servers in a cluster, select the Apply Change Across Cluster check box. This check box appears only if the current Integration Server belongs to a properly configured cluster and is configured to synchronize trigger changes across the cluster. For more information about configuring an Integration Server to synchronize trigger management changes across a cluster, see Cluster Synchronization for Broker/Local Trigger Management on page 481.
470
10 Notes:
The Integration Server will not suspend or resume document retrieval for the specified trigger if the trigger is locked by a user. If the Integration Server cannot suspend (or resume) document retrieval locally, cluster synchronization cannot occur. When you resume document retrieval, the Integration Server resumes retrieval for the trigger at the percentage specified by the Queue Capacity Throttle. In a flow service, you can suspend or resume document retrieval for individual triggers by invoking the pub.trigger:suspendRetrieval service or the pub.trigger:resumeRetrieval service, respectively. For more information about these services, see the webMethods Integration Server Built-In Services Reference. In a Java service, you can suspend or resume document retrieval by calling com.wm.app.b2b.server.dispatcher.trigger.TriggerFacade.setRetrievalSuspended( ). For more information about this method, see the webMethods Integration Server Java API Reference for the com.wm.app.b2b.server.dispatcher.trigger.TriggerFacade class. You can filter the list of displayed triggers using the watt.server.trigger.managementUI.excludeList property. For more information about this property, see Server Configuration Parameters on page 531.
471
472
Alternatively, if you observe memory constraints or other resource issues, you can decrease the number of threads for document processing. Document processing consumes memory because the Integration Server keeps the document in memory while the server thread evaluates the document and executes the trigger service. Note: You can also determine when to modify the number of threads allowed for document processing by monitoring thread usage. You can do this by viewing the thread usage information displayed on the Server > Statistics page. However, you can also establish a warning threshold that instructs the Integration Server to alert you when the number of available threads drops below a particular level. Specifically, the Integration Server creates a journal log entry stating "Available Threads Warning Threshold Usage Exceeded." When the Integration Server writes this journal log entry, you might want to decrease threads for document processing to allow more threads to be used for other functions. For more information about setting an available threads warning threshold, seeManaging the Server Thread Pool on page 86. Another way to determine when to alter the number of server threads allotted for document processing is to monitor the current number of threads that are processing documents for triggers. The Integration Server Administrator displays this value in the Current Threads field located under Document Processing on the Settings > Messaging > Broker/Local Triggerpage. Note: Other ways to control the resources used for document processing are: adjusting execution threads for concurrent triggers and suspending or resuming document processing for triggers. For more information about adjusting trigger queue capacity, see Decreasing Document Processing for Concurrent Triggers on page 473. For more information about suspending (or resuming) document processing, see Suspending and Resuming Document Processing on page 475.
473
Prevent concurrent triggers from monopolizing the threads allotted for document processing. The number of server threads that the server dispatches to process documents for serial and concurrent triggers cannot exceed the value established by the maximum execution threads percentage. If you reduce the number of threads allowed for document processing, and concurrent triggers continue to consume the maximum execution threads possible (according to their configured settings), serial triggers must wait longer for server threads to become available. This is especially likely if the Integration Server contains concurrent triggers that execute long-running services.
The Execution Threads Throttle value is maintained across server restarts and package reloads. Serial triggers always process one document at a time. The Execution Threads Throttle property does not affect serial triggers. If the percentage by which you reduce trigger execution threads does not resolve to a whole number, the Integration Server rounds up or rounds down to the nearest whole number. However, if rounding down would set the value to 0, the Integration Server rounds up to 1. For example, if you reduce Execution Threads Throttle to 10% of maximum, a concurrent trigger with a maximum execution threads value of 12 would have an adjusted value of 1 (the Integration Server
474
rounds 1.2 down to 1). A concurrent trigger with a maximum execution threads value of 4 would have an adjusted value of 1 (the Integration Server rounds 0.4 up to 1).
When you reduce the Execution Threads Throttle and save your changes, the Integration Server does not terminate threads currently executing concurrent triggers to meet the adjusted maximum. The Integration Server allows server threads processing documents for concurrent triggers to execute to completion. The Integration Server waits until the number of threads executing for a concurrent trigger is less than the adjusted maximum before dispatching another server thread to process a document for that trigger. If you suspend document processing (trigger execution) and do not suspend document retrieval, the Integration Server will fill all the trigger queues to capacity. Full trigger queues consume more memory than empty trigger queues. You can also reduce the number of concurrent execution threads for a trigger by reducing the capacity of a trigger queue below the maximum number of concurrent execution threads for the trigger. The maximum number of dispatched threads for a trigger cannot exceed the trigger queue's capacity. For more information about reducing trigger queue capacity, see Decreasing the Capacity of Trigger Document Stores on page 464. If you use the Execution Threads Throttle as part of your capacity planning process and you determine that the configured values for Maximum execution threads need to change, you can use the Integration Server Administrator or webMethods Developer to set the new maximum execution threads values for each concurrent trigger. For more information about setting trigger properties, see Modifying Broker/Local Trigger Properties on page 484.
475
Suspending document processing for all triggers is a quick way to make server resources available. This can be especially helpful in a situation in which the Integration Server is functioning under heavy load and additional resources need to be available immediately. Suspending or resuming document processing can be a temporary or permanent change. (The Integration Server considers a document processing change to be permanent if you selected the Apply Change Permanently check box when you made the change.) If the change is temporary, the Integration Server reverts to the permanent document processing state when the Integration Server restarts or you reload a package. When you reload a package, the Integration Server reverts only the triggers contained in that package to the permanent document processing state. For example, suppose that you temporarily suspend document processing for all triggers. If you reload the package OrderProcessing, the Integration Server resumes document processing for the triggers in the OrderProcessing package only. Tip! On the Settings > Messaging >Broker/Local Triggerpage under Document Processing, the Integration Server Administrator indicates a temporary document processing change by displaying an asterisk (*) next to the trigger status in the Active column. When you are ready to resume document processing, you might want to resume it gradually. For example, you might set the Execution Threads Throttle to a low percentage, resume document processing for all triggers, and then gradually move the Execution Threads Throttle up to 100%. Alternatively, you might selectively resume individual triggers. For example, you might want to resume document processing for those triggers that are part of a critical or high priority process. Suspending or Resuming Document Processing for All Broker/local triggers Use the following procedure to suspend or resume document processing for all Broker/local triggers. To suspend or resume document processing for all Broker/local triggers 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Click Broker/Local Trigger. Under Individual Trigger Controls, in the Active column located under Document Processing, click "edit all". In the Processing State list, do the following: Select... Active Suspended To... Resume document processing for all of the triggers on the Integration Server. Suspend document processing for all of the triggers on the Integration Server.
476
If you want the state change to be permanent and maintained after the Integration Server restarts, select the Apply Change Permanently check box. If you do not select this check box, the Integration Server considers the change to be temporary. If you want to apply the document processing change to all the servers in a cluster, select the Apply Change Across Cluster check box. This check box appears only if the current Integration Server belongs to a properly configured cluster and is configured to synchronize trigger changes across the cluster. For more information about configuring an Integration Server to synchronize trigger management changes across a cluster, see Cluster Synchronization for Broker/Local Trigger Management on page 481.
8 9
The Integration Server will not suspend or resume document processing for a locked or disabled trigger. If the Integration Server cannot suspend (or resume) document processing locally, cluster synchronization cannot occur. The Integration Server does not suspend (or resume) document processing for triggers that have been excluded from trigger management changes using the watt.server.trigger.managementUI.excludeList. For more information about this property, see Server Configuration Parameters on page 531. Suspending or resuming document processing affects all documents in the trigger's queue on the Integration Server, including documents retrieved from the Broker and from local publishing. When you suspend document processing, the Integration Server will not dispatch any more server threads to process documents. Any server threads currently processing documents for triggers will execute to completion. This includes documents that are being retried. When you suspend document processing but do not suspend document retrieval, documents will collect in trigger queues until the trigger queues are at maximum capacity or document processing resumes. If the server restarts before document processing resumes, volatile documents are discarded. When you resume document processing the Integration Server resumes document processing at the percentage specified by the Execution Threads Throttle.
477
When a back-end system becomes unresponsive or requires maintenance, you might want to suspend document processing for triggers that interact with that back-end system. If the back-end system is not available because of maintenance or failure, trigger services that interact with the system would probably not execute successfully. Suspending document processing for the associated triggers allows for more effective resource utilization because you keep resources that would have been used for unsuccessful document processing available for other tasks. After suspending document processing for all triggers, you might resume document processing for specific triggers. If the server is operating under a heavy load, you might first suspend all document processing and then gradually resume document processing, starting with the triggers involved in critical processes. If the Integration Server suspends document processing for a serial trigger because the associated trigger service ends in error, you need to resume document processing for the trigger. For more information about configuring a serial trigger to suspend retrieval and processing automatically after an error, see the Publish-Subscribe Developer's Guide. Suspending or Resuming Document Processing for a Specific Broker/local trigger Use the following procedure to suspend or resume document processing for an individual Broker/local trigger. To suspend or resume document processing for a Broker/local trigger 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Click Broker/Local Trigger. Under Individual Trigger Controls, locate the row containing the trigger for which you want to suspend document processing. In the Active column located under Document Processing, click Yes or No. (The Active column displays "Yes" if document processing is active for the trigger; "No" if document processing is suspended. An asterisk (*) appears next to the status if the document processing state is temporary.) In the Processing State list, do the following: Select... Active Suspended 7 To... Resume document processing for this trigger. Suspend document processing for this trigger.
If you want the state change to be permanent and maintained after the Integration Server restarts, select the Apply Change Permanently check box. If you do not select this check box, the Integration Server considers the change to be temporary.
478
If you want to apply the document processing change for this trigger to all the servers in a cluster, select the Apply Change Across Cluster check box. This check box appears only if the current Integration Server belongs to a properly configured cluster and is configured to synchronize trigger changes across the cluster. For more information about configuring an Integration Server to synchronize trigger management changes across a cluster, see Cluster Synchronization for Broker/Local Trigger Management on page 481.
10 Notes:
Integration Server will not suspend or resume document processing for the specified trigger if the trigger is locked by a user. If the Integration Server cannot suspend (or resume) document processing locally, cluster synchronization cannot occur. When you resume document processing for a concurrent trigger, the Execution Threads Throttle determines the maximum number of documents that can be processed in parallel. In a flow service, you can suspend or resume document processing for individual triggers by invoking the pub.trigger:suspendProcessing service or the pub.trigger:resumeProcessing service, respectively. For more information about these services, see the webMethods Integration Server Built-In Services Reference. In a Java service, you can suspend or resume document retrieval by calling com.wm.app.b2b.server.dispatcher.trigger.TriggerFacade.setProcessingSuspende d(). For more information about this method, see the webMethods Integration Server Java API Reference for the com.wm.app.b2b.server.dispatcher.trigger.TriggerFacade class. You can filter the list of displayed triggers using the watt.server.trigger.managementUI.excludeList property. For more information about this property, see Server Configuration Parameters on page 531.
479
Limiting the number of server threads that can retrieve and process documents keeps other server threads available to perform other server functions such as responding to http requests or server administration. These parameters help to ensure that document retrieval and processing will not monopolize the entire server thread pool. Note: When the Integration Server uses a thread for document retrieval, the thread retrieves documents for one trigger from the Broker. The thread does not retrieve documents for all triggers. A thread used for document processing addresses one document in a trigger queue. (Document processing includes determining which trigger condition the document satisfies and executing the associated service.)
480
6 7
The Integration Server uses the percentages you entered to calculate the number of threads that can be devoted to document retrieval and document processing. If the number of threads does not evaluate to a whole number the Integration Server rounds up or down to the nearest whole number. For document retrieval, if the current number of server threads retrieving documents is greater than the new value set by the Maximum Threads percentage, the Integration Server will not dispatch more threads for document retrieval. Threads currently retrieving documents will execute to completion. The Integration Server will dispatch new threads for document retrieval only when the current number of document retrieval threads is less than the maximum allowed document retrieval threads. For document processing, if the current number of server threads processing documents (executing triggers) is greater than the thread value determined by the Maximum Threads percentage, the Integration Server will not dispatch more threads for document processing. Threads currently processing documents will execute to completion. The Integration Server will dispatch new threads for trigger execution only when the current number of document processing threads is less than the maximum allowed document processing threads. The current number of threads and maximum allotted threads for document retrieval and document processing are visible under the Global Trigger Controls heading on the Settings > Messaging >Broker/Local Trigger page.
481
Configure the cluster. The Integration Server can propagate trigger management changes to other servers only if all the servers are members of a properly configured cluster. For more information about configuring a cluster, see the webMethods Integration Server Clustering Guide. Set up remote server aliases for the servers in the cluster. For more information about setting up aliases for remote servers, see Setting Up Aliases for Remote Integration Servers. Update the watt.server.cluster.aliasList property with a comma-separated list of the remote server alias names. The Integration Server uses this list when executing the remote invokes that update the other cluster nodes. Note: Integration Servers that belong to the cluster but are not in this list will not be updated during cluster synchronization. When cluster synchronization property watt.server.cluster.aliasList is properly configured, the Apply Change Across Cluster check box will be visible when performing trigger management tasks.
The server log displays the message for each member of the cluster that was not successfully updated:
[ISS.0098.0107E] Error occurred during cluster invoke: Alias = remoteAliasName; Service = serviceName; Exception = exceptionName
You can use the Integration Server Administrator to view and change cluster synchronization status for triggers.
482
Expect this log message... The Integration Server Administrator displays the message:
[ISS.0085.9204] Local update failed: Exception providing reason for failure. (Note: The cluster synchronization will not run until all local errors are resolved.)
If the trigger management change cannot be completed on the local Integration Server, cluster synchronization cannot occur. For example, if you suspend document retrieval for all triggers and one trigger is currently locked, the Integration Server can suspend document retrieval for every trigger except the locked one. Because document retrieval could not be completed locally, the Integration Server cannot synchronize the change with the rest of the cluster. Fails because it is not configured The server log displays the following message:
[ISS.0033.0156W] Cluster invoke did not complete successfully. Cluster Synchronization feature is not configured.
For more information about configuring cluster synchronization for triggers, see Configuring Cluster Synchronization on page 481.
483
If a Broker/local trigger is not synchronized, the cluster view displays an error message that indicates how the trigger is out of sync with the trigger on the current server. For example, if document processing for a trigger is suspended locally, but active on another server in the cluster, the error message next to trigger name states "Processing State mismatch [local=suspended; remote=active]". The Integration Server considers a trigger on a remote server to be out of sync with the local trigger of the same name if either of the following is true: The triggers have different values for trigger queue capacity, refill level, or maximum execution threads. The triggers have different document retrieval or document processing states. Note: To log on to a remote server in the cluster, click the server alias in the Remote Server Alias column. When connecting, the remote server prompts you for user and password information. If you are connecting to the remote server via HTTPS and the HTTPS port requires certificates, you need to import a trusted certificate into the browser so that it can be presented at connection time. If the trusted certificates are not imported into the browser, when you try to connect to the remote server, you will receive a message informing you that the page is not available. For more information about client authentication and certificates, seeAuthenticating Clients.
484
Under Properties, do one or more of the following: For this property... Queue Capacity Queue Refill Level Specify... The maximum number of documents that the trigger queue can contain. The number of unprocessed documents that must remain in this trigger queue before the Integration Server retrieves more documents for the queue from the Broker. Note: The Queue Refill level value must be less than or equal to the Queue Capacity value. Max Execution Threads The maximum number of documents that the Integration Server can process concurrently. You can only specify a maximum execution threads value for concurrent triggers. This field displays N/A for serial triggers.
7 8
For more information and guidelines for setting trigger queue capacity, refill level, and maximum execution threads, see the Publish-Subscribe Developer's Guide. If you want to apply the property changes for this trigger to all the servers in a cluster, select the Apply Change Across Cluster check box. This check box appears only if the current Integration Server belongs to a properly configured cluster and is configured to synchronize trigger changes across the cluster. For more information about configuring an Integration Server to synchronize trigger management changes across a cluster, see Cluster Synchronization for Broker/Local Trigger Management on page 481.
Click Save Changes. Note: You can filter the list of displayed triggers using the watt.server.trigger.managementUI.excludeList property. For more information about this property, see Server Configuration Parameters on page 531.
485
interrupt the retry process for trigger services. The watt.server.trigger.interruptRetryOnShutdown parameter can be set to one of the following: Set to...
false
To... Indicate that Integration Server should not interrupt the trigger service retry process to respond to a shutdown request. The Integration Server shuts down only after it makes all the retry attempts or the trigger service executes successfully. This is the default value. Important! If watt.server.trigger.interruptRetryOnShutdown is set to "false" and a trigger is set to retry until successful, a trigger service can enter into an infinite retry situation. If the transient error condition that causes the retry is not resolved, Integration Server continually re-executes the service at the specified retry interval. Because you cannot disable a trigger during trigger service execution and you cannot shut down the server during trigger service execution, an infinite retry situation can cause Integration Server to become unresponsive to a shutdown request. To escape an infinite retry situation, set the watt.server.trigger.interruptRetryOnShutdown to "true". The change takes effect immediately.
true
Indicate that Integration Server should interrupt the trigger service retry process if a shutdown request occurs. Specifically, after the shutdown request occurs, Integration Server waits for the current service retry to complete. If the trigger service needs to be retried again (the service ends because of an ISRuntimeException), the Integration Server stops the retry process and shuts down. Upon restart, the transport (the Broker or, for a local publish, the transient store) redelivers the document to the trigger for processing. Note: If the trigger service retry process is interrupted and the transport redelivers the document to the trigger, the transport increases the redelivery count for the document. If the trigger is configured to detect duplicates but does not use a document history database or a document resolver service to perform duplicate detection, Integration Server considers the redelivered document to be "In Doubt" and will not process the document.
Note: When you change the value of the watt.server.trigger.interruptRetryOnShutdown parameter, the change takes effect immediately.
486
487
1200/1000 = 1.2 Integration Server rounds down to 1. The value at the index position 1 of the watt.server.control.controlledDeliverToTrigggers.delays property is 2000. Integration Server delays publishing services for 2000 milliseconds. If Integration Server checks the trigger document store 5000 milliseconds later, and the store capacity is still at or greater than 90% capacity, Integration Server uses the following to determine how long to delay services publishing documents locally: 5000/1000 = 5 However, the watt.server.control.controlledDeliverToTriggers.delays parameter specifies only four values. There is not a 5th index position. Integration Server delays services publishing documents locally by the maximum value specified in the watt.server.control.controlledDeliverToTriggers.delays parameter. In this case, Integration Server delays the services by 5000 milliseconds. The default values for the server parameters are as follows: watt.server.control.controlledDeliverToTriggers.delayIncrementInterval = 2000 watt.server.control.controlledDeliverToTrigggers.delays = 500,2000,3000,3500,4000,4500,5000
488
When m is greater than or equal to n, Integration Server delays trigger client queue polling by the number of milliseconds at the nth position in the array. For example, suppose the following values are set for the server properties: watt.server.control.triggerInputControl.delayIncrementInterval = 1000 watt.server.control.triggerInputControl.delays = 1000, 2000, 3000, 4000 Now suppose that Integration Server polls the trigger client queue for the Broker/local trigger triggerA on the Broker and the client queue does not contain any documents. Integration Server schedules the next poll for documents using this equation: 0/1000 = 0 The value at the zero index position of the watt.server.control.triggerInputControl.delays property is 1000. Integration Server schedules the next poll of the trigger client queue for triggerA to occur in 1000 milliseconds. If Integration Server polls the trigger client queue 1000 milliseconds later and the client queue contains no documents, Integration Server schedules the next poll using this equation: 1000/1000 = 1 The value at the first index position of the watt.server.control.triggerInputControl.delays property is 2000. Integration Server schedules document polling of the trigger client queue for triggerA to occur in 2000 milliseconds. Note: The largest value specified in the array for watt.server.control.triggerInputControl.delays represents the longest lag between the Broker placing the document in the trigger client queue and Integration Server retrieving the document. The default values for the server parameters are as follows: watt.server.control.triggerInputControl.delayIncrementInterval = 2000 watt.server.control.triggerInputControl.delays = 500,1000,1500,5000
489
490
29
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling Thread Usage for JMS Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enabling, Disabling, and Suspending JMS Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About WS Endpoint Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
491
Introduction
Integration Server Administrator provides controls for managing JMS triggers and the resources used by JMS triggers. Specifically, you can use the controls provided by Integration Server Administrator to: Increase or decrease the maximum number of server threads used for JMS triggers. Change the maximum execution threads for concurrent JMS triggers. Enable, disable, or suspend one ore more JMS triggers. The following sections provide more information about managing JMS triggers. Note: Unless otherwise specified, the term JMS triggers encompasses SOAP-JMS triggers.
492
Reduce maximum execution threads by the same percentage across all concurrent JMS triggers. This also decreases the rate at which concurrent JMS triggers process messages. To increase or decrease thread usage for JMS triggers 1 2 3 4 5 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Click JMS Trigger Management. Click Edit JMS Global Trigger Controls. In the Thread Pool Throttle field, type the maximum percentage of the server thread pool that can be used for JMS triggers. This includes threads used to retrieve messages from the JMS provider and threads used to process messages. You must enter a value greater than zero. In the Individual Trigger Processing Throttle field, select the value, as a percentage of the configured maximum execution threads value, at which you want to the server to function. Integration Server applies this percentage to the maximum execution threads value for all concurrent JMS triggers. This value applies to concurrent JMS triggers only. 7 Click Save Changes. Notes:
If the Thread Pool Throttle percentage does not evaluate to a whole number when applied to the size of the server thread pool, Integration Server rounds up or down to the nearest whole number. Serial JMS triggers always process one message at a time. For a serial trigger, Integration Server uses the same thread for receiving and processing a message. The Individual Trigger Processing Throttle does not affect serial JMS triggers. Concurrent JMS triggers use a pool of consumers to receive and process messages. Each consumer will use a thread from the server thread pool to receive and process a message. A concurrent JMS trigger dedicates an additional thread per connection to managing the pool of consumers. For example, a concurrent JMS trigger configured to use one connection to the JMS provider and configured to process up to 10 messages at a time can use a maximum of 11 server threads. As another example, a concurrent JMS trigger configured to use 2 connections to the JMS provider and configured to process up to 10 messages at a time can use a maximum of 12 threads. For more information about using multiple connections for a concurrent JMS trigger, see Allowing Multiple Connections for a JMS Connection Alias on page 195. For a concurrent JMS trigger configured to use multiple connections to the webMethods JMS Provider, the trigger's maximum execution threads will never be less than the number of connections specified in the trigger's Connection count property. This is true even when reducing the Individual Trigger Processing Throttle.
493
If the percentage by which you reduce concurrent JMS trigger execution threads does not resolve to a whole number for a JMS trigger, Integration Server rounds up or rounds down to the nearest whole number. However, if rounding down would set the value to 0, the Integration Server rounds up to 1. For example, if you reduce Individual Trigger Processing Throttle to 10% of maximum, a concurrent JMS trigger with a maximum execution threads value of 12 would have an adjusted value of 1 (Integration Server rounds 1.2 down to 1). A concurrent JMS trigger with a maximum execution threads value of 4 would have an adjusted value of 1 (Integration Server rounds 0.4 up to 1). When you reduce the Individual Trigger Processing Throttle and save your changes, Integration Server does not meet the adjusted maximum by terminating any threads currently executing concurrent JMS triggers. Integration Server allows server threads processing messages for concurrent JMS triggers to execute to completion. Integration Server waits until the number of threads executing for a concurrent JMS trigger is less than the adjusted maximum before dispatching another server thread for that JMS trigger.
Disabled Suspended
Using the Integration Server Administrator, you can: Enable, disable, or suspend all JMS triggers. Enable, disable, or suspend all the JMS triggers of a specific type (standard or SOAPJMS). Enable, disable, or suspend specific JMS triggers. You might want to change the state of all JMS triggers at once as a quick way of freeing up server resources. This can be especially helpful in a situation in which Integration Server is functioning under heavy load and additional resources are needed immediately. You might want to change the state for a specific JMS trigger in the following situations:
494
When a back-end system needs maintenance or is becoming unresponsive, you might want to suspend JMS triggers that interact with the back-end system. When the backend system becomes available, you can enable the JMS triggers. After suspending or disabling all JMS triggers, you might enable specific JMS triggers. For example, if the server is functioning under an unusually heavy load, you might first suspend all JMS triggers and then gradually enable JMS triggers, starting with the JMS triggers involved in key processes. After Integration Server suspends a serial JMS trigger automatically because a fatal error occurred during message processing. For information about configuring a JMS trigger for fatal error handling, see the webMethods Integration Server JMS Client Developers Guide or webMethods Service Development Help. After creating a WS endpoint trigger by creating a provider Web service endpoint alias for JMS. Important! If you disable or suspend a SOAP-JMS trigger that acts as a listener for one or more provider Web service descriptors, Integration Server will not retrieve any messages for those Web service descriptors. The following procedure explains how to use Integration Server Administrator to change the state of all or individual JMS triggers. To enable, disable, or suspend JMS triggers 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Click JMS Trigger Management. If you want to change the state of all JMS triggers, do the following: a b c Under Individual JMS Trigger Controls, in the Enabled column, click edit all. On the Settings > Messaging > JMS Trigger Management > Edit State screen, in the New State list, select the state that you want to apply to all JMS triggers. In the JMS Trigger Type list, select one of the following: Select... Standard SOAP All 5 To... Apply the state change to standard JMS triggers only. Apply the state change to SOAP-JMS triggers only, including WS endpoint triggers. Apply the state change to all JMS triggers.
If you want to change the state of a specific JMS trigger, do the following:
495
a b 6
Under Individual JMS Trigger Controls, in the row for the JMS trigger that you want to enable, disable, or suspend, click the text in the Enabled column On the Settings > Messaging > JMS Trigger Management > Edit State: triggerName screen, in the New State list, select the state that you want to apply to this JMS trigger.
If you want to disable a JMS trigger, first suspend the JMS trigger and wait for all the processing threads complete. Then, disable the JMS trigger. You can view the number of threads currently used by a JMS trigger on the Settings > Messaging > JMS Trigger Management screen. When you disable a JMS trigger, Integration Server does the following:
If the JMS trigger is waiting before making a retry attempt, Integration Server interrupts processing for the JMS trigger. If the JMS trigger is currently processing messages, Integration Server waits a specified amount of time before forcing the JMS trigger to stop processing messages. If it does not complete in the allotted time, Integration Server stops the message consumer used to receive messages for the JMS trigger and closes the JMS session. At this point the server thread for the JMS trigger continues to run to completion. However, the JMS trigger will not be able to acknowledge the message when processing completes. If the delivery mode of the message is set to persistent, this can lead to duplicate messages. The time Integration Server waits between the request to disable the JMS trigger and forcing the trigger to stop is specified by the watt.server.jms.trigger.stopRequestTimeout property.
Because administered objects, like destinations, are configured outside of Integration Server, disabling a JMS trigger has no impact on the subscription. If a JMS trigger is processing messages at the time it is suspended, the JMS trigger will complete processing of those messages. The JMS trigger also acknowledges the messages to the JMS provider. You can use built-in services to enable, disable, and suspend one or more triggers. For information about the pub.trigger:disableJMSTriggers, pub.trigger:enableJMSTriggers, and pub.trigger:suspendJMSTriggers services, see the webMethods Integration Server Built-In Services Reference.
496
Keep the following points in mind when working with WS endpoint triggers: Integration Server uses the following naming convention when creating a WS endpoint trigger: WS Endpoint Trigger: aliasName where aliasName is the provider Web service endpoint alias name. Integration Server saves WS endpoint triggers to the following configuration file: Integration Server_directory/config/endpoints/providerJMS.cnf. The existence of the WS endpoint trigger is tied to the provider Web service endpoint alias. If you select WS Endpoint Trigger as the JMS trigger to use with a provider Web service endpoint alias, Integration Server creates the WS endpoint trigger a part of creating the alias. If you delete the alias, Integration Server deletes the WS endpoint trigger as well.
At the time it creates the WS endpoint trigger, Integration Server sets some default properties, such as serial processing and the JMS connection alias. You can use Integration Server Administrator to change the default values. Note: While WS endpoint triggers are SOAP-JMS triggers, WS endpoint triggers have a subset of the properties and features of a SOAP-JMS trigger. For example, exactlyonce processing, fatal error handling, and transient error handling are available for SOAP-JMS triggers only. When Integration Server creates a WS endpoint trigger, Integration Server assigns a placeholder destination. The destination name uses the format: wseQueue_aliasName where aliasName is the provider Web service endpoint alias name. Unless a queue with this name exists, you must specify the actual destination to which the WS endpoint trigger subscribes. When Integration Server creates a WS endpoint trigger, Integration Server leaves the WS endpoint trigger in a disabled state. You must enable the trigger for it to receive messages from the JMS provider. For more information about enabling JMS triggers, see Enabling, Disabling, and Suspending JMS Triggers on page 494. You can only edit the WS endpoint trigger using Integration Server Administrator. You cannot use Designer or Developer to edit a WS endpoint trigger.
Integration Server sets the execution user to Administrator for all WS endpoint triggers.
497
The JMS connection alias you want Integration Server to use to obtain connections to and receive messages from the JMS provider must already exist. Although a JMS connection alias does not need to be enabled at the time you assign it to the WS endpoint trigger, the JMS connection alias must be enabled for the WS endpoint trigger to execute at run time. The transaction type of the JMS connection alias determines whether or not the WS endpoint trigger is transacted (that is, it receives and processes messages as part of a transaction) The destination to which the WS endpoint trigger subscribes must be a queue. Only concurrent triggers can have a Max Execution Threads value greater than one. To specify a Connection Count value greater than one, the following must be true:
The JMS connection alias must connect to the webMethods JMS Provider (webMethods Broker). The specified JMS connection alias must be configured to create a new connection for each JMS trigger that uses that connection alias. For more information, see Allowing Multiple Connections for a JMS Connection Alias on page 195. The WS endpoint trigger must be configured for concurrent processing.
To edit a WS endpoint trigger 1 2 3 4 5 6 7 8 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Messaging. Click JMS Trigger Management. Under Individual SOAP JMS Trigger Controls, select the WS endpoint trigger that you want to edit. On the Settings > Messaging > JMS Trigger Management > Detail > triggerName screen, click Edit Trigger. In the JMS Connection Alias list, select the JMS connection alias that you want the WS endpoint trigger to use to receive messages from the JMS provider. In the Destination Name field, type the name of the queue from which the WS endpoint trigger will receive messages. Next to Processing Mode, select one of the following: Select... Serial Concurrent To... Specify that Integration Server processes messages received by the trigger one after the other. Specify that Integration Server processes multiple messages for this trigger at one time.
498
If you selected concurrent processing, in the Max execution threads field, specify the maximum number of messages that Integration Server can process concurrently.
10 If you selected concurrent processing, in the Connection Count field, specify the number of connections you want the WS endpoint trigger to make to the JMS provider. Note: The Connection Count value must be less than or equal to the Max Execution Threads value. 11 Click Save Changes.
499
500
30
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Removing Expired Entries from the Document History Database . . . . . . . . . . . . . . . . . . . . . . . . Viewing Exactly-Once Processing Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clearing Exactly-Once Processing Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
501
Overview
The document history database maintains a record of guaranteed documents processed by Broker/local triggers and persistent messages processed by JMS triggers. The database keeps a document history only for triggers that specify that document history should be used as part of duplicate detection. Integration Server adds entries to the document history database when a trigger service begins executing and when it executes to completion (whether it ends in success or failure). For more information about exactly-once processing for Broker/local triggers or JMS triggers, see webMethods Service Development Help.
502
503
504
31
Overview of XA Transaction Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring XA Options in Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manually Resolving a Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
505
506
The transaction involves multiple resources and all the resources are XA-enabled (that is, the resources comply with the JTA and XA specifications and keep persistent records of transactions that have been prepared or heuristically committed). The transaction is defined as an XA transaction. For example, if the transaction involves the webMethods JDBC Adapter, the transaction would be defined as an XA transaction on the adapter's connections to the resources. Note: As with most features that improve reliability and recoverability, this feature may increase the overhead associated with processing XA transactions.
If an error occurs while Integration Server is trying to resolve an uncompleted transaction, Integration Server waits a period of time that you specify and then tries again. Integration Server continues trying to resolve the uncompleted transaction until a maximum recovery time that you specify expires. For more information about configuring these values, see Configuring XA Server Parameters on page 512. New XA transactions continue unimpeded during Integration Server's attempts at resolution.
507
Integration Server cannot resolve all uncompleted transactions. For example, Integration Server cannot resolve a transaction in these cases: A resource administrator forced a commit or rollback of a transaction on a resource after Integration Server ended abnormally. The transaction includes a 1PC (one-phase commit) resource, and Integration Server stores statuses only for transactions whose participating resources are all XA-enabled. Integration Server cannot connect to the resource after repeated attempts within the specified maximum recovery time (for example, because the transaction involves the webMethods JDBC Adapter and the adapter's connection to the resource does not exist or has been changed). In such cases, you will have to resolve the uncompleted transaction manually.
508
Column
Description TR_ROLLBACK_RESOURCE_END TR_ROLLBACK_END TR_ROLLBACK_ONLY TR_FORGET_RESOURCE TR_FORGET_RESOURCE_END TR_COMPLETED TR_RECOVERY TR_UNDEFINED Integration Server is trying to resolve the transaction. STATUS_UNKNOWN STATUS_ROLLED_BACK MARKED_ROLLBACK
Error message that Integration Server wrote to the server log before storing the global state of the transaction in the XA recovery store. Action that Integration Server took to try to resolve the transaction. If Global 2PC State is TR_COMMIT_BEGIN, Integration Server tried to commit the transaction. If the global state is any other value, Integration Server tried to roll back the transaction.
Note: Refresh the page at intervals to make sure all uncompleted transactions are listed. Suppose Integration Server tries to resolve an uncompleted transaction but cannot; the transaction will not be listed while Integration Server is trying to resolve it, but if you refresh the page later, the transaction will appear on the list.
509
Column
Description Unknown That the Integration Server could not determine whether the XID exists on the resource.
State
Current state of the transaction on the resource. The values are the same as those in the Global 2PC State list. For a list of global 2PC states, see the table in About Unresolved XA Transactions on page 508. Assumed status of the transaction on the resource, based on the values of XID exists and State. Based on the possible combinations, statuses are as follows: XID Exists? Yes State Any Inferred Status Prepared, or heuristic action was taken Rolled back Forgotten Committed
Inferred Status
No No No
TR_ROLLBACK_RESOU RCE_END TR_FORGET_RESOURC E_END Anything other than TR_ROLLBACK_RESOU RCE_END or TR_FORGET_RESOURC E_END
For information about manually resolving transactions, see Manually Resolving a Transaction on page 513.
The length of time that Integration Server waits between attempts to resolve a transaction. The maximum time allowed to resolve a transaction. Whether a transaction should continue if Integration Server cannot store the status of a transaction and its participating resources in the XA recovery store (for example, because the store is corrupted).
The following sections provide more information about setting these options.
510
If XA transaction recovery is currently enabled and you want to disable it, click Disable XA Transaction Recovery. Integration Server Administrator hides the Unresolved XA Transaction table. If XA transaction recovery is currently disabled and you want to enable it, click Enable XA Transaction Recovery. Integration Server Administrator displays the Unresolved XA Transaction table Tip! You can also use the watt.server.jca.transaction.writeRecoveryRecord server parameter to enable or disable XA transaction recovery. For more information about setting server parameters, see Appendix B, Server Configuration Parameters.
511
In the Store Location field, type the relative or absolute path to the directory in the file system in which to store the XA recovery store file. The default location is: Integration Server_directory\XAStore Important! Make sure that you have write access to the specified directory and that the directory does not contain any characters considered illegal by your operating system.
In the Initial Store Size (MB) field, type the initial size for the XA recovery store file, in megabytes. The default is 10MB. Note: Make sure that there is enough free disk space on the Integration Server machine to accommodate the initial sizes of the default document store, the trigger document store, and the XA recovery store.
Click Save Changes. When you next restart Integration Server, it will create a new XA recovery store file in the new location and start writing to it. Integration Server will also use the new initial size for the file.
512
513
If you want to... The resource administrator heuristically committed or rolled back the transaction, so you want to erase the XID from the resource The resource administrator has already taken the correct action on the resource so you need take none, or the resource is down for an extended period
Select... Forget
Do nothing
Note: The Desired Action column lists the possible actions for each resource, based on the combination of the values for State and XID for the resource, and selects the most logical action by default. 6 Click Perform Action. Integration Server Administrator returns to the XA Manual Recovery screen and removes the transaction from the list of unresolved transactions. Integration Server might receive and display an error from a resource. Errors can occur for these reasons:
The resource was not connected to Integration Server, probably because the resource was down. The resource has no knowledge of the transaction, possibly because it lost the 2PC transaction information. The resource threw an exception. The transaction involved a webMethods adapter, and Integration Server cannot locate the resource because someone deleted or changed the adapter connection node that pointed to the resource from Software AG Designer or webMethods Developer.
You might have to force the transaction to a consistent state using the tools available on the resource itself.
514
32
Content Handlers
516 516 516
How the Server Chooses Content Handlers for HTTP Requests and Responses . . . . . . . . . . . Content Handler for an HTTP Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Content Handler for an HTTP Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
515
32 Content Handlers
How the Server Chooses Content Handlers for HTTP Requests and Responses
When a client submits an HTTP request, Integration Server uses a content handler to parse the contents of the request and pass them to the target service. Integration Server also uses a content handler when building the HTTP response.
516
32 Content Handlers
To control which content handler Integration Server will use when a wildcard is specified in the Accept header, you must use the watt.server.content.type.mappings configuration parameter. The syntax for this parameter is: watt.server.content.type.mappings=<wildcard1> <content-type1>,<wildcard2> <contenttype2>,<wildcardN> <content-typeN> For example, to associate text/* with text/xml and multipart/* with multipart/related, specify the parameter as follows: watt.server.content.type.mappings=text/* text/xml,multipart/* multipart/related The Accept header might contain multiple content types with parameters indicating an order of preference. Integration Server will attempt to respond with the "most preferred" content type as defined by RFC 2616, section 14. Integration Server supports the Accept header field in HTTP request headers if the watt.server.http.useAcceptHeader configuration parameter is set to true. The default setting for this parameter is true.
517
32 Content Handlers
518
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 1: Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 2: Basic Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 3: Setting Up Users, Groups, and ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 4: Publishing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 5: Installing Run-Time Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 6: Preparing Clients for Communication with the Server . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 7: Setting Up Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 8: Startup and Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stage 9: Archive Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
519
Introduction
This appendix contains a useful checklist for setting up your webMethods Integration Server. It describes the steps to perform to put an Integration Server into production. The process is comprised of several stages. You should complete one stage before advancing to the next.
Stage 1: Installation
Complete the following steps to install, run, and test the Integration Server. Step 1. Action Install the Integration Server. For instructions, see Installing webMethods Products. Note: You can install the Integration Server as either a Windows application or a Windows service. After installation, if you want, you can switch from a Windows application to a Window service, or vice versa. For instructions, see Running Integration Server as a Windows Application vs. a Windows Service on page 50. 2. Change default passwords. Use the Integration Server Administrator to assign new passwords to the following user accounts: The "Administrator" user account. The "Developer" user account. The "Central" user account. The "Replicator" user account. For instructions on how to change passwords, refer to Adding an Administrator User on page 70. Use the Integration Server Administrator to assign a new master password for the Integration Server to use when encrypting outbound passwords before storing them. For instructions on changing the master password, refer to Changing the Master Password on page 302. 3. Determine a strategy for outbound passwords and the master password. Done?
520
Step
Action Before you launch and configure your Integration Server the first time, determine how you want the Integration Server to handle the outbound passwords and master password with respect to where they are stored, how they are encrypted, and how often they must be changed. If you change these settings after the Integration Server has been configured, the master password and outbound passwords can become out of sync. See Securing Communications with the Server on page 235 for more information.
Done?
4.
Determine which JDK to use. Integration Server requires JRE 1.6 or 1.5. If you are using Integration Server with Software AG Designer or webMethods Developer, Integration Server requires JDK 1.5. Go to the Integration Server_directory\bin directory and open the startup.bat or startup.sh file in a text editor. Edit the JAVA_DIR parameter to point to the JRE or JDK installation directory, then save and close the file. If you are running Integration Server in 64-bit mode on a Solaris or HP-UX system, you must switch the JDK that was installed with Integration Server to use 64-bit mode instead of the default 32-bit mode. Go to the Integration Server_directory\bin directory and open the startup.sh file in a text editor. Locate the line #JAVA_D64=-d64 and uncomment it as follows: JAVA_D64=-d64. Then close and save the file.
5.
521
Step
Action If you installed Integration Server on an IBM i5 system, prevent memory problems by following the steps below. 1 Limit the size of the port queue available to the TCP/IP stack, as follows: a If you have not yet started Integration Server, start it now. Integration Server creates the server.cnf files when it starts for the first time. Shut down Integration Server. Go to the Integration Server_directory/config directory and open the server.cnf file in a text editor. Add this line:
watt.server.portQueue=511
Done?
b c
d 2
On IBM i5 systems, the JAVA_MIN_MEM setting acts as a garbage collection threshold. Prevent the JVM that Integration Server is using from running out of memory by doing the following: a b c d Go to the Integration Server_directory/bin directory and open the startup.sh file in a text editor. Locate the JAVA_MIN_MEM parameter and set it as follows:
JAVA_MIN_MEM=64M
Note: This setting is based on an IBM i5 system that hosts an Integration Server and a DB2 for iSeries database. The optimal value for initial heap size might be higher or lower based on your system's configuration.
522
Step
Action Use the Ports screen to specify the ports on which the server will listen for requests. Tip! If you will receive HTTP and/or HTTPS requests on multiple ports, you may want to disable all but one port (the one you will use to interact with the Integration Server Administrator) until the server is ready for production. For instructions on how to set up and disable ports, see Setting Up Aliases for Remote Integration Servers on page 93.
Done?
2.
Specify the proxy servers. Use the Proxy Servers screen to specify the proxy server(s) (if any) through which this server will issue outbound requests. Specify which URLs (if any) can bypass the proxy server. For instructions on how to specify proxy servers and bypass lists, see Setting Up Aliases for Remote Integration Servers on page 93.
3.
Configure session timeouts. Use the Resources screen to set the timeout value you want the server to use. For instructions, see Managing Server Sessions on page 88.
4.
Specify the error message recipients and an SMTP server. Use the Logging screen to specify the e-mail address where you want the server to send error messages when an exception (a critical server error or a binding failure) occurs and the name of the SMTP server to use for this purpose. For instructions, see Configuring Where the Integration Server Writes Logging, Status, and Other Information on page 102.
5.
Set up logging. For instructions, see the webMethods Audit Logging Guide and Setting Up the Server Log on page 149.
523
Step 1.
Action Identify service security requirements. Services are implicitly blocked from access by anyone other than Administrators and Developers. Determine what level of access is required, whether limited to one group of users, all authenticated users, or even unauthenticated users, and apply the appropriate ACL to the service.
Done?
2.
Create user IDs and groups or configure an external directory. If you have secure services, identify users and/or client applications that are authorized to access those services and create groups that contain the authorized members. If your site uses an external directory (LDAP or central user management), you can configure the server to access the user and group information from the external directory. For instructions for creating user IDs, see Adding User Accounts on page 68. For instruction for creating groups, see Adding Groups on page 77. For instructions for using an external directory, see Chapter 21, Configuring a Central User Directory or LDAP.
3.
Create ACLs. Create the ACLs needed to meet your services' security requirements and assign the groups you have created to these ACLs. For instructions, see Creating ACLs on page 269.
4.
Identify backup administrators. Select one or two users who can act as a backup administrator when the primary administrator is unavailable. Use the Users and Groups screen to add these users to the "Administrators" group. For instructions on how to grant a user administrator privileges, see Adding an Administrator User on page 70.
524
Step
Action Use one of the following methods to publish your services to the production server: Method 1. Use the Packages > Publishing screen to replicate the packages from the development server to the production server. For instructions, see Copying Packages from One Server to Another on page 388. Method 2. Use the Integration Server Administrator of the publishing server to create a zip file containing each package you want to publish; then: a b Copy the zip file to following directory on the target server: Integration Server_directory \replicate\inbound Use the Packages > Management screen to install each package.
Done?
2.
Configure the services on the server. Ensure that each service is enabled. Then, configure the following operating parameters for each: ACL assignment For instructions, see Assigning ACLs to Folders, Services, and Other Elements on page 272. Caching parameters For instructions, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide. Output Template Assignment For instructions, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide and the Dynamic Server Pages and Output Templates Developers Guide. XML binding For instructions, see Developing Integration Solutions: webMethods Developer Users Guide.
525
Step 1.
Action Install run-time classes. Obtain the zip or jar file from the vendor, and then copy the zip or jar file to a device or directory that your Integration Server can access.
Done?
2.
Update the classpath. Update the classpath statement in the setenv.sh or setenv.bat file so that it points to the directory in which you have installed the run-time classes.
2.
526
Done?
where: Server is the name of the Integration Server, and Port is the port on which it listens for HTTP requests. 3. 4. 5. 6. 7. Check user accounts. Verify that all user accounts have passwords as required. Check ACL assignments. Verify that all secure services have correct ACL assignments. Check proxy server settings. Verify that proxy server settings and bypass list are correct. Restrict access. Configure allow/deny lists to restrict inbound requests as necessary. Install and configure digital certificates.
527
Step
Action If you are deploying an SSL-enabled server, install the server's cert.der and privkey.der files in the following directory: Integration Server_directory \config\ Then, use the Certificates screen to configure X.509 features. For information about setting up the server to use SSL, see Securing Communications with the Server on page 235.
Done?
8.
Configure HTTP routing systems. If your server sits behind a routing, load-balancing, or URL-filtering system, consult with the administrator of that system to ensure that it will pass inbound requests to the Integration Server.
9.
Ensure security of operating system. The security of your Integration Server depends on the security of your operating system. Therefore, make sure your operating system is properly configured, that all security patches have been applied, and that unnecessary network services, such as telnet or mail, have been removed.
528
Step
Action Perform tests to ensure that user/client applications can access the server successfully. Note: During this test you may also want to verify that your current license will accommodate the expected concurrency demands on this server. Contact Software AG to increase number of licensed sessions if necessary.
Done?
4.
Go Live!
529
530
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.com. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.core. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.debug. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.debug2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.infradc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.net. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.pkg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.ssl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.tnextdc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.tx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . watt.wm.tnextdc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
531
Introduction
This appendix contains a description of the parameters you can specify in the server configuration file (server.cnf), which is located in the Integration Server_directory\config directory. Typically you will use the Settings > Extended screen from the Integration Server Administrator to update this file, but there might be times when you need to edit the file directly using a text editor. If you edit the file directly, you should first shut down the Integration Server before updating the file. After you make the changes, restart the server. The server uses default values for many of the parameters. If a parameter has a default, it is listed with the description of the parameter. Many of these parameters are set as you administer the webMethods Integration Server using the Integration Server Administrator.
watt.art
watt.art.page.size Specifies the maximum number of items to be displayed on an adapter's Connections screen, Listeners screen, and Notifications screen. The default is 10. For more information about controlling pagination, see the adapter documentation. watt.art.synchronousNotification.selectExecuteUser Specifies WmArt-based adapters that are to include a Run as User column in the Listener Notifications screen. With this column in place, you can assign a user to a notification. Then, when the listener notification invokes a service, it runs as the specified user. You can specify one or more adapters. If you specify multiple adapters, separate the names with semicolons (;), for example: watt.art.synchronousNotification.selectExecuteUser=WmMQAdapter;WmSAP
watt.com.
watt.com.wm.artextdc.configVersion This is an internal parameter. Do not modify. watt.com.wm.isextdc.configVersion This is an internal parameter. Do not modify. watt.com.wm.isextdc.monitored This is an internal parameter. Do not modify.
532
watt.config.
watt.config.systemProperties Specifies the list of additional system parameters whose name does not start with watt. Each additional system property is separated by a comma. By default, the property mail.imap.partialfetch is included as an additional system property with a default value set to true.
watt.core.
watt.core.schema.createSchema.omitXSDAny When generating the schema definition in a WSDL, indicates whether Integration Server omits the xsd:any element in the complex type definition that corresponds to an open document. A document variable is considered open when the Allow unspecified fields property is set to true. When watt.core.schema.createSchema.omitXSDAny is set to true, the xsd:any element is omitted from the schema portion of the WSDL document even if the document variable has the Allow unspecified fields property is set to true. When watt.core.schema.createSchema.omitXSDAny is set to false, Integration Server includes the xsd:any element in the complex type definition only if the corresponding document variable has the Allow unspecified fields property is set to true. The default for watt.core.schema.createSchema.omitXSDAny is true. watt.core.schema.generateAllTypeDocuments When generating an IS document type from an XML schema definition, indicates whether or not Integration Server generates IS document types for all complex types regardless of whether the types are referenced or not. When this property is set to true, Integration Server generates an IS document type for every complex type definition in the XML schema. When this property is set to false, Integration Server generates a separate IS document type for a complex type only if the complex type is referenced or is derived from a referenced complex type. The default is false. Note: This parameter is obsolete. watt.core.schema.generateSubstitutionGroups When generating an IS document type from an XML schema definition that contains a substitution group, indicates whether the resulting document type contains an optional element for each member of a substitution group. When this property is set to false, the resulting document type contains a field that corresponds to the head element in the substitution group, but does not contain any elements for members of the substitution group. When this property is set to true, the resulting document type contains a field that corresponds to the head element and fields that correspond to each member element of the substitution group. All the fields, including the head element, are marked as optional elements. The default is false.
533
watt.core.template.enableFilterHTML Indicates whether Integration Server HTML encodes the output from a %value Variable% tag in a DSP or output template. When this property is set to true, the value of %value Variable% tags, including XML and JavaScript, is HTML encoded. Having Integration Server HTML encode the values helps prevent cross site scripting attacks. When this property is true, you can still indicate that you do not want Integration Server to HTML encode the output of a %value Variable% tag by including the encode(none) option (%value Variable encode(none)%). When this property is set to false, the values of %value Variable% tags are not encoded, and, as a result, DSP pages or pages resulting from output templates might be vulnerable to cross site scripting attacks. The default is true. watt.core.template.enableSecureUrlRedirection For DSP pages, this parameter controls whether Integration Server performs secure URL redirection. Internal DSP pages commonly use the variable names url and returnurl with the %value% tag to indicate to Integration Server that URL redirection can occur in the client. As a result, whether a DSP page is an internal DSP page or a custom DSP page, when Integration Server encounters the variable name url or returnurl for a %value% tag, it assumes that the value is meant for URL redirection. When the watt.core.template.enableSecureUrlRedirection parameter is set to true, Integration Server uses secure URL redirection. When performing secure URL redirection, if the %value% tag uses the variable name url or returnurl, Integration Server checks the URL to determine whether it is a relative path to a location within Integration Server (e.g., ..\redirectedurl.dsp) or another value. If it is a relative path, Integration Server considers a redirection to the URL to be safe, and as a result, takes no action. However, for other values, Integration Server assumes the URL to be an external URL (e.g., http://example.com) and alters the output, even if the intent of the %value% tag is not to redirect to the URL. Integration Server alters the URL so that if an attempt is made to redirect to the external URL, the redirection goes to an error page. Integration Server alters the URL by prepending the value error.dsp?data= to the output of the %value% tag (e.g., error.dsp?data=http://example.com). Setting this parameter to false disables secure URL redirection and, as a result, might put your applications at risk. You should use the variable url or returnurl with the %value% tag only when you want to redirect to an internal URL. If you have existing applications that use the variable name url or returnurl, Software AG recommends that you update your applications and do not use these variable names except for internal URL redirection. If you do not want to change the variable names in existing applications, you can set watt.core.template.enableSecureUrlRedirection parameter to false. The default setting for the watt.core.template.enableSecureUrlRedirection parameter is true. watt.core.schema.validateIncomingXSDUsingXerces This is an internal property. Do not modify. watt.core.schema.validateIncomingXSD This is an internal property. Do not modify.
534
watt.core.validation.multipleroot Specifies whether the pub.schema:validate service is to validate multiple roots when processing multi-part documents. When this property is set to true, the pub.schema:validate service checks for multiple root nodes. If multiple root nodes are found, the service flags a validation error. When this property is set to false, the pub.schema:validate service does not perform multiple root validations. The default is true. watt.core.validation.skipMandatoryFields Specifies whether Integration Server generates errors during document validation if mandatory fields are missing from the document. When watt.core.validation.skipMandatoryFields is set to true, Integration Server does not generate validation errors during document validation even if required fields are missing from the document. When this parameter is set to false, Integration Server generates validation errors if required fields are missing from the document. The default is false. This parameter affects document validation performed by the pub.schema:validate service and SOAP request and SOAP response validation.
watt.debug.
watt.debug.layout Specifies the format of messages written to the server's log file and to the Logs > Server screen. You can specify one of the following formats: new Messages will be in the following format: (Component) [ComponentID.00SubComponentID.SubComponentID.MessageKey] TimeStamp MessageType MessageText (IS.SERVER) [ISS.0025.25.6] 2007-07-31 10:45:27 EDT INFO: License Manager started legacy This format corresponds to the message format used in Integration Server prior to version 7.1. Use this format if you need to maintain backward compatibility with the previous message format. For example, you might have written code to process messages written to the server log. When you select legacy as the message layout, messages will appear in the following format: TimeStamp [ComponentID.00SubComponentID.MessageKeyMessageType] MessageText 2007-07-31 10:39:59 EDT [ISS.0025.0006I] License Manager started This is the default. watt.debug.level Sets level of debugging information written to the server's log file and the Logs > Server screen. The default is Info.
535
To display... No messages. Fatal messages only. Error and fatal messages. Warning, error, and fatal messages. Informational, warning, error, and fatal messages. This is the default. Debug, informational, warning, error, and fatal messages. Trace, debug, informational, warning, error, and fatal messages.
Note: You can also set the value of the watt.debug.level property by setting the logging level for the Default facility on the Settings > Logging > View Server Logger Details screen. For more information about configuring logging, see Specifying Amount and Type of Information to Include in the Server Log on page 151. Prior to Integration Server 7.1, Integration Server used a number-based system to set the level of debug information written to the server log. Integration Server maintains backward compatibility with this system. The table below describes the number-based system. Specify... 0 1 2 3, 4 5, 6, 7 8, 9, 10 To record... Critical messages only. Error and critical messages. Warning, error, and critical messages. Informational, warning, error, and critical messages. Debug, informational, warning, error, and critical messages. This is the default. Trace, debug, informational, warning, error, and critical messages. The server records more levels of informational messages the higher you set the number. watt.debug.logfile Specifies the fully qualified path to the directory that contains the server log file. The default is the Integration Server_directory\logs directory. For complete information, see Changing the Default Server Log Location on page 154.
536
watt.debug2.
watt.debug2.facList Specifies a comma-delimited list of enabled facilities for which the server logs information. The facilities are numbered. The default is 999, which indicates the server is to log information for all facilities. Specify 1000 to prohibit the server from logging information for any service. To view the names of facilities, use the Log Settings screen of the Integration Server Administrator to enable and disable facilities for which you want the server to log information watt.debug2.logstringfile Specifies the name (without the extension .txt) for the dictionary file that contains error codes and facilities. The default is lib\logstr (English Version).
watt.infradc.
watt.infradc.artmonitor This is an internal parameter. Do not modify. watt.infradc.artpollinterval This is an internal parameter. Do not modify.
watt.net.
watt.net.defaultBufferSize Specifies the maximum content length of an HTTP request that the WmTomcat package will process. If a requests content length exceeds the size configured with watt.net.defaultBufferSize, the WmTomcat package does not process the request and issues an error message. Specify the maximum number of bytes that you want the WmTomcat package to accept. The default is 8096 bytes. Do not set this parameter to an excessively high value because for every HTTP request, the WmTomcat package creates an array of the watt.net.defaultBufferSize in memory. watt.net.clientDataConnTimeout Controls how long (in seconds) a client keep alive connection can remain idle before Integration Server closes it. The default is 180 seconds (3 minutes). watt.net.clientKeepAliveTimeout Controls how long (in seconds) a client keep alive connection can remain idle before Integration Server closes it. The default is 180 seconds (3 minutes).
537
watt.net.email.validateHost Controls whether the Integration Server enforces IP access restrictions for e-mail listeners. When defining an e-mail port, you can define IP access restrictions that specify the hosts that are allowed or denied access via the e-mail port. Set this property to true if you want server to enforce the IP access restrictions for e-mail listeners or false if you do not. The default is true. watt.net.ftp.ignoreErrors Specifies, using a comma-separated list, any FTP command error codes that you want the FTP client to ignore. For example, setting the property to "501, 505" causes the FTP client to ignore error codes 501 and 505. watt.net.ftpClientTimeout Specifies the length of time, measured in seconds, an FTP session can be idle before it is removed from memory. The default is 600 seconds (10 minutes). watt.net.ftpClientDataConnTimeout Specifies the number of milliseconds that a built-in FTP service executing in active mode (as specified by the transfertype input parameter) waits for a remote FTP server to connect to it. If the connection is not established in the specified amount of time, an exception is thrown. The default value is 30000 milliseconds (30 seconds). watt.net.ftpConnTimeout Specifies the maximum number of milliseconds the FTP listener allows the connection with the client to remain inactive. The default is 15 minutes. watt.net.ftpDataConnTimeout Specifies the maximum number of milliseconds the FTP listener waits between successive reads when performing a file upload. The default is 60000 milliseconds (60 seconds). watt.net.ftpPassiveLocalAddr Specifies the address that should be sent by the PORT command. A host name or IP address can be specified. When running in passive mode, the FTP port sends a PORT command to the FTP client. The PORT command specifies the address and port to which the client should connect to create a data connection. If the FTP port is behind a NAT server, however, the address of the host on which the Integration Server runs is not visible to the FTP client. Consequently the PORT command does not contain the information the client needs to connect to the server. To remedy this situation, you can specify a value for the watt.net.ftpPassiveLocalAddr property. Alternatively, when you configure an FTP port (see Adding an FTP Port on page 126), you can use the Passive Mode Listen Address field to specify the passive mode address for an individual FTP port. That way, you can specify a different passive mode address for each FTP port. If an address is specified in the Passive Mode Listen Address field and in the watt.net.ftpPassiveLocalAddr property, the PORT command uses the value specified in the watt.net.ftpPassiveLocalAddr property.
538
watt.net.ftpPassivePort.min Specifies the minimum port number of a port range for FTP/FTPS listeners to use with a client data connection that uses passive transfer mode (PASV). Must be used with watt.ftpPassivePort.max. When a port range is specified with these properties, only the ports within the specified minimum and maximum port range (inclusive) are used as the listening ports for incoming FTP/FTPS client data connections. This enables a firewall administrator to open only the specified ports. Operational considerations: If both properties are not present or undefined, FTP/FTPS listeners continue the previous behavior of listening on any free port. If the value specified for watt.net.ftpPassivePort.min is less than 1, a default value of 1 is used. If the value specified for watt.net.ftpPassivePort.max is greater than 65534, a default value of 65534 is used. When both of these conditions exist simultaneously, FTP/FTPS listeners continue the previous behavior of listening on any free port. An error message is returned to the FTP/FTPS client on the command channel when the specified values do not fall within the expected range. For example, if one of the properties is not defined, if the watt.net.ftpPassivePort.min value is larger than the watt.net.ftpPassivePort.max value, or if one of the properties is not a valid number. An error message is also returned when all the ports in the specified port range are in use. Specific details of the error messages are available in the serverYYYYMMDD.log file. Restarting the Integration Server is not required after defining these settings. You can modify the port range properties in the Integration Server Administrator at any time. watt.net.ftpPassivePort.max Specifies the maximum port number of a port range for FTP/FTPS listeners to use with a client data connection that uses passive transfer mode (PASV). Must be used with watt.ftpPassivePort.min. For usage information, see watt.ftpPassivePort.min. watt.net.ftpSweepInterval Specifies the frequency, measured in seconds, at which an FTP sweeper executes. The FTP sweeper iterates through the FTP sessions in memory and removes the sessions that have exceeded their allotted idle timeout. By default, the FTP sweeper executes every 600 seconds (10 minutes). watt.net.ftpUseCertMap Specifies whether the Integration Server will honor certificate maps for requests received by FTPS ports. When this property is set to false (the default), the Integration Server ignores the user specified on a client certificate and logs the user in with the information provided on the userid/password prompt instead. When this property is set to true, if the client certificate has been previously mapped to an Integration Server user, the Integration Server will log the user in as the userid specified in the client certificate. The Integration Server ignores the userid provided on the userid/password prompt.
539
For example, suppose watt.net.ftpUseCertMap is set to false, and a certificate has been previously mapped to user Alice. When a user provides a certificate for user Alice and enters Alice's user name and password in response to the prompt, the Integration Server will log the user in as Alice. However, if the user provides the same certificate, but provides Bob's user name and password in response to the prompt, the Integration Server will log the user in as Bob. In other words, the Integration Server ignores the certificate map. Note: The None, Request Certificate, and Require Certificate client authentication settings on the FTPS Listener Configuration screen control whether the Integration Server asks for a certificate and how the Integration Server behaves when it does not receive one. The watt.net.ftpUseCertMap property controls how the Integration Server behaves when it does receive a certificate from an FTP client. For more information about client authentication at FTPS and HTTPS ports, see Client Certificates on page 278. For more information about certificate mapping, see Importing a Certificate (Client or CA Signing Certificate) and Mapping It to a User on page 280. watt.net.httpSize Sets the default chunk size when sending a HTTP request or response using TransferEncoding:Chunked. The default chunk size is 8192 bytes. The minimum chunk size is 500 bytes. watt.net.maxClientKeepaliveConns Sets the default number of client keep alive connections to retain for a given target endpoint. If not specified, five keep alive connections are retained. watt.net.maxRedirects Specifies the maximum number of HTTP redirects to allow before throwing an I/O exception. The default is 5. watt.net.overrideSystemProxyselector Specifies whether the proxy selector of Integration Server will override the default JVM system proxy selector when a Java service tries to connect to a remote server. When this property is set to true, all network connections will honor the proxy aliases configured using Integration Server Administrator. When this property is set to false, the default JVM system proxy selector will be used. The default is false. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. watt.net.proxySkipList Specifies a comma-separated list of domain names for which the Integration Server should not use proxy servers. The default is localhost. watt.net.retries Specifies the number of times to retry a server that times out. This can be overridden by the client. The default is 0. watt.net.secureProxyPass Specifies the password to use for authentication with the HTTPS proxy host. There is no default.
540
watt.net.ssl.client.cipherSuiteList Specifies a list of CipherSuites for outbound SSL connections. When the default value is set to default, Integration Server uses its default list of cipher suites. If you want to specify non-default cipher suites, enter a comma-separated list of CipherSuite names. If the property watt.net.ssl.client.strongcipheronly is set to true, and if there are any nonstrong CipherSuites in the list specified, those will be ignored, and a warning message will be logged. watt.net.ssl.client.hostnameverification When Integration Server is acting as an HTTPS client, this parameter specifies whether Integration Server should restrict outbound HTTPS connections only when a valid hostname is found in the server's certificate. When set to true, Integration Server verifies if the hostname is present in the server's certificate. If this verification fails, an error is logged and the connection is aborted. When set to false, Integration Server will bypass the hostname verification. The default is set to false. When set to log, Integration Server logs the debug message in the server log if the hostname verification fails, but allows the connection to go through. If the hostname verification succeeds, no log is generated. The default is false. watt.net.ssl.client.strongcipheronly Specifies whether the Integration Server is to restrict outbound HTTPS connections to use strong cipher suites only (128 bit session keys or higher). If you specify false (the default), when the Integration Server initiates a connection to another server, it will attempt to negotiate a strong cipher suite, and if unsuccessful will fall back to using a weak (64, 56, or 40 bit) cipher suite. If you specify true, when the Integration Server initiates a connection to another server, it will attempt to negotiate a strong cipher suite, and if unsuccessful will disconnect rather than use a weak cipher suite. watt.net.ssl.server.cipherSuiteList Specifies a list of CipherSuites for inbound SSL connections. When the default value is set to default, Integration Server uses its default list of cipher suites. If you want to specify non-default cipher suites, enter a comma-separated list of CipherSuite names. If the property watt.net.ssl.server.strongcipheronly is set to true, and if there are any nonstrong CipherSuites in the list, those will be ignored and a warning message will be logged. watt.net.ssl.server.clientHandshakeTimeout Specifies the number of milliseconds the server waits for a response from the client during an SSL handshake before timing out. The default is 20000 milliseconds. watt.net.ssl.server.strongcipheronly Specifies whether the Integration Server is to restrict inbound HTTPS connections to use strong cipher suites only (128 bit session keys or higher). If you specify false (the default), when a client connects to the Integration Server, the server will attempt to negotiate a strong cipher suite, and if unsuccessful will fall back to using a weak (64, 56,
541
or 40 bit) cipher suite. If you specify true, when a client connects to the Integration Server, the server will attempt to negotiate a strong cipher suite, and if unsuccessful will disconnect rather than use a weak cipher suite. watt.net.timeout Specifies the number of seconds the server waits for an HTTP request to be fulfilled before the request times out. The default is 0. watt.net.useCookies Specifies whether Integration Server accepts or denies cookies when communicating with Web server. Set to true to accept cookies; set to false (or null) to deny cookies. The default is true. watt.net.userAgent Specifies the value the server uses in the HTTP User Agent request header when it requests a Web document from a Web server. The default is Mozilla/4.0 [en] (WinNT; I). watt.net.webapp.cookies.useRelevantPath Specifies how WmTomcat can create fewer cookies to prevent the web application from logging out because of exceeding the browser cookie limit. When this property is set to true, WmTomcat returns cookies that contain the URI prefix in the pathname, and more cookies are created. By default, WmTomcat returns cookies that contain a URI prefix in the pathname. As a result, WmTomcat creates a separate cookie for each unique path. For applications that include pages across many different paths, the result can be many cookies. If the application exceeds the cookie limit of the browser that invoked it, the application is forced to log out. But when this property is set to false (the default), WmTomcat does not include the URI prefix in the cookie, and fewer cookies are created. For example, when watt.net.webapp.cookies.useRelevantPath is set to false, and you visit the WmTomcat sites site/a.jsp -> site/bar/b.jsp -> site/bar/baz/c.jsp, WmTomcat creates just one cookie: cookie 1) name=ssnid, path=/. But when this property is set to true, WmTomcat creates the following cookies:
cookie 1) name=ssnid, path=/site/ cookie 2) name=ssnid, path=/site/bar/ cookie 3) name=ssnid, path=/site/bar/baz
watt.pkg
watt.pkg.art.pollingnotification.scheduler Specifies whether Integration Server executes adapter polling notifications using scheduled tasks or the shared cache. When this parameter is set to false (the default), Integration Server uses the shared cache to execute polling notifications. When this parameter is set to true, Integration Server uses scheduled tasks for the execution, scheduling, and cluster coordination of adapter polling notifications. When a notification
542
is enabled, Integration Server creates a scheduled task that polls the backend resource at a specified interval. When a notification is disabled, Integration Server deletes the scheduled task. When this Integration Server parameter is set to true, you must also: Set the watt.pkg.art.pollingnotification.scheduler.adapters parameter to specify the adapters that will use the scheduled task functionality. Decide whether to display the scheduled tasks for adapter polling notifications in the Integration Server Administrator screen, by setting the watt.server.scheduler.notificationtask.display parameter. For complete information about configuring adapter polling notifications, see the adapter's documentation. watt.pkg.art.pollingnotification.scheduler.adapters Specifies package names of adapters whose polling notifications are to execute using Integration Server scheduled tasks. To specify multiple package names, separate each entry with a semicolon (;). For example, to have polling notifications for webMethods JDBC Adapter and webMethods Oracle Applications Adapter execute as scheduled tasks, specify the following:
watt.pkg.art.pollingnotification.scheduler.adapters=WmJDBCAdapter;WmOAAdapter
This parameter has no effect unless the watt.pkg.art.pollingnotification.scheduler parameter is set to true. For complete information about configuring adapter polling notifications, see the adapter's documentation.
watt.security.
watt.security.cert.wmChainVerifier.enforceExtensionsChecks Specifies whether Integration Server is to validate (true) or not validate (false) certificate extensions, if any, when the server performs certificate verification. The default is false. watt.security.cert.wmChainVerifier.trustByDefault In cases where no directory or a directory containing no certificates is specified for the Trusted Certificates directory, specifies whether the server is to trust: Certificates presented by peer servers (in response to this server's outbound request) S/MIME signatures Specifies whether the server is to trust (true) or not trust (false) certificates and S/MIME signatures in this situation. The default is true. For improved security, Software AG recommends that you set this parameter to false and specify a Trusted Certificates directory. watt.security.decrypt.keyAlias Specifies the alias of the default private key Integration Server uses for decryption.
543
watt.security.decrypt.keyStoreAlias Specifies the alias of the keystore containing the default private key Integration Server uses for decryption. watt.security.fips.mode Specifies whether the server is to support FIPS (Federal Information Processing Standards). The default is false. If this parameter is set to true, the server initializes FIPS as part of server startup. If FIPS initialization fails, the error is logged to server.log and the server shuts down. watt.security.keyStoreTypes Specifies the keystore types supported by Integration Server. Each supported type is separated by a comma. The default values are JKS and PKCS12. To specify additional keystore types for Integration Server, you need to do the following: 1 2 Add the new keystore type to the list of values for this property. Add the keystore provider, using one of the following methods: a b Using the "Add Security Provider" link in Integration Server Administrator. Modifying the "java.security" file of the JVM (you must use this method for a PKCS11-type keystore). Note: Software AG does not guarantee the behavior of additional keystore types, and does not provide support for them. watt.security.ope.AllowInternalPasswordAccess Specifies whether the built-in services supporting OPE (outbound password encryption) for flow services may access the Integration Server's internal passwords. If this parameter is set to true, the OPE services may access the internal passwords. If it is set to false, the OPE services are not allowed access to the internal passwords. By default, this parameter is set to false. Internal passwords are passwords for use by the Integration Server itself to access secure resources (e.g., remote Integration Servers, JDBC connection pools, LDAP servers, etc.). Internal passwords are managed using the Integration Server Administrator and are stored in the outbound password store. Flow services are also allowed to store passwords in the outbound password store. However, by default, passwords stored by a flow service are considered public, as opposed to internal. This distinction allows flow services to use the outbound password store as a secure mechanism for storing and retrieving passwords, but protects the Integration Server's internal passwords. You can allow flow services to access internal passwords (i.e., store, retrieve, and modify) by setting watt.security.ope.AllowInternalPasswordAccess to true. However, this should be done only if you explicitly wish to have a flow service work with internal passwords. Otherwise, it is recommended you deny access to internal passwords by setting watt.security.ope.AllowInternalPasswordAccess to false.
544
watt.security.pki.jnditimeout Specifies how long (in milliseconds) the Integration Server attempts to connect to the LDAP directory when executing services in the pub.pki.smime folder. The default is 20000 milliseconds (i.e., 20 seconds). watt.security.sign.keyAlias Specifies the alias of the default private key Integration Server uses to digitally sign documents. watt.security.sign.keyStoreAlias Specifies the alias of the keystore containing the default private key Integration Server uses to digitally sign documents. watt.security.ssl.cacheClientSessions Controls whether the server reuses previous SSL session information (e.g., client certificates) for connections to the same client. If you have a stable environment where repeated authentications from the same client produce the same result, set this property to true. When this property is set to true, the server caches and reuses SSL session information. If your environment is not stable (e.g., client certificates change frequently), set this property to false. Note that setting the property to false will decrease performance. The default is false. watt.security.ssl.ignoreExpiredChains Specifies whether the Integration Server ignores expired CA certificates in a certificate chain it receives from an Internet resource (i.e., a Web server, another Integration Server). To have the Integration Server ignore expired CA certificates and allow SSL connections when a certificate is expired, set the watt.security.ssl.ignoreExpiredChains setting to true. Note that this is less secure than denying connections when a certificate is expired. The default is false. For more information about this setting, see Integration Server as an SSL Server on page 237. watt.security.ssl.keyAlias Specifies the alias of the Integration Server default SSL private key. watt.security.ssl.keypurposeverification When Integration Server is acting as an HTTPS client, this parameter specifies whether the server should restrict outbound HTTPS connections only when a valid Extended Key Purpose field is present in the server's certificate. The content of the Key Purpose field, id-kp-serverAuth, should be in the IETF-mandated format, TLS WWW server authentication for the verification to pass. Refer to the section titled Extended Key Usage, in the document http://www.ietf.org/rfc/rfc3280.txt for more information regarding this format. Three values are allowed for this watt property - true, false and log. When set to true, it will verify the presence of the key purpose field in the server's certificate. If the key purpose verification fails, an error is logged and the connection is aborted. If the verification succeeds, no error is logged. When set to false, it will bypass the verification of the key purpose field. The default is false.
545
When set to log, it will log a debug message in the server log if the key purpose field verification fails.watt.security.ssl.keyStoreAlias Specifies the alias of the Integration Server default SSL keystore. watt.security.ssl.keyStoreAlias Specifies the alias of the Integration Server default SSL keystore. watt.security.trustStoreAlias Specifies the alias for the truststore that Integration Server uses as the default truststore. When Integration Server is acting as a server, it uses the default truststore to verify the trust relation when no truststore is provided. For example, Integration Server uses the default truststore when no truststore is provided for HTTPS/FTPS ports or for Web service security when there is no truststore at the provider Web service endpoints alias. When Integration Server is acting as a client, most of the components in Integration Serverr (for example, HTTPS, FTPS, remote server alias) always use the default truststore to verity the trust relation with the server. However, for Web service security, Integration Server only uses the default truststore when the user does not provide a truststore in the consumer endpoint alias. watt.security.trustStoreTypes Specifies the truststore types supported by Integration Server. Each supported type is separated by a comma. The default value is JKS. To specify additional truststore types for Integration Server, you need to do the following: 1 2 Add the new truststore type to the list of values for this property. Add the truststore provider, using one of the following methods: a b Using the "Add Security Provider" link in Integration Server Administrator. Modifying the "java.security" file of the JVM. Note: Software AG does not guarantee the behavior of additional truststore types, and does not provide support for them.
watt.server.
watt.server This is an internal parameter. Do not modify. watt.server.acl.groupScanInterval Specifies how often, in milliseconds, Integration Server checks for the availability of the My webMethods Server database, if the database is unavailable at Integration Server startup. While the database is unavailable, group information about users that are managed by Central User Management is unavailable. As a result, users in those groups do not have the access rights granted by their associated ACLs. While the My webMethods Server database is unavailable, the Security > Access Control List screen
546
displays the affected groups with the suffix @--@, for example FinanceGroup@--@. When the My webMethods Server database becomes available, the groups regain their access rights and Integration Server removes the @--@ suffix. The default setting is 10,000 milliseconds (10 seconds). watt.server.allowDirective Restricts the use of specified directives to specified ports. For information on directives, see Controlling the Use of Directives on page 262). The syntax for this property is: port-string is a comma-delimited list of port numbers such as "5555,6666". Suppose you want to allow all ports to use the default directive, but you want specific ports to use the other directives, as described below: Restrict use of the invoke directive to ports 5555 and 7777 Restrict use of the web directive to ports 6666 and 7777 Restrict use of the SOAP directive to port 7777 To obtain the behavior described above, you would specify the following:
watt.server.allowDirective=invoke,5555,7777,web,6666,7777,soap,7777
watt.server.audit.displayLogs.convertTime Specifies how dates are displayed when you view the service, error, session, guaranteed delivery, and security logs from the Integration Server Administrator. When this property is set to false, time stamps are shown as GMT/UTC. When this property is set to true (the default), time stamps are shown in the local time zone of the Integration Server, and in the format specified by watt.server.dateStampFmt. watt.server.auditDocIdField Specifies a custom document ID value to identify documents in a standard way and to provide uniform business context in the logging display. Some documents are logged by webMethods Broker through WmLogUtil to the document database, and some are logged by various components within the Integration Server, for example, if a service fails, or if the number of retries in a trigger are exceeded. As a result, when viewing the Document Monitor, some documents are logged with a numeric document ID, and some are logged with lengthy hexadecimal strings as the document ID. The custom document ID value that you specify will be used to create the document logging ID. This value is used in place of the BrokerEvent.getEventId() value (the original document ID behavior). The value must be in the form of a Broker unicode string, and values in excess of 128 characters will be truncated. If this extended setting is missing, the original document ID behavior applies. If this extended setting is present but undefined (null), the _env.uuid value is used if present; if no _env.uuid value is defined, the original document ID behavior applies. For more information about document logging, see Administering webMethods Broker. watt.server.broker.producer.multiclient Specifies the number of sessions for the default client. The default client is the Broker client that the Integration Server uses to publish documents to the Broker and to retrieve documents delivered to the default client. When you set this parameter to a value greater than 1, the Integration Server creates a new multi-session, shared state Broker client named clientPrefix_DefaultClient_MultiPub, to use for publishing documents to the
547
Broker. Using a publishing client with multiple sessions can lead to increased performance because it allows multiple threads to publish documents concurrently. The default is 1 session. watt.server.broker.replyConsumer.fetchSize Specifies the number of reply documents that the Integration Server retrieves from the Broker at one time. Increasing the reply documents the Integration Server retrieves for each call can reduce the number of calls the Integration Server makes to the Broker. The Integration Server maintains all reply documents in memory. You can reduce the amount of memory used for reply documents by decreasing the number of documents the Integration Server retrieves at one time. The default is 5 documents. watt.server.broker.replyConsumer.multiclient Specifies the number of sessions for the request/reply client. The request/reply client is the Broker client that the Integration Server uses to send request documents to the Broker and to retrieve reply documents from the Broker. Increasing the number of sessions for the request/reply client can lead to improved performance because it allows multiple requests and replies to be sent and retrieved concurrently. The default is 1 session. watt.server.broker.replyConsumer.sweeperInterval Specifies how often (in milliseconds) the Integration Server sweeps its internal mailbox to remove expired replies to published requests. The length of the interval should balance the amount of memory consumed by expired replies with retrieving the replies for waiting requests. The Integration Server uses one background thread to age and remove expired replies and uses multiple background threads to retrieve replies for waiting requests. When the sweeper thread removes expired replies, it blocks the threads attempting to retrieve replies. When then sweeper interval is too low, the frequent execution of the sweeper thread can degrade performance because other background threads cannot retrieve replies as often. A sweeper interval that is too high can cause an increase in memory usage because expired replies consume memory for a longer period of time. The default is 30000 milliseconds (30 seconds). watt.server.brokerTransport.dur Specifies the number of seconds of idle time that the Broker waits before sending a keepalive message to Integration Server. If Integration Server does not respond within the amount of time specified by the watt.server.brokerTransport.max property, the Broker sends another keep-alive message to Integration Server. If Integration Server continues to be unresponsive, the Broker continues sending keep-alive messages until it reaches the retry limit specified by the watt.server.brokerTransport.ret property. If the Integration Server still has not responded to the keep-alive message, the Broker explicitly disconnects the Integration Server. The watt.server.brokerTransport.dur value must be an integer greater than or equal to zero but less than 2147483647. The default is 60 seconds. For more information about using server parameters to configure the keep-alive setting with the Broker, see Specifying the Keep-Alive Mode for the Broker Connection. watt.server.brokerTransport.max Specifies the number of seconds that the Broker waits for the Integration Server to respond to a keep-alive message. This value must be an integer between 0 and 2147483647. The default is 60 seconds.
548
For more information about using server parameters to configure the keep-alive setting with the Broker, see Specifying the Keep-Alive Mode for the Broker Connection. watt.server.brokerTransport.ret Specifies the number of times the Broker re-sends keep-alive messages before disconnecting an un-responsive Integration Server. This value must be an integer between 1 and 2147483647. The default is 3 retries. watt.server.cache.flushMins Specifies how often (in minutes) the server sweeps the cache to remove expired cache entries and to prefetch cache service entries. The default is 10 minutes. watt.server.cache.gcMins Specifies how often (in minutes) the server sweeps the cache to perform garbage collection. The default is 60 minutes. watt.server.cache.isPersistent Specifies whether you want server cache to be persistent (true) or not (false). The default is true. watt.server.checkAclsInternally Specifies whether Integration Server performs ACL checking when a service is directly invoked by a client or trigger and when it is invoked from other services. When set to true, Integration Server always checks the Execute ACL for a service, regardless of the value of the Enforce Execute ACL property for the service. When set to false, the value of the Enforce Execute ACL property determines whether or not Integration Server performs ACL checking when a service executes. The default is false. watt.server.classloader.pkgpriority Specifies the order in which Integration Server scans packages when loading a class file for which no package information is available. When no order is specified, Integration Server attempts to load the class by scanning all packages in the Packages directory, one by one. This could delay class loading. For example, when a trigger contains a reference to a Java class, the trigger does not have any package information. Integration Server scans all the packages for the specific class file in random order. Specifying the packages that Integration Server should scan first may reduce the time needed for class loading. Use the watt.server.classloader.pkgpriority property to specify a comma delimited list of the packages whose class loader should load first. The syntax for this property is:
watt.server.classloader.pkgpriority=packageName, packageName
For more information about class loading, refer to How the Server Loads Java Classes on page 35. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. watt.server.clientTimeout Specifies the amount of time (in minutes) after which an idle user session times out. The default is 10.
549
watt.server.cluster.aliasList Specifies a comma-delimited list of aliases for remote Integration Servers in a cluster. The Integration Server uses this list when executing the remote invokes that update the other cluster nodes with trigger management changes. When this property is configured, the Settings > Messaging > Broker/Local Trigger Management > Cluster View page will be visible and the Apply Change Across Cluster check box will be available when performing trigger management tasks. You must be using webMethods clustering to use this setting. For more information, see the webMethods Integration Server Clustering Guide. watt.server.cluster.aware Specifies whether you want the server to participate in a cluster. The default is false. You must be using webMethods Integration Server Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.cacheName Specifies the name of the cluster to join. An enterprise can have more than one cluster. This value allows the caching software to form separate caches for each cluster. Without a cluster name, all Integration Servers that are visible to one another on the network would form a single cache. watt.server.cluster.purgeSessions Specifies how often, in minutes, Integration Server removes expired sessions from the cluster session store. The default is 5. You must restart Integration Server for changes to this parameter to take effect. watt.server.cluster.sessTimeout Specifies number of minutes that the server allows inactive session objects to remain in the cluster store before removing them. The default is 60. You must be using webMethods Integration Server Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.coder.bincoder.trycontextloaderfirst Specifies whether Integration Server uses the context loader before using the class loader for the currently executing thread when Integration Server encodes or decodes a pipeline. If a referenced class belongs to a particular package, it may be faster to use the context loader first. The default is false. watt.server.compile Specifies the compiler command that Integration Server uses to compile Java services that are developed using Designer or Developer. This compiler command is also used from the jcode utility. By default, the server uses javac -classpath {0} -d {1} {2}. For more information about specifying the compiler and JDK the Integration Server is to use, see Installing webMethods Products.
550
watt.server.compile.unicode Specifies the compiler command the Integration Server uses to compile Java services that are stored in Unicode encoding. This compiler command is also used from the jcode utility. By default, the server uses javac -encoding Unicode -classpath {0} -d {1} {2}. This setting works with the Sun JDK compiler. For more information about specifying the compiler and JDK the Integration Server is to use, see Installing webMethods Products. watt.server.content.type.mappings Maps wildcards found in the Accept header field of an HTTP client request to specific content types. The Accept header field specifies which content type or types the client will accept in a response. Integration Server selects an outbound content handler based on the allowed content type. The syntax for this parameter is: watt.server.content.type.mappings=<wildcard> <content-type>,<wildcard> <contenttype>,<wildcard> <content-type> ... Where: wildcard is a wildcarded content type, such as text/* content-type is the specific content type to use Use a space to separate the wildcarded content type from the specific content type. Use a comma to separate <wildcard> <content-type> pairs from other pairs. Consider the following examples: To associate text/* with text/xml, specify:
watt.server.content.type.mappings=text/* text/xml
Integration Server parses the Accept header and attempts to select a content type or types as defined in RFC 2616, section 14. The default setting is text/* text/xml. If this parameter is not specified, and an Accept header field specifies a wildcard, Integration Server selects a content handler based on the major content type specified, as shown below. This Accept Header field ... text/* application/* multipart/* Results in this content handler XML CGI Multipart
The watt.server.http.useAcceptHeader property must be set to true for the watt.server.content.type.mappings parameter to work. For more information about content handlers, refer to Content Handlers on page 515.
551
watt.server.control.controlledDeliverToTriggers.delayIncrementInterval Specifies the interval used in conjunction with watt.server.control.controlledDeliverToTrigger.delays to determine the delay that Integration Server applies to services publishing documents locally when the trigger document store reaches 90% of its capacity. The default is 2000. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. For more information about controlling the delay for local publishing, see Controlling Local Publishing on page 487. watt.server.control.controlledDeliverToTriggers.delays Specifies a comma-separated list of values specifying the number of milliseconds that Integration Server delays services publishing local documents when the trigger document store is greater than or equal to 90% of its capacity. Integration Server changes the delay based on how long the trigger document store has continuously been at 90% or higher capacity. The default value is 500,2000,3000,3500,4000,4500,5000. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. For more information about controlling the delay for local publishing, see Controlling Local Publishing on page 487. watt.server.control.controlledDeliverToTriggers.pctMaxThreshold Specifies the trigger queue threshold at which the Integration Server slows down the delivery rate of locally published documents. This threshold is expressed as a percentage of the trigger queue capacity. For example, if you specify 80, the Integration Server decreases the rate at which it delivers locally published documents to a trigger queue when that trigger queue reaches 80% capacity. Integration Server resumes delivering documents at the normal rate when the trigger queue capacity drops below the specified threshold. The default is 90. watt.server.control.maxPersist Specifies the capacity of the outbound document store. Integration Server places published documents in the outbound document store when the configured Broker is unavailable. When the number of documents in the outbound document store equals the capacity, the Integration Server blocks any threads executing services that publish documents. The Integration Server resumes execution of blocked threads after the Broker becomes available. The default is 500,000 documents. watt.server.control.maxPublishOnSuccess Specifies the maximum number of documents that the server can publish on success at one time. For example, suppose that you set the maximum to 100 documents. ServiceA publishes 10 documents on success. ServiceB publishes 90 documents on success. ServiceC publishes 5 documents on success. ServiceA and ServiceB can publish documents concurrently. However, if ServiceC begins to publish documents before ServiceA or ServiceB completes, the Integration Server throws an exception for ServiceC because the documents published by ServiceC exceed the maximum number of documents that can be published
552
on success at one time. If ServiceD publishes 125 documents on success and the maximum is 100, ServiceD will receive an exception every time it executes. The default is 50,000 documents. watt.server.control.serverThreadThreshold Specifies the threshold at which Integration Server starts to warn of insufficient available threads. When the percentage of available server threads goes below the value of this property, Integration Server generates a journal log message indicating the current available thread percentage and stating "Available Thread Warning Threshold Exceeded." When you receive this message in the journal log, you can adjust the thread usage to make server threads available. The default is 15%. Note: It is recommended that you use the Available Threads Warning Threshold field in the Edit Resource Settings page of the Integration Server Administrator to set the threshold value. For more information about setting an available threads warning threshold, see Managing the Server Thread Pool on page 86. watt.server.control.threadSensorInterval Specifies the interval, measured in milliseconds, at which Integration Server will monitor the thread usage. When the percentage of available server threads goes below the threshold value specified in the watt.server.control.serverThreadThreshold property, Integration Server will generate a journal log message to warn of insufficient available threads. The default is 2000 milliseconds. watt.server.control.triggerInputControl.delayIncrementInterval Specifies the interval used in conjunction with watt.server.control.triggerInputControl.delays to determine the frequency with which Integration Server polls a trigger client queue on the Broker if the queue was empty when it was last polled. The default is 2000. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. For more information about controlling the polling frequency for trigger client queues on the Broker, see Configuring Polling Frequency for Triggers on page 488. watt.server.control.triggerInputControl.delays Specifies a comma-separated list of values specifying the number of milliseconds that Integration Server delays the polling of a trigger client queue on the Broker. Integration Server changes the delay based on how long the trigger client queues has been empty. The default value is 500,1000,1500,5000. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. For more information about controlling the polling frequency for trigger client queues on the Broker, see Configuring Polling Frequency for Triggers on page 488.
553
watt.server.createPackage.ignorePattern Specifies the file types you do not want Integration Server to include when publishing packages to a VCS. For example, to prevent Integration Server from publishing .svn files, you would specify the parameter as watt.server.createPackage.ignorePattern=.svn. You can specify several file types using a semi-colon (;) as a delimiter, as follows: watt.server.createPackage.ignorePattern=.svn;.java;.xml watt.server.cronMaxThreads The maximum number of threads maintained for the cronjob-based threadpool, which Integration Server uses for scheduled system tasks. If this maximum number is reached, Integration Server waits until processes complete and return threads to the pool before running more processes. The default is 5. watt.server.cronMinThreads The minimum number of threads maintained for the cronjob-based threadpool, which Integration Server uses for scheduled system tasks. When Integration Server starts, the thread pool initially contains this minimum number of threads. The default is 2. watt.server.dateStampFmt Specifies the date format to use in log files. You can use any format that is supported by the Java class java.text.SimpleDateFormat. For example, to display the date with the format 08-12-02 14:44:33:1235, specify dd-MM-yy HH:mm:ss:SSSS. watt.server.date.SuppressPatternError Specifies how the server should respond if no input is passed to the pub.date:dateTimeFormat service. When set to true, the server simply returns a null value for the value parameter. The default is for the server to throw an exception. watt.server.db.blocktimeout Specifies the maximum time in milliseconds the server is to block a request when waiting for a connection to a database. (The database must be defined by an alias in the WmDB package.) The default is to wait indefinitely. Specifying -1 also means to wait indefinitely. This property is global to all pools. watt.server.db.connectionCache Specifies how the server manages connections to a database. Specifying server tells the server to maintain a pool of connections for each database that is defined to the server through an alias. If a request cannot be satisfied because the pool has reached its maximum number of connections, the server blocks the request and tries again later. Specifying session tells the server to create a database connection per session. That is, when the server receives a service request that requires a database connection, it will create a new connection if one doesn't already exist for that session; otherwise the server will use the connection that was previously created for that session. If the attempt to create a connection for the session fails, for example because the database has no available slots for connections, the request fails. The default is session.
554
Although enabling database connection pooling creates a pool for each database defined to your server, you can control the characteristics of each pool individually by using the Edit Alias Information screen of the Integration Server Administrator. See the wMDB Users Guide for more information about configuring the server to connect to a database. watt.server.db.maintainminimum Specifies how the server handles purging inactive connections that have timed out. With the parameter set to false, the server purges all of these connections. With the parameter set to true, the server purges these connections, but stops when a minimum number of connections in the pool has been reached. You specify the minimum when you define the alias. This property is global to all pools. watt.server.db.testSQL Specifies if a database connection from a connection pool is valid or invalid. Initially testing the database connections removes invalid connections from the connection pool and ensures that the service will always receive a valid connection. Specifying true tells the server to test the database connections in the connection pool. If the database connection is valid, then the server passes the connection to a service to process a request. If the database connection is invalid, then the server removes the connection from the connection pool. Specifying false tells the server to not test database connections in the connection pool. watt.server.deprecatedExceptionLogging Specifies how the Integration Server logs service exceptions to the Integration Server error log. Set this parameter to true for basic exception logging or false (the default setting) for more detailed exception logging to help pinpoint the source of the exception. When set to...
true
Integration Server... Logs the exception for each service in a nested stack as the exception moves up the stack. If a parent service catches the exception and does not rethrow it, the Integration Server still logs the exception for each child service it passed on its way up the stack. Displays the stack trace for each service.
555
Integration Server... Logs the exception only once, at the top-level service, even if the exception occurred at a nested service. If any service in the stack catches the exception and does not rethrow it, the Integration Server does not log the exception. Note: The exception may be logged more than once if a service in the call stack, or one of the core classes that the service uses, explicitly logs the exception. Displays, for logged exceptions, the stack trace of the innermost service where the exception first occurred. This stack trace often gets truncated from the log when watt.server.deprecatedExceptionLogging is set to true. Concatenates the error messages from each of the nested exceptions.
If this parameter is set to true, the cause of the exception becomes more difficult to trace. For this reason, Software AG recommends that you do not set this parameter to true unless you are executing services that catch exceptions and do not rethrow them. For more information about interpreting the error log and using the log to help debug services, see Appendix G, Debugging Service Exceptions Using the Error Log. watt.server.diagnostic.logperiod Specifies how many hours of logs are returned when you run the diagnostic tool. The default is 6. When this property is set to 0, the diagnostic utility does not return any log files. It returns only the configurational and run-time data files. watt.server.dispatcher.comms.brokerPing Specifies how often (in milliseconds) triggers (which are Broker clients) should ping the Broker. When there is a firewall between the Integration Server and the Broker, the firewall closes the connection between a trigger and the Broker when the connection becomes idle. To prevent connections from becoming idle, trigger Broker clients periodically ping the webMethods Broker. For example, to have the trigger Broker client ping the webMethods Broker every 30 seconds, specify the following: watt.server.dispatcher.join.reaperDelay Specifies how often (in milliseconds) that the Integration Server removes state information for completed and expired joins. The default is 1800000 milliseconds (30 minutes). watt.server.dispatcher.messageStore.redeliverOriginalMessage Specifies whether Integration Server stores and redelivers the original message or a modified message for subsequent trigger service execution when retry failure occurs for a trigger service invoked by Broker/local trigger. When set to true, Integration Server stores and redelivers the message originally sent to the Broker/local trigger. When set to false,
556
Integration Server stores the message as it is at the point at which retry failure occurs. Integration Server delivers a modified message to the Broker/local trigger for subsequent processing. The default is false. watt.server.displayDirectories Specifies whether a browser user can view directories that reside on Integration Server without using Integration Server Administrator. When this parameter is set to true (the default), users can view Integration Server directories. When this parameter is set to false, no directories are displayed. watt.server.email.charset Specifies the default character set used for encoding portions that contain non-ASCII characters in e-mail messages. E-mail fields that contain non-ASCII characters are subject, MIME headers, body text, and attachments. The pub.client:smtp service uses this property. The default is utf-8. For more information about the pub.client:smtp service, see webMethods Integration Server Built-In Services Reference. watt.server.email.from Specifies the e-mail address the server presents as its From address when sending e-mails about errors. By default, the server uses Integration-Server@localhost for the From Address, where localhost is the name of the host on which the Integration Server is running. watt.server.email.waitForServiceCompletion Specifies whether Integration Server should wait for the e-mail port to complete the processing of a message before returning the thread used to retrieve the message to the thread pool. When retrieving and processing messages received by an e-mail port, Integration Server uses one thread to retrieve a message and a second thread to execute the service that processes the message. By default, after using a thread to retrieve a message, Integration Server returns it to the server thread pool, making it available to perform other processing. If the e-mail port receives a large number of messages in a short period of time, the e-mail port might monopolize the server thread pool for retrieving and processing messages. In addition, if the service that processes the messages executes slowly, it is possible that the e-mail port message processing will negatively affect the performance of Integration Server. To avoid this issue, you can limit the number of threads used to process messages received by an e-mail port by setting the watt.server.email.waitForServiceCompletion property. When the property is set to true, Integration Server does not return the thread used to retrieve the message to the thread pool until after the service that processes the message executes to completion. As a result, the maximum number of threads used to retrieve and process messages for an e-mail port is equal to 2 or twice the value of the Number of threads if multithreading is turned on field.
557
If the e-mail port is for a POP3 e-mail server, Integration Server can use up to 2 threads for retrieving and processing messages for the port (one thread to retrieve a message received by the e-mail port and one thread to execute the service that processes the message). If the e-mail port is for an IMAP e-mail server and multithreading is disabled, Integration Server can use up to 2 threads for retrieving and processing messages for the port (one thread to retrieve a message received by the e-mail port and one thread to execute the service that processes the message). If the e-mail port is for an IMAP e-mail server and multithreading is enabled, Integration Server can use a number of threads equal to twice the value of the Number of threads if multithreading is turned on field for retrieving and processing messages for the port. For example, if the value of the Number of threads if multithreading is turned on field is 5, Integration Server can use a maximum of 10 threads to retrieve and process messages for the e-mail port (5 threads to concurrently retrieve messages for the email port and another 5 threads to process those messages). When watt.server.email.waitForServiceCompletion is set to false, Integration Server does not wait for the service that processes the message to execute to completion before returning the thread used to retrieve the message to the thread pool. The default is false. Note: The watt.server.email.waitForServiceCompletion parameter applies to all e-mail ports on an Integration Server. watt.server.errorMail Specifies the e-mail address to which Integration Server sends messages about critical server log entries. There is no default. watt.server.event.audit.async Specifies whether the event handlers for the audit event are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to audit events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to audit events synchronously. The default is true. watt.server.event.exception.async Specifies whether the event handlers for the exception event, error event, or journal event are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to exception events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to exception events synchronously. The default is true. watt.server.event.gd.async Specifies whether the event handlers for guaranteed delivery events (gdStart and gdEnd) are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to guaranteed
558
delivery events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to guaranteed delivery events synchronously. The default is true. watt.server.event.jmsDeliveryError.async Specifies whether the event handlers for JMS delivery failure events are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to JMS delivery failure events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to JMS delivery failure events synchronously. The default is true. watt.server.event.jmsRetrievalError.async Specifies whether the event handlers for JMS retrieval failure events are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to JMS retrieval failure events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to JMS retrieval failure events synchronously. The default is true. watt.server.event.replication.async Specifies whether the event handlers for replication events are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to replication events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to the replication events synchronously. The default is true. watt.server.event.security.async Specifies whether the event handler for security events is invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to security events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to security events synchronously. The default is true. watt.server.event.session.async Specifies whether the event handlers for session events (sessionStart, sessionEnd, and sessionExpire) are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to session events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to session events synchronously. The default is true. watt.server.event.stat.async Specifies whether the event handlers for stat (statistics) events are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to the statistics events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to the statistics events synchronously. The default is true. watt.server.event.tx.async Specifies whether the event handlers for the transaction events (txStart and txEnd) are invoked asynchronously or synchronously. When this parameter is set to true, Integration Server invokes the event handlers (services) that subscribe to transaction
559
events asynchronously. When this parameter is set to false, Integration Server invokes the event handlers that subscribe to transaction events synchronously. The default is true. watt.server.fileEncoding Specifies the encoding the server is to use when reading and writing text files. This setting has no effect on files stored as Unicode. The default is your JVM's file.encoding property. watt.server.ftpConnect.message Specifies the content of the 220 message that Integration Server returns to an FTP client when the client issues a connect request. When this parameter is set to true (the default), Integration Server returns the following messages to the FTP client:
Connected to IS_hostname. 220 IS_hostname FTP server (webMethods Integration Server version n.n.n.n) ready.
When this parameter is set to false, Integration Server returns the following messages to the FTP client:
Connected to IS_hostname. 220
When this parameter is set to any other value, that value is returned in the 220 message. For example, if you specify Custom FTP connect message, Integration Server will return the following to the FTP client:
Connected to IS_hostname. 220 Custom FTP connect message.
watt.server.ftp.listingFileAge Specifies the number of seconds that must elapse before a file that has been updated or created on an Integration Server functioning as an FTP server can be accessed. Files created or updated within the time specified by this parameter will not be part of the results of the FTP LIST command. The default value is 60 seconds. watt.server.ftpLogin.message Specifies the content of the 230 message that Integration Server returns to an FTP client when the client issues a login request. When this parameter is set to true (the default), Integration Server returns the following message to the FTP client: 230 User userid logged in. When this parameter is set to false, Integration Server returns the following message to the FTP client: 230 When this parameter is set to any other value, that value is returned in the 230 message. For example, if you specify Custom FTP login message, Integration Server will return the following to the FTP client:
230 Custom FTP login message.
watt.server.ftp.usecommandip Controls whether the pub.client:ftp service uses connection information from a NAT server when connecting to an FTP server.
560
When the pub.client:ftp service tries to transfer data to or from an FTP server, Integration Server first connects to the FTP server at the IP address specified by the pub.client:ftp service. In response, the FTP server sends back the IP address on the FTP server to which Integration Server should connect to perform the transfer. If the FTP server sits behind a NAT server, the NAT server intercepts this address, translates it, then sends it on to Integration Server. This property controls whether Integration Server uses the address provided by the NAT server or the address already specified by the pub.client:ftp service. When this parameter is set to true, Integration Server bypasses the translated address and immediately tries the address specified by the service. If this attempt fails, Integration Server throws an exception. When this parameter is set to false, the default, Integration Server tries the address provided by the NAT server. If that attempt fails, Integration Server tries the IP address specified on the pub.client:ftp service. If both attempts fail, Integration Server throws an exception. watt.server.http.header.useHttpOnly Specifies whether Integration Server includes the Set-Cookie header in the response to an HTTP client. When this property is set to true (the default) Integration Server includes the HttpOnly flag in the Set-Cookie header of the HTTP response to an HTTP client. True is the recommended setting because it prevents a client side script from accessing a protected cookie. If you are working with an HTTP client that does not support the HttpOnly flag, set this property to false. watt.server.hostAccessMode Specifies IP access for ports that do not have a custom IP access setting. When this parameter is set to include, the server accepts requests from all IP addresses, except those specifically denied on the Integration Server Administrator interface. When this parameter is set to exclude, the server denies requests from all IP addresses except those specifically allowed on the Integration Server Administrator interface. The default is include. watt.server.hostAllow Specifies the name of the host that is allowed service. There is no default. watt.server.hostDeny Specifies the name of the host that is denied service. There is no default. watt.server.http.listRequestVars Specifies how Integration Server handles duplicate query tokens in an HTTP request. When set to...
always
Integration Server... Converts duplicate and non-duplicate tokens into lists. For example:
http://host:5555/folder/service?arg1=X&arg1=Y&arg2=Z
becomes
INVOKE folder:service {arg1=X, arg1List=[X,Y], arg2=Z, arg2List=[Z]}
561
Integration Server... Converts duplicate tokens into Lists. Non-duplicate tokens are not converted. For example:
http://host:5555/folder/service?arg1=X&arg1=Y&arg2=Z
becomes
INVOKE folder:service {arg1=X, arg1List=[X,Y], arg2=Z}
Throws a ServiceException if duplicate tokens are found in the URL query. Non-duplicate tokens are not converted. For example:
http://host:5555/folder/service?arg1=X&arg1=Y&arg2=Z
never
becomes
INVOKE folder:service {arg1=X, arg2=Z}
watt.server.http.reauth.user-agent.list Specifies a semicolon-delimited list of HTTP clients from which you want Integration Server to request re-authentication after an HTTP session expires. By default, this parameter is set to Firefox;MSIE so that requests from the Mozilla Firefox and Microsoft Internet Explorer browsers will be asked to re-authenticate if the associated HTTP session has expired. For user agents not specified on this list, Integration Server sends a new session cookie when the session expires. If you remove this property and restart Integration Server, the value of this property resets to Firefox;MSIE. watt.server.http.returnException Specifies whether Integration Server should return a stack trace in the HTTP/SOAP response it sends to the invoking client when an invoked service ends in error. You can specify one of the following: Value
true false webMethods
Tells Integration Server... To return a stack trace in the HTTP/SOAP response. Not to return a stack trace. Return a stack trace only if the client's HTTP user agent is set to webMethods or has the same value as the user agent specified on the watt.net.userAgent parameter.
watt.server.http.securityRealm Specifies the name of the Integration Server security realm. This value is included in the headers of HTTP responses that Integration Server sends to clients that request authentication. The default value is Integration Server.
562
watt.server.http.useAcceptHeader Specifies whether Integration Server supports the Accept header field in an HTTP request. The Accept header field specifies a content type or types the HTTP client will accept in the HTTP response. The default setting is true. This parameter must be set to true if you want to use the watt.server.content.type.mappings parameter to map wildcard content types in the Accept header field to specific content types. watt.server.http.xmlFormat Specifies whether Integration Server parses incoming XML documents automatically or passes them directly to the service. Use this property to set the default behavior for how Integration Server should pass XML documents via HTTP. Set this parameter to one of the following values: Specify...
node stream
To indicate that... Integration Server will automatically parse the XML and pass it to the service as a node. This is the default behavior. Integration Server will pass XML streams directly to the requested service without parsing. When this parameter is set to stream, the XML appears in the input pipeline of the service as an InputStream, named xmlStream. This parameter can be overridden on any individual client request using the xmlFormat argument. For more information, see Developing Integration Solutions: webMethods Developer Users Guide. Integration Server will pass XML bytes directly to the requested service without parsing. When this parameter is set to bytes, the XML appears in the input pipeline of the service as byte array, named xmlBytes. This parameter can be overridden on any individual client request using the xmlFormat argument. For more information, see Developing Integration Solutions: webMethods Developer Users Guide.
bytes
If a value for watt.server.http.xmlFormat is not specified or is invalid, the default XML parsing behavior is "node" This feature can be used when submitting and receiving XML via HTTP only. watt.server.idr.reaperInterval Specifies the initial interval at which the scheduled system service Message History Sweeper executes and removes expired document history entries. The default is 10 minutes. watt.server.illegalNSChars Specifies the characters that you cannot use when naming a package, folder or service. The default is ?`-#&@^!%*:$.\ /';,~+=)(|}{][><. watt.server.inetaddress Specifies the IP address on which the server is to listen for incoming requests. By default, Integration Server listens on all available IP addresses. To limit the server to listening on a single IP address, specify the IP address as the value of this property.
563
watt.server.invokeDirective Specifies an alternative word to use for the invoke directive in URLs that invoke services on Integration Server. By default, this parameter is set as watt.server.invokeDirective=invoke, which means users must specify the invoke directive as invoke (http://host:port/invoke/folder/service_name). To allow users to specify the invoke directive as either invoke or an alternative word, set this parameter to the alternative word. For example, to allow users to specify the invoke directive as either invoke or submit, (http://host:port/invoke/folder/service_name or http://host:port/submit/folder/service_name), set this parameter as watt.server.invokeDirective=submit. watt.server.invoke.maxRetryPeriod Specifies the total amount of waiting time (in milliseconds) that can elapse if the Integration Server makes the maximum attempts to retry a service. The default is 15,000 milliseconds (15 seconds). When configuring retries for an individual service, the value calculated by multiplying Max attempts value by the Retry interval cannot exceed the value set by this server parameter. For more information about configuring service retry, see webMethods Service Development Help or Developing Integration Solutions: webMethods Developer Users Guide. watt.server.java.unicode Specifies whether the source code for Java services is stored in Unicode encoding. The default is false. Set this value to true if the source code contains characters that cannot be rendered in the server's native encoding. watt.server.jca.connectionPool.thresholdWaitingRequest When enabled, this property represents the percentage value that is used in addition to the configured maximum number of connections (set by the Maximum Pool Size parameter on the Connections page) for the connection pool. For example, setting the property as watt.server.jca.connectionPool.thresholdWaitingRequest=20 sets the threshold to 120% of configured maximum number of connections. If the property is not defined or if the value is less than or equal to zero, the feature remains disabled. When this property is enabled, the connection pool ensures that the waiting connection requests plus the busy connections in the connection pool do not exceed the threshold limit. watt.server.jca.transaction.recoverOnEnlist Specifies whether the transaction manager within Integration Server invokes the XAResource.recover() service when working with XA transactions during a failover. To indicate that the Integration Server should invoke the XAResource.recover() service, set the parameter to true. Otherwise, use the default value, which is false. watt.server.jca.transaction.rollbackOnWriteFailure If Integration Server cannot store the status of a transaction and its participating resources in the XA recovery store (for example, because the store is corrupted), specifies whether Integration Server should try to continue with the transaction anyway (false) or try to roll it back (true). Setting the parameter to false involves some risk; if Integration
564
Server ends abnormally, no statuses will have been saved to the XA recovery store, and Integration Server will not be able to resolve the uncompleted transaction or give you the chance to resolve it manually. watt.server.jca.transaction.writeRecoveryRecord Specifies whether Integration Server maintains XA transaction information for use with XA transaction recovery. If Integration Server does not save XA transaction information, uncompleted XA transactions cannot be recovered using Integration Server. That is, Integration Server does not attempt to recover incomplete XA transactions automatically and you cannot use Integration Server Administrator to manually recover or resolve an incomplete transaction. Specify true to enable XA transaction recovery. Specify false to disable XA transaction recovery. The default is true. watt.server.jdbc.defaultDriver For use with WmDB. Specifies the name of the Java class for the driver you want to use to connect to databases when no driver name is supplied for a database alias. The default is the driver name for the Sun JVM: sun.jdbc.odbc.JdbcOdbcDriver. watt.server.jdbc.derby.commitTolerance Specifies the length of time, in milliseconds, that Integration Server waits for a commit to the embedded database to complete before removing the associated connection from the connection pool. Integration Server uses this property when it is configured to use the embedded database for any of the ISInternal, DocumentHistory, and Xref functions. If the commit process takes longer than the value defined by this property, Integration Server removes the associated connection from the connection pool so that a new connection can be initiated for future requests. The default value for this property is 150 milliseconds. watt.server.jdbc.driverList Specifies a comma-delimited list of JDBC drivers you want the server to load when it initializes. There is no default. Note: This parameter is for use with the WmDB package only. watt.server.jdbcLogFile Specifies the name of the log file that contains JDBC log activity. When the watt.server.jdbcLogging property is enabled (set to on), the server logs activity to this file. The default value is jdbc.log. It is located in the Integration Server_directory\logs folder. Note that the log file is generated after WmDB makes a connection to the database. Note: This parameter is for use with the WmDB package only. watt.server.jdbc.loginTimeout Sets the maximum time, in seconds, that the JDBC driver on Integration Server is to wait for a response while attempting to connect to a database. If Integration Server does not receive a response in the allotted time, it terminates the request, logs the error and moves on. The default value is 60 seconds.
565
watt.server.jdbcLogging Specifies whether Integration Server is to enable logging on java.sql.DriverManager in order to log JDBC activity. When set to on, the server writes the log file data to the file specified by watt.server.jdbcLogFile. The default is off. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. Note: This parameter is for use with the WmDB package only. watt.server.jdbc.moreResults Specifies if the Integration Server is to process the stored procedure results from a single result set or multiple result sets. When set to true, Integration Server processes and returns information produced by multiple result sets. When set to false, Integration Server processes information produced from a single result set. The default is false.If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. Note: This parameter is for use with the WmDB package only. watt.server.jdbc.sp.mandateParams Specifies whether the $data input parameter of the pub.db:call service expects values to invoke a stored procedure through the pub.db:call service. Set this property to false if you do not want to specify values for the $data input parameter. Set this property to true if you want the pub.db:callservice to expect values for the $data input parameter. The default is true. watt.server.jdbc.statementCache Specifies whether Integration Server is to cache prepared statements for later use. When set to true, the server saves prepared statements in a local cache. When the server receives subsequent requests to a database, it can reuse the prepared statements in the cache instead of recreating them each time a request is made. To use Java heap space efficiently, the server removes cached statements automatically if it is not reused within 30 seconds. The default is false. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. Note: This parameter is for use with the WmDB package only. watt.server.jms.connection.monitorPeriod Specifies the frequency (measured in seconds) with which Integration Server checks the state of a connection to the JMS provider. The minimum is 1 second. If this parameter is set to less than 1, Integration Server uses the default value instead. The default is 45 seconds. watt.server.jms.connection.pingDestination Configures Integration Server to send a keep-alive message to a destination on the JMS provider, thereby preventing the firewall from terminating the connection between Integration Server and a third-party JMS provider. A keep-alive message is a blank, nonpersistent JMS message with an immediate time out.
566
To... Attempt to create a JMS session using the connection between Integration Server and the JMS provider. This is the default. Create a temporary queue on the JMS provider and send a keepalive message to the temporary queue. Temp is not casesensitive. Send a keep-alive message to the specified destination on the JMS provider. If the specified destination does not exist on the JMS provider, Integration Server periodically attempts to create a JMS session using the connection between Integration Server and the JMS provider.
<destinationName>
Note: The frequency with which Integration Server sends a keep-alive message is determined by the value of watt.server.jms.connection.pingPeriod. watt.server.jms.connection.pingPeriod Specifies how often, measured in seconds, Integration Server should ping the JMS provider. The ping serves as a keep alive request sent to the JMS provider. The default is 300 seconds (5 minutes). watt.server.jms.connection.retryPeriod Specifies the length of time, in seconds, that Integration Server waits between connection attempts when a connection to the JMS provider or JNDI provider fails. The default is 20 seconds. watt.server.jms.connection.update.blockingTime Specifies the maximum amount of time, measured in milliseconds, that a pub.jms* service will wait for a connection while the connection used by the service is being updated. If Integration Server does not restart the connection before the blocking time elapses, Integration Server throws an ISRuntimeException and the sending service fails. A value of 0 (zero) indicates that Integration Server does not block the pub.jms* services while the JMS connection alias updates; Integration Server throws an ISRuntimeException immediately. The maximum value is 10,000 milliseconds (10 seconds). The default is 1000 milliseconds. Integration Server resets the watt.server.jms.connection.update.blockingTime parameter to the default value if an invalid value is entered. Important! You must restart Integration Server for the new value to take effect. watt.server.jms.connection.update.restartDelay Specifies the length of time, measured in milliseconds, Integration Server waits for services sending JMS messages to execute to completion when the connection used by the services needs to be updated. After the restart delay elapses, Integration Server refreshes the connection using the updated connection factory object and then restarts the
567
connection. If the restart delay elapses before the pub.jms* services execute to completion, Integration Server throws an ISRuntimeException and the sending service fails. The maximum value is 10,000 milliseconds (10 seconds). The default is 500 milliseconds. Integration Server resets the watt.server.jms.connection.update.restartDelay parameter to the default value if an invalid value is entered. Important! You must restart Integration Server for the new value to take effect. watt.server.jms.csq.batchProcessingSize Specifies the maximum number of messages Integration Server retrieves from the client side queue and then sends to the JMS provider. Integration Server places sent messages in the client side queue when the connection to the JMS provider fails. Integration Server begins to drain the client side queue after the connection to the JMS provider becomes available. The default is 25. watt.server.jms.debugTrace Enables an extra level of verbose logging for JMS triggers that can be controlled globally or at the individual JMS trigger level. To enable debugTrace logging for all JMS triggers, set the watt.server.jms.debugTrace property to true. For this setting to take effect, you need to disable and then enable all JMS triggers. For information about using Integration Server Administrator to enable and disable all JMS triggers, see Enabling, Disabling, and Suspending JMS Triggers on page 494. To enable debugTrace logging for an specific JMS trigger, append the fully qualified JMS trigger name to the watt.server.jms.debugTrace property and set that property to true. For example, to enable debugTrace logging for the JMS trigger named myFolder:myJMSTrigger, enter the following on the Edit Extended Settings page: watt.server.jms.debugTrace.myFolder:myJMSTrigger=true For this setting to take effect, you need to disable and then enable the JMS trigger specified in the property. For information about using Integration Server Administrator to disable and enable an individual trigger, see Enabling, Disabling, and Suspending JMS Triggers on page 494. watt.server.jms.guaranteedMultisend.alwaysUseTxLogging Specifies whether or not Integration Server always uses XA transaction logging when sending a JMS message in accordance with a multisend guaranteed policy. In XA transaction logging, Integration Server logs the state of each transaction. The XA transaction logging allows Integration Server to recover any transactions that did not complete due to Integration Server failure. While this is the most reliable way to ensure the integrity of a transaction, it may be expensive in terms of performance and may not always be necessary. When this property is set to true, Integration Server always uses XA transaction logging and can perform XA transaction recovery for a multisend guaranteed policy regardless of the connection transaction type When set to false, Integration Server uses XA transaction logging only if the connection transaction type is XA_TRANSACTION. The default is false.
568
watt.server.jms.trigger.maxDeliveryCount Specifies the maximum number of times the JMS provider can deliver a message to Integration Server. The default is 100. watt.server.jms.trigger.maxPrefetchSize Specifies the maximum number of messages that the webMethods JMS API will retrieve and cache per request for a JMS trigger. Using pre-fetch cache can speed up the retrieval of messages from the webMethods JMS Provider. Because messages will be placed in Integration Server memory, you may want to decrease this setting if you have JMS triggers receiving very large messages. Otherwise, memory issues can occur. This property only applies to JMS triggers receiving messages from the webMethods JMS Provider. The default is 10 messages. Integration Server checks this value when a JMS trigger starts. To apply a new value to all JMS triggers, use Integration Server Administrator to disable and then enable JMS triggers. For information about using Integration Server Administrator to disable and enable an individual trigger, see Chapter 29, Managing JMS Triggers. This property only takes effect when the trigger's prefetch property is set to -1. When working in a cluster of Integration Servers, the behavior controlled by this property might appear at first to be misleading. For example, suppose that you have a cluster of two Integration Servers. Each Integration Server contains the same JMS trigger. Twenty messages are sent to a destination from which JMS trigger receives messages. It might be expected the JMS trigger on Integration Server 1 will receive the first message, the JMS trigger on Integration Server 1 will receive the second message, and so forth. However, what may happen is that the JMS trigger on Integration Server 1 will receive the first 10 messages and the JMS trigger on Integration Server 2 will receive the second 10 messages. watt.server.jms.trigger.monitoringInterval Specifies the interval, measured in seconds, at which Integration Server executes resource monitoring services for JMS triggers. A resource monitoring service is a service that you create to check the availability of resources used by a JMS trigger service. After Integration Server suspends a JMS trigger because all retry attempts have failed, it schedules a system task to execute the resource monitoring service assigned to the JMS trigger. The default is 60 seconds. Changes to this property take effect the next time Integration Server schedules a system task to execute a resource monitoring service for a JMS trigger. For more information about building resource monitoring services for JMS triggers, see the webMethods Integration Server JMS Client Developers Guide. watt.server.jms.trigger.pollingSession.timeout Specifies the frequency (measured in minutes) with which Integration Server refreshes an inactive connection for a JMS trigger. A JMS trigger session is considered to be inactive when the JMS trigger does not use the session to retrieve messages. The default is 30 minutes.
569
watt.server.jms.trigger.pooledConsumer.timeout Specifies the length of time, in milliseconds, that a pooled consumer should remain active. Integration Server uses a pool of consumers to retrieve and process messages for concurrent JMS triggers. Each consumer in the pool encapsulates an actual javax.jms.MessageConsumer and javax.jms.Session. The default is 60,000 milliseconds (60 seconds). watt.server.jms.trigger.raiseEventOnException Indicates whether Integration Server generates a JMS retrieval failure event when a JMS trigger experiences a fatal exception, such as a non-transient error or a message that cannot be reprocessed, during message processing. Specify true if you want Integration Server to generate a JMS retrieval failure event. The default is true. watt.server.jms.trigger.raiseEventOnRetryFailure Indicates that Integration Server generates a JMS retrieval failure event when a JMS trigger experiences a retry failure. A retry failure can occur when the JMS provider has reached the max delivery count for a message or when an ISRuntimeException is thrown and the JMS trigger is not configured to recover the message (for example, if retry failure handling for a non-transacted JMS trigger is set to "Throw exception" instead of "Suspend and Retry Later".) When set to true, Integration Server generates a JMS retrieval failure event for a JMS trigger when retry failure occurs. The default is true. watt.server.jms.trigger.reuseSession Indicates whether instances of a JMS trigger use the same session on Integration Server When this property is set to true, the JMS trigger uses a shared session. Each of the trigger services executed by the JMS trigger will use the same session ID. When this property is set to false, Integration Server uses a new session for each instance of a JMS trigger. Reusing sessions for a JMS trigger might improve performance. However, this property does not work with all adapters. If you are working with an adapter, such as the SAP adapter, that requires the session ID to be unique, set this property to false. The default is false. watt.server.jms.trigger.stopRequestTimeout Specifies the maximum amount of time, measured in seconds that Integration Server waits after a JMS trigger is disabled before forcing the JMS trigger to stop processing messages. The default is 3 seconds. You can disable a JMS trigger by invoking the pub.trigger:disableJMSTrigger service or by using or via the Settings > Messaging > JMS Trigger Management screens in Integration Server Administrator. For information about disabling JMS triggers, see Enabling, Disabling, and Suspending JMS Triggers on page 494. When you save a JMS trigger in Designer or Developer, Integration Server stops and then restarts the trigger. In this situation, Integration Server waits 3 seconds before forcing the JMS trigger to stop processing messages. This value cannot be configured. Important! You must restart Integration Server for the new value to take effect. watt.server.jms.trigger.wmjms.clientIDSharing Indicates that Integration Server attempts to receive messages from durable subscribers in a load-balanced fashion. When set to true, Integration Server does the following:
570
If the durable subscriber specified by the JMS trigger does not exist, Integration Server creates the durable subscriber on the Broker and enables state sharing. Integration Server also uses the message processing mode to set the Shared State Order mode for the durable subscriber. (A message processing mode of serial maps to a shared state order mode of publisher, a message processing mode of concurrent maps to a shared state order mode of none.) If the durable subscriber already exists, Integration Server does not make any changes to the durable subscriber when it saves the JMS trigger. Indicates to the Broker that client identifiers can be shared by setting the com.webmethods.jms.clientIDSharing property within Integration Server to true. This property only applies when the JMS trigger uses a JMS connection alias that connects to the webMethods JMS Provider using the native webMethods API. The default is true. Important! You must restart Integration Server for a new value to take effect. watt.server.jms.wmjms.lms.readTimeout Specifies the amount of time (measured in milliseconds) that Integration Server waits for the next portion of an input stream before throwing WmReadTimeoutException. The read timeout only applies after Integration Server retrieves the initial piece of the input stream. The default is 30000 milliseconds. watt.server.key Specifies the license key for the server. There is no default. watt.server.ldap.DNescapeChars Specifies the characters Integration Server can escape (using the \ character) in domain names presented to an LDAP server. By default, this property is set to null, meaning no characters are escaped. Use this parameter if the domain names you are using include special characters that Integration Server needs to escape. For example, if your LDAP server maintains userids such as abc/def, specify the following:
watt.server.ldap.DNescapeChars = /
watt.server.ldap.doNotBind Specifies whether the Integration Server authenticates against the LDAP server. If your Integration Server uses a custom authentication module and you do not require users to be authenticated against the LDAP directory, set this property to true to prevent unnecessary requests to the LDAP server. The default is false.
571
watt.server.ldap.extendedMessages Controls whether the Integration Server displays additional information returned from the LDAP server when an authentication error occurs. This information is available only if the LDAP server provides it. Active Directory is an LDAP server that provides this additional information. The default is false. When set to false, an error message might look like this:
2005-03-08 15:40:33 EST [ISS.0002.0035E] Invalid credentials connecting to ldap://10.3.33.203:389/dc=KQA,dc=webMethods,dc=com as CN=bob,OU=ISUsers,DC=KQA,DC=WEBMETHODS,DC=COM
When set to true, the same error would be displayed like this:
2005-03-08 15:40:33 EST [ISS.0002.0035E] Invalid credentials connecting to ldap://10.3.33.203:389/dc=KQA,dc=webMethods,dc=com as CN=bob,OU=ISUsers,DC=KQA,DC=WEBMETHODS,DC=COM: [LDAP: error code 49 80090308: LdapErr: DSID-0C09030F, comment: AcceptSecurityContext error, data 52e, vece]
For Active Directory users, the data code (data 52e above) contains the reason the authentication failed. You can convert the code to decimal and look it up on http://msdn.microsoft.com/library/en-us/debug/base/system_error_codes.asp to determine the problem. watt.server.ldap.extendedProps Specifies LDAP environment properties that the Integration Server will pass directly to an LDAP implementation when initializing a JNDI context. It takes this form: For example, if you are using a specialized JNDI provider other than the default, or if your LDAP directory requires a special JNDI property to be passed into the environment when a context is created, you could set the property customProperty to customValue:
watt.server.ldap.extendedProps=java.naming.customProperty=customValue
There is no default. watt.server.ldap.memberInfoInGroups Controls where Integration Server looks for LDAP group membership information. When set to true, the default, the Integration Server looks for group membership information in the group object. When set to false, the Integration Server looks for group membership information in the user object. watt.server.ldap.retryCount Specifies how many times Integration Server should automatically try to reconnect to an LDAP server after a network outage or LDAP server restart. If set to 0, the default, Integration Server will prompt the LDAP user for credentials rather than retrying the connection. If set to a positive integer, Integration Server will retry the connection the number of times specified. The default is 0. watt.server.ldap.retryWait Specifies how long Integration Server should wait before trying to reconnect to an LDAP server after a network outage or LDAP server restart. When set to 0, if there is a transient failure while communicating with LDAP, Integration Server will not try to reconnect to
572
the LDAP server. If set to a positive integer, Integration Server will retry the connection the number of times specified in watt.server.ldap.retryCount and will wait the amount of time specified in watt.server.ldap.retryWait between retry attempts. The default is 0. watt.server.licenses Specifies the number of licenses. The default is 1. watt.server.log.maxEntries Specifies the default number of log entries to be displayed in the log viewing utility. The default is 35 entries (the most recent entries). For complete information, see Changing the Display Permanently for All Logs on page 159. watt.server.log.queued Specifies whether the server is to queue log entries written by its facilities in memory, then use a background thread to write them to the server log. The default is true (queue log entries). For complete information, see the webMethods Audit Logging Guide. watt.server.log.refreshInterval Specifies the length of the refresh interval (in seconds) for log entries. The default is 90 seconds. For complete information, see Changing the Display Permanently for All Logs on page 159. watt.server.login.userFtpDir Specifies whether the user who has connected to Integration Server through an FTP listener is to be placed in the default FTP root directory or the client user directory. When this property is set to false (or not specified), the user is logged into the FTP root directory. The user must then issue the cd command to access the client user directory. When this property is set to true, the user is logged into the client user directory. The default value is false. The FTP root directory can be the default directory named userFtpRoot in your Integration Server home directory or a directory defined by the user using the watt.server.userFtpRootDir property. Important! You must restart Integration Server after you modify the value of this property. watt.server.logs.dateStampFmt Specifies the format of the date and timestamp to be used in audit log files (FailedAudit_*, WMERROR*, WMSESSION*, WMTXIN*, WMTXOUT*). The format you specify must adhere to the java.text.SimpleDateFormat class. If the watt.server.logs.dateStampFmt property is not set, Integration Server uses the default format, which is yyyy-MM-ddThh:mm:ss.SSSZ (for example, 2010-04-19T19:07:21.505Z). watt.server.logs.dateStampTimeZone Specifies the time zone to be used in audit log files (FailedAudit_*, WMERROR*, WMSESSION*, WMTXIN*, WMTXOUT*). The format you specify must adhere to the java.util.TimeZone class (for example, watt.server.logs.dateStampTimeZone=EST). If this property is not set, Integration Server uses local time zone hosting. For this property to take effect, the watt.server.logs.dateStampFmt must also be specified.
573
watt.server.math.floatOperation.mode Specifies whether the pub.math:*Floats services return the exact result of an operation involving two floating point numbers, the result as calculated by the JVM, or the result based on a fixed number of decimal places. Set this parameter to one of the following values: Specify...
dynamic
If you want pub.math:*Floats services to... Return the precise result of the math operation. For example, when using pub.math:addFloats to add 62.98 and 23, the service returns a sum of 85.98. Return the result of the math operation as calculated by the JVM. For example, when using pub.math:addFloats to add 62.98 and 23, the service returns a sum of 85.97999999999999. This is the default behavior.
default
fixed
Return the result rounded to a pre-determined number of decimal places. For the pub.math:addFloats and pub.math:subtractFloats services, Integration Server rounds the result to 3 decimal places. For the pub.math:multiplyFloats service, Integration Server rounds the product to 16 decimal places. For the pub.math:divideFloats service, Integration Server rounds the result to 17 decimal places.
Note: If you specify a value for the precision input parameter in pub.math:*Floats services, the precision value is given precedence over the value of the property 'watt.server.math.floatOperation.mode. For more information about the pub.math:*Floats services, see webMethods Integration Server Built-In Services Reference. Important! You must restart Integration Server for a new value to take effect. watt.server.metadata.registry.timeout The number of minutes a connection to aCentraSite registry can remain inactive before Integration Server closes it. Integration Server connects to one or more CentraSite registries to publish and retract metadata for your Integration Server assets. If no assets are published to or retracted from a CentraSite registry for a period of time, Integration Server closes the connection to that registry. The default period is 10 minutes. watt.server.metadata.url This is an internal parameter. Do not modify.
574
watt.server.netEncoding Specifies the encoding the server is to use when reading and writing text to the network. This setting has no effect on text that is explicitly encoded in a particular encoding. The default is UTF-8. The encoding parameter in the pub.client:soapHTTP service, if set, overrides the watt.server.netEncoding setting. For more information about pub.client:soapHTTP, see webMethods Integration Server Built-In Services Reference. watt.server.new.http.session.context Specifies whether Integration Server should create a new session object when executing the pub.client:http service. When this property is set to true, Integration Server ignores the values from the session object of the last invocation of pub.client:http and creates a new session object. When this property is set to false, Integration Server uses the values from the existing session object. The default value is false. watt.server.noObjectURL Specifies the URL to which the server redirects a request after three attempts to log on to the Integration Server Administrator have failed because the server cannot find the document the user is requesting. The default is for the server to display an HTML screen saying "No such object." watt.server.noAccessURL Specifies the URL to which the server is to redirect a request after three attempts to log on to the Integration Server Administrator have failed because the user does not have access to the requested document. The default is for the server to display an HTML screen saying "Access denied." watt.server.ns.backupNodes Specifies whether services are removed completely when they are deleted. When set to true, service node.ndf files will be renamed to node.bak when they are deleted. The default is false. watt.server.ns.dependencyManager Specifies whether the dependency checking features are enabled or disabled. When set to true, the dependency checking features identify elements that will be affected by moving, renaming, or deleting another element. For optimization in a production environment, you might set this parameter to false. The default for this parameter is true. watt.server.ns.lockingModes Specifies whether file locking is enabled on the Integration Server: To enable use of the Version Control System Integration feature, set this value to vcs. To enable local locking on the Integration Server set this value to full. To disable user locking and show no locks, set this value to none. To disable user locking but show system locks, set this value to system. watt.server.package.parallel.threads Specifies the maximum number of threads that you want Integration Server to use when loading IS packages at startup. The threads are from a thread pool that Integration Server uses only at startup and specifically for package loading. If you want Integration Server
575
to load packages sequentially, set the value to 1. If you want Integration Server to load packages in parallel, set the value to 2 or higher. It is recommended that you do not exceed 10. The default value is 6. Note: If you set watt.server.package.parallel.threads to 0 or a negative number, Integration Server loads packages sequentially. watt.server.partner Specifies the IP address or domain name of a hub server. This setting allows the partner server to issue a remote invoke request to a remote Integration Server. Integration Server will ignore a port number if you specify one as part of an IP address. watt.server.pipeline.processor Specifies whether to globally enable or disable the Pipeline Debug feature. When set to true, Integration Server checks the Pipeline Debug values for the service at run time. You can view and set the Pipeline Debug values in the Properties view in Designer or the Properties panel in Developer. When set to false, Integration Server ignores the Pipeline Debug options set for the service in Designer or Developer. The default is true. Enable this property in development environments where testing and debugging is performed. In a production environment, however, disabling this property is recommended. Important! You must restart Integration Server for the new value to take effect. watt.server.port Specifies the port number of the Integration Server's primary port. The default is 5555. watt.server.portQueue Specifies the size of the port queue for HTTP and HTTPS ports. The port queue is the number of outstanding inbound connections that are queued in the TCP/IP stack. The default is 65534. If your server runs on AS/400, set this number to 511. watt.server.publish.local.rejectOOS Specifies whether Integration Server should reject locally published documents when the queue for the subscribing trigger is at maximum capacity. When this parameter is set to true, before placing a locally published document into a subscribing trigger's queue, Integration Server first checks the trigger's queue size. If the queue already contains the maximum number of documents allowed by the trigger's Capacity property, Integration Server rejects the locally published document for that trigger queue only. When this parameter is set to false, Integration Server continues to place locally published documents into a subscribing trigger's queue even when the queue is at capacity. This is the default. Note: Multiple triggers can subscribe to the same document. Integration Server places the document in any subscribing trigger queue that is not at capacity.
576
Note: This parameter applies only to documents published locally using the pub.publish:publish or pub.publish.publishAndWait services. watt.server.publish.useCSQ Specifies whether Integration Server uses outbound client-side queuing if documents are published when the Broker is unavailable. Set this parameter to always to send published documents to the outbound document store when the Broker is not available. Set this parameter to never to instruct the publishing service to throw a ServiceException when the Broker is not available. The default is always. watt.server.publish.drainCSQInOrder If client-side queuing is enabled, this parameter specifies whether Integration Server should empty the outbound document store in publication order or in parallel. When this parameter is set to true, Integration Server sends all newly published documents (guaranteed and volatile) to the outbound document store until the outbound store has been emptied. This allows the Integration Server to maintain publication order. When this parameter is set to false, the outbound store is emptied while new documents are being published to the Broker. The default is true. watt.server.publish.usePipelineBrokerEvent Specifies whether Integration Server should bypass encoding that is normally performed when documents are published to the Broker. If this property is set to true, Integration Server checks the pipeline for an object called $brokerEvent. If the object is found and is of type BrokerEvent, Integration Server sends its value to the Broker and no additional encoding is performed. Set this parameter to true if Integration Server is sending native Broker events. The default is false. For more information about publishing native Broker events, see the Publish-Subscribe Developers Guide. watt.server.publish.validateOnIS Specifies whether Integration Server validates published documents. Set this parameter to one of the following values: Specify...
always
To... Perform document validation for all published documents. This includes instances of publishable document types for which the Validate when published property is set false.
577
Specify...
never
To... Disable document validation for all publishable document types. This includes instances of publishable document types for which the Validate when published property is set true. Some reasons for disabling document validation include the following: You want to improve performance. You want to validate the documents manually. You know that the system that sent Integration Server the data has already validated the data. You prefer to have webMethods Broker, rather than Integration Server, validate the documents. Integration Server is sending or receiving native Broker events.
perDoc
Perform document validation only for instances of publishable document types for which document validation is enabled. That is, Integration Server validates published documents that are instances of publishable document types for which the Validate when published property is set true. This is the default behavior.
For information about handling native Broker events and specifying validation for an individual publishable document type, see the Publish-Subscribe Developers Guide. watt.server.recordTodocument.bufferSize Specifies the size of the buffer that Integration Server uses to write an XML string when converting a document (IData) to an xml string. Increase the buffer size if the majority of the created XML strings will be greater than 4 KB. Decrease the buffer size if the majority of the created XML strings will be small documents less than 4 KB in size. The default size is 4 KB. watt.server.requestCerts Specifies whether the Integration Server requests a digital certificate from clients that connect to it through SSL. Set this parameter to true if you want the server to request certificates. Set it to false if you do not want the server to request certificates. The default is false. watt.server.RESTDirective Specifies an alternative word to use for the rest directive in URLs that access resources on Integration Server. By default, this parameter is set as watt.server.RESTDirective=rest, which means users must specify the rest directive as rest (for example, GET http://host:port/rest/resource/resourceID). To allow users to specify the rest directive as either rest or an alternative word, set this parameter to the alternative word. For example, to allow users to specify the rest directive as either rest or process, (GET http://host:port/rest/resource/resourceID) or GET http://host:port/process/resource/resourceID), set this parameter as watt.server.RESTDirective=process.
578
watt.server.revInvoke.proxyMapUserCerts For Reverse HTTP Gateway configurations only. Specifies whether a Reverse HTTP Gateway server is to perform client authentication itself in addition to passing authentication information to the Internal Server for processing. The default is false. If this property is set to true, the Reverse Gateway Server will reject all anonymous requests (no certificate and no username/password supplied), even if the request is for an unprotected service on the Internal Server. See Performing Client Authentication on the Reverse HTTP Gateway Server on page 345 for more information. watt.server.rg.internalregistration.timeout For Reverse HTTP Gateway configurations only. Specifies the time (in seconds) the Internal Server will wait before closing an unresponsive connection to the Reverse Gateway Server. The default is 0, which means do not time out (a timeout period of infinity). watt.server.scheduler.deleteCompletedTasks Specifies whether or not scheduled tasks that have expired should be automatically deleted. When set to true, Integration Server deletes expired tasks when they expire. Set this parameter to false if you want Integration Server to wait until the next server restart to delete expired tasks. The default is true. watt.server.scheduler.ignoreReferenceValidationErrors Specifies whether Integration Server creates or executes a scheduled task if the scheduled service has a broken reference. Set the property to true to indicate that Integration Server ignores broken references for the scheduled service when executing a scheduled task. Set it to false to indicate that Integration Server should not execute a scheduled task if the scheduled service has one or more broken references. The default is false. watt.server.scheduler.logical.hostname Specifies a unique logical name to identify Integration Server instances in a cluster hosted on a single machine. By default, Integration Server uses the host name to identify itself while scheduling tasks. However, when a cluster of Integration Servers are hosted on a single machine, the host name itself cannot uniquely identify the individual Integration Server instances. In such cases, use the watt.server.scheduler.logical.hostname property to specify a unique logical name to identify individual Integration Server instances. The default value for this parameter is the host name. Keep the following points in mind when setting the watt.server.scheduler.logical.hostname property: Set this property only if you are running multiple Integration Servers in a cluster on a single machine. Set this property on each Integration Server instance in the cluster before scheduling any tasks. The logical host name you specify must be unique. The logical host name you specify cannot contain a semicolon (;).
579
This property is also useful when Integration Server is installed on a virtual server whose host name or IP address might change over time. You can use watt.server.scheduler.logical.hostname to provide a fixed value that identifies each server in a cluster. If you change the setting of this parameter, you must restart Integration Server for the changes to take effect. watt.server.scheduler.maxWait Maximum time in seconds Integration Server waits between queries of the task queue. The server periodically checks the queue for tasks that are scheduled to run. If there are no tasks waiting to run, the server waits the maxWait time before checking the queue again. If there are tasks waiting to run, the server checks again at the task's schedule execution time, or after the maxWait time, whichever is earlier. For example, if the pending task is due to execute in 30 seconds and the maxWait time is 60, the server will check the queue again in 30 seconds. The default is 60. If you run a cluster of Integration Servers and schedule a task to run on all servers in the cluster, you might notice tasks starting at different times on the different servers if the servers have different settings for this property. For this reason, if you are running in a clustered environment, all the servers in your cluster should have the same settings for this property. See the webMethods Integration Server Clustering Guide for more information about configuring Integration Servers in a cluster. watt.server.scheduler.notificationtask.display Specifies whether scheduled adapter polling notification tasks are shown on the Scheduler screen. When this parameter is set to false (the default), these tasks are hidden. When this parameter is set to true, these tasks are displayed. Typically, you will not display these tasks, but it can be useful to do so if you need to troubleshoot an issue. For example, with the tasks displayed, you can identify scheduled tasks running in the background that are not linked with a polling notification, and delete them. This parameter has no effect unless the watt.pkg.art.pollingnotification.scheduler parameter is set to true. For complete information about configuring adapter polling notifications, see the adapter's documentation. watt.server.scheduler.threadThrottle Percentage of Integration Server threads the scheduler process is permitted to use. The default is 75%. watt.server.securePort Specifies the port number of the Integration Server's primary secured listening port. The default is 0. watt.server.serverlogQueueSize Controls the number of entries allowed in the server log queue. This property is related to the watt.server.log.queued property, which controls whether the server is to write entries directly to the server log, or queue them in memory first and then use a background thread to write them to the server log. If your configuration has the watt.server.log.queued property set to true and you notice that expected server log
580
entries are not included in the log, try increasing the queue size. For more information about the server log and the server log queue, see Specifying Whether to Queue Server Log Entries on page 153. The default queue size is 8192. watt.server.serviceMail Specifies the e-mail address to which Integration Server sends messages about service failures. There is no default. When you specify an e-mail address on this parameter, Integration Server creates a simple scheduled task to perform the notification. This task requires a thread, which Integration Server takes from the cronjob-based thread pool. See the watt.server.cron.maxThreads and watt.server.cron.minThreads parameters for more information about this thread pool. watt.server.session.stateful.enableLimit Controls whether the stateful session limit feature is enabled. When this property is set to true, Integration Server allows stateful sessions to be created as needed until it reaches the maximum allowed, which is specified by the watt.server.session.stateful.max property. You can view statistics for stateful sessions on the Server > Statistics screen in Integration Server Administrator. watt.server.session.stateful.max Specifies the number of concurrent stateful sessions allowed on the Integration Server. If a user attempts to access the server and execute a stateful service while the maximum number of stateful sessions are in use, the server rejects the request and returns an error to the user. The value for watt.server.session.stateful.max must be a positive integer. If a value is not specified or the watt.server.session.stateful.enableLimit property is set to false, the maximum number of concurrent sessions is defined by your Integration Server license. Note: It is recommended that you use the Maximum Stateful Sessions field in the Edit Resource Settings page of the Integration Server Administrator to set the maximum value. For more information about setting a maximum limit for stateful sessions, see Managing Server Sessions on page 88. watt.server.session.stateful.warning Specifies the threshold at which Integration Server starts to warn of insufficient available stateful sessions. When the percentage of available stateful sessions is equal to or less than the value of this property, Integration Server generates a server log message stating: The default is 25%. Note: It is recommended that you use the Enable Stateful Session Limit field in the Edit Resource Settings page of the Integration Server Administrator to set the threshold value. For more information about setting an available stateful sessions warning threshold, see Managing Server Sessions on page 88.
581
watt.server.smtpServer Specifies the SMTP server to use for server error logging and service error e-mail notification. There is no default. watt.server.smtpServerPort Specifies the number of the listening port on the SMTP server to which the Integration Server is to send server error logging and service error e-mail notification. The default is 25. watt.server.smtpTransportSecurity Specifies the type of SSL encryption that Integration Server uses when communicating with an SMTP server. Set this property to any one of the following values: When set to...
None
Integration Server... Uses a non-secure mode when communicating with an SMTP server. When you specify None, the SMTP server authenticates the SMTP client using only the username and password.
Explicit
Uses explicit security when communicating with an SMTP server. With explicit security, Integration Server establishes an un-encrypted connection to the SMTP server and then upgrades to the secure mode. Uses implicit security when communicating with an SMTP server. With implicit security, Integration Server always establishes an encrypted connection to the SMTP server. Only clients that support SSL will be permitted access.
Implicit
watt.server.smtpTrustStoreAlias Specifies the alias for the truststore that contains the list of certificates that Integration Server uses to validate the trust relationship between Integration Server and the SMTP server. If you do not specify a truststore alias, the default truststore alias specified in the watt.security.trustStoreAlias property will be used. For more information about truststore alias, see Creating Keystore Aliases on page 243. watt.server.SOAP.addEmptyHeader Specifies whether Integration Server should create an empty header entry in the SOAP message created by executing the pub.soap.utils:createSoapData or pub.soap.utils:stringToSoapData services. When this property is set to true, Integration Server creates an empty header in the SOAP message. When this property is set to false, Integration Server does not create a header entry in the SOAP message. The default is true. The addEmptyHeader parameter in the pub.soap.utils:createSoapData service, if set, overrides the watt.server.SOAP.addEmptyHeader setting. For more information about pub.soap.utils:createSoapData and pub.soap.utils:stringToSoapData services, see webMethods Integration Server Built-In Services Reference.
582
watt.server.SOAP.completeLoad Specifies whether the XML node added by pub.utils:addBodyEntry, pub.utils:addHeaderEntry, pub.utils:addTrailer will be completely loaded before adding to the SOAP message. When set to true, Integration Server loads the entire XML node. When set to false, Integration Server does not completely load the XML node before adding it to the service. The default is true. watt.server.soap.convertPlainTextHTTPResponseIntoSOAPFault Specifies how Integration Server returns the response from a Web service invocation when it is acting as a client and the Web service results in a plain text HTTP response. This parameter applies only when the was created using: Integration Server version 8.2 or later, but the s Pre-8.2 compatibility mode property is
true
A version of Integration Server prior to version 8.2 When the watt.server.soap.convertPlainTextHTTPResponseIntoSOAPFault parameter is set to true (the default), Integration Server converts the plain text HTTP response and returns the information from the HTTP response within Web service connector's output parameters. If the was created using Integration Server version 8.2 or later and the Pre-8.2 compatibility mode property is true, Integration Server returns the converted HTTP payload in the s fault/reasons output parameter. If the was creating using a version of Integration Server prior to version 8.2, Integration Server returns the converted HTTP payload in one of the following based on the SOAP protocol in use:
SOAP-FAULT/Fault_1_1/faultstring SOAP-FAULT/Fault_1_2/SOAP-ENV:Reason/SOAP-ENV:Text
Having the plain text HTTP response converted and returned in the s output parameter can be helpful because it might contain the cause of the exception. If you set the parameter to false, when the Web service results in a plain text HTTP response, Integration Server throws an exception indicating that an invalid SOAP envelope is received. After updating this parameter, you must restart Integration Server for changes to this parameter to take effect. watt.server.SOAP.defaultProtocol Specifies the default protocol that Integration Server uses for new SOAP messages. Specify SOAP 1.1 Protocol or SOAP 1.2 Protocol. The default is SOAP 1.1 Protocol. watt.server.SOAP.directive Specifies a different word to use for the SOAP directive in URLs that route requests to the Integration Server SOAP handler. By default, this parameter is set as watt.server.SOAP.directory=soap, which means users must specify the SOAP directive as soap (http://host:port/soap). To allow users to specify the SOAP directive as a
583
different word instead, set this parameter to that word. For example, to allow users to specify the SOAP directive as endpoint, (http://host:port/endpoint), set this parameter as watt.server.SOAP.directive=endpoint. watt.server.SOAP.encodeXSIType Indicates where the xsi:type will appear as an attribute for an element in a SOAP message that specifies RPC/Encoded. A value of true indicates that Integration Server includes the xsi:type attribute for an element. False indicates that the xsi:type attribute will be omitted. The default is true. Software AG recommends using a value of true for this parameter. watt.server.SOAP.generateNilTags Specifies whether or not Integration Server generates an xsi:nil attribute for an element in a SOAP message. When set to true, Integration Server generates an xsi:nil attribute for an element that is nillable (the Allow null property for the corresponding field is set to true) and the field is null at run time. When watt.server.SOAP.generateNilTags is set to false, Integration Server omits the xsi:nil attribute for an element even if the corresponding field is nillable and the field is null at run time. The default is true. watt.server.SOAP.MTOMStreaming.cachedFiles.location Specifies the absolute path to the hard disk drive space that Integration Server uses to temporarily store inbound SOAP messages when performing MTOM streaming. This parameter takes effect only when MTOM streaming is enabled (i.e., watt.server.SOAP.MTOMStreaming.enable is set to true). You can specify a directory on the same machine as the Integration Server or in any other location accessible to Integration Server, such as a mapped logical drive or network directory. The default value is Integration Server_directory/temp/mtom/cached files. Note: If your Integration Server is in a clustered environment, you must set this property in all the servers in the cluster. See webMethods Integration Server Clustering Guide for more information about configuring Integration Server in a cluster. watt.server.SOAP.MTOMStreaming.enable Indicates whether MTOM streaming is enabled for inbound SOAP messages. Set this property to true to enable MTOM streaming or false to disable MTOM streaming. The default is false. watt.server.SOAP.MTOMStreaming.threshold Specifies the number of bytes an MTOM attachment in an inbound SOAP message must be before Integration Server uses MTOM streaming for the MTOM attachment. This parameter takes effect only when MTOM streaming is enabled (i.e., watt.server.SOAP.MTOMStreaming.enable is set to true). Set the property to a positive integer to indicate the number of bytes for the MTOM streaming threshold. Integration Server uses MTOM streaming when an MTOM attachment is larger than the number of bytes you specify. The default is 4000 bytes. watt.server.SOAP.MTOMThreshold Specifies the field size, in kilobytes, that determines whether Integration Server handles base64binary encoded data in an outbound SOAP request as a MIME attachment or whether it sends it inline in the SOAP message. If the for the SOAP message enables
584
attachments for the SOAP request, Integration Server passes as MIME attachments any base64 fields in a SOAP message that are larger than the threshold. This only applies to SOAP 1.2 messages. The default is 0. watt.server.SOAP.request.timeout Specifies the length of time, in seconds, Integration Server will wait for the SOAP response from the server hosting the remote procedure. If Integration Server does not receive a response in the allotted time, it terminates the request. The default value is -1, which indicates that Integration Server will use the value set for the watt.net.timeout property. watt.server.SOAP.useMultiReference For elements that appear in multiple places in a SOAP message, specifies whether Integration Server serializes each occurrence of the element or serializes it in on only one place and uses the href attribute in the other locations. When set to true, Integration Server serializes one location and uses the href attribute in other locations. This parameter applies to RPC/Encoded Web services only. The default is true. watt.server.soap.validateResponse Enables or disables SOAP response validation. When set to true, Integration Server validates the SOAP response received by a Web service connector. When set to false, Integration Server does not validate the received SOAP response. The default is true. watt.server.SOAP.validateSOAPMessage When Integration Server acts as the Web service provider, indicates whether Integration Server validates inbound SOAP requests and outbound SOAP responses. When set to true, Integration Server validates inbound SOAP requests and outbound SOAP responses. The default is false. watt.server.soapJMS.defaultMessageType Specifies the default message type for Web service request messages sent using SOAP over JMS. Set this parameter to "BytesMessage" to send a message whose body contains a stream of uninterrupted bytes. Set this parameter to "TextMessage" to send a message whose body contains a Java string. BytesMessage is considered to be a more efficient way of sending JMS messages. However, you may want to set the parameter to TextMessage for debugging purposes because the resulting messages will be in a human-readable format. Keep in mind that the message type of the request message determines the message type of the response message. The default is BytesMessage. You must restart Integration Server for changes to this parameter to take effect. Note: The default message type can be overwritten during Web service connector execution by setting the jms.messageType property in the transportHeaders input parameter. Note: If you set this parameter to TextMessage, Integration Server sends all Web service responses as TextMessage. If the request message is a BytesMessage and watt.server.soapJMS.defaultMessageType is set to TextMessage, Integration Server overrides the request message type and sends the response as a TextMessage. This can be useful in debugging situations.
585
watt.server.soapjms.request.timeout Specifies the number of seconds that Integration Server waits for a response to a SOAP request sent using SOAP over JMS. This value must be an integer greater than or equal to zero. A value of 0 indicates that Integration Server will wait indefinitely for a response. The default is 10 seconds. You must restart Integration Server for changes to this parameter to take effect. watt.server.SoapRPC.useSecondaryType Instructs Integration Server to use a second type definition when creating the SOAP response for a service whose input or output signatures contain identically named variables of different types. When creating a WSDL from a provider that contains a service with identically named fields of different types, Integration Server renames the second instance of the field type in the WSDL. At run time, for RPC-Encoded SOAP binding, Integration Server encodes the types in the SOAP response. When this property is set to true, the SOAP response refers to the renamed type definition. When set to false, the SOAP response refers to the original type definition instead of the renamed one. The default is false. This property is applicable to RPC-Encoded SOAP binding only. watt.server.stats.avgTime Specifies the time period (in seconds) for which performance metrics are averaged. The default is 10. watt.server.stats.logfile Specifies the name of the file to receive statistics. The default is logs\stats.log. watt.server.stats.pollTime Specifies the number of seconds between updates of statistics loggings. The default is 60. watt.server.storage.lock.maxDuration Specifies the maximum number of milliseconds a pub.storage service will hold a lock. The default value is 180000 milliseconds (3 minutes). watt.server.storage.lock.maxWait Specifies the maximum number of milliseconds a pub.storage service will wait to obtain a lock. The default value is 240000 milliseconds (4 minutes). watt.server.storage.lock.sweepInterval Specifies how often (in seconds) Integration Server deletes expired pub.storage locks. An expired pub.storage lock is one that is older than the value specified on the watt.server.storage.lock.maxDuration parameter. The default is 10 seconds. If the watt.server.storage.lock.sweepInterval parameter is set to a value less than one, Integration Server ignores the setting and uses 10 seconds instead. Integration Server does not have to be restarted for changes to this property to take effect. watt.server.strictAccessExceptionLogging Specifies whether Integration Server will log HTTP 401 Access Denied as an error and trigger a notification. When this property is set to true, Integration Server will log HTTP 401 AccessDenied as an error and trigger notifications. When this property is set to false, Integration Server will not log HTTP 401 Access Denied as an error and will not trigger a notification. The default is false.
586
watt.server.suppresscwarn Specifies whether, when running a C service in Designer or Developer, Integration Server should write the warning messages issued about the missing variables to the server log. When this property is set to true, Integration Server does not write these messages to the server log. When this property is set to false, Integration Server writes messages about missing variables to the server log. The default is false. watt.server.sync.timeout Specifies the time period that a lock object exists for a given key for which a notification has been issued. After calling a pub.sync:notify service to create the notification, a pub.sync:wait can receive the notification. Any thread that is waiting for a notification for the key, receives the notification as long as the lifespan of the wait request overlaps with the lifespan of the notification. However, if a thread with an exclusive wait is registered for the notification key before any other service is waiting, the notification ends as soon as the exclusive wait receives the notification. The default is 60 seconds. watt.server.threadKill.enabled Controls whether the thread kill facility is enabled. This facility allows you to cancel or kill service threads in cases where a service is unresponsive. When you cancel a thread, Integration Server frees up resources that are held by the thread. When you kill a thread, Integration Server stops the thread, releases it from the threadpool, and replenishes the threadpool. The default is true. When the thread kill facility is enabled, you can cancel or kill threads by going to the Server > Statistics > System Threads screen. For more information about canceling and killing threads, refer to Canceling and Killing Threads Associated with a Service on page 420. watt.server.threadKill.timeout.enabled Controls how Integration Server handles the timeout setting of flow steps. Flow steps have a timeout property that controls how long the step can run. By default (true), when the step has exceeded the timeout period, Integration Server raises a FlowTimeoutException, and flow execution continues with the next step. When this property is set to false, it is possible for the flow step to run beyond its timeout period, in some cases. For instance, if a flow step calls another service, for example ServiceA, and ServiceA is executing when the timeout period has passed, ServiceA will continue executing past the timeout period. When ServiceA ends, it passes control back to the parent flow service, which then issues an exception. watt.server.threadPool Specifies the maximum number of threads that the server maintains in the thread pool that it uses to run services. If this maximum number is reached, the server waits until services complete and return threads to the pool before running more services. The default is 75. watt.server.threadPoolMin Specifies the minimum number of threads that the server maintains in the thread pool that it uses to run services. When the server starts, the thread pool initially contains this minimum number of threads. The server adds threads to the pool as needed until it reaches the maximum allowed, which is specified by the watt.server.threadPool setting. The default is 10.
587
watt.server.transaction.recovery.abandonTimeout If an error occurs while Integration Server tries to resolve an uncompleted XA transaction, specifies the maximum length of time (in minutes) during which Integration Server should make additional attempts. The default is 5 minutes. watt.server.transaction.recovery.sleepInterval If an error occurs while Integration Server tries to resolve an uncompleted XA transaction, specifies the length of time (in seconds) that Integration Server waits between additional attempts. The default is 30 seconds. watt.server.trigger.interruptRetryOnShutdown Specifies whether or not a request to shut down the Integration Server interrupts the retry process for a Broker/local trigger service. If this parameter is set to false, Integration Server waits for the maximum retry attempts to be made before shutting down. Integration Server will also shut down if the trigger service executes successfully during a retry attempt. If this parameter is set to true, Integration Server waits for the current service retry to complete. If the Broker/local trigger service needs to be retried again (the service ends because of an ISRuntimeException), the Integration Server stops the retry process and shuts down. Upon restart, the transport (the Broker or, for a local publish, the transient store) redelivers the document to the trigger for processing. The default is false. watt.server.trigger.keepAsBrokerEvent Specifies whether Integration Server should bypass decoding that is normally performed when documents are retrieved from the Broker on behalf of a Broker/local trigger. If this property is set to true, Integration Server passes the value of the Broker event to the trigger service in an object called $brokerEvent and no decoding is performed. Set this parameter to true if Integration Server is receiving native Broker events. The default is false. For more information about publishing native Broker events, see the Publish-Subscribe Developers Guide. watt.server.trigger.local.checkTTL Specifies whether Integration Server should strictly enforce a locally published document's time-to-live. When this parameter is set to true, before processing a locally published document in a trigger queue, Integration Server determines whether the document has expired. Integration Server discards the document if it has expired. The default is false. watt.server.trigger.managementUI.excludeList Specifies a comma-delimited list of triggers to exclude from the Broker/Local Trigger Management pages in Integration Server Administrator. Integration Server also excludes these Broker/local triggers from trigger management changes that suspend or resume document retrieval or document processing for all triggers. Integration Server does not exclude these Broker/local triggers from changes to capacity, refill level, or maximum execution threads that are made using the global trigger controls (Queue Capacity Throttle and Trigger Execution Threads Throttle).
588
You can specify the fully qualified names of all the Broker/local triggers that you want to exclude. You can also use pattern matching to exclude a group of triggers by specifying the beginning portion of the fully qualified name and following it with an asterisk (*). The Integration Server excludes all triggers that begin with the supplied pattern. For example, if you want to exclude all triggers located in the pub.prt folder, specify:
watt.server.trigger.managementUI.excludeList = pub.prt*
watt.server.trigger.monitoringInterval Specifies the interval, measured in seconds, at which Integration Server executes resource monitoring services for Broker/local triggers. A resource monitoring service is a service that you create to check the availability of resources used by a trigger service. When it suspends a Broker/local trigger because all retry attempts have failed, Integration Server executes the resource monitoring service to determine if all the resources are available. The default is 60 seconds. For more information about resource monitoring services, see the Publish-Subscribe Developers Guide. watt.server.trigger.preprocess.suspendAndRetryOnError Indicates whether Integration Server suspends a Broker/local trigger if an error occurs during the preprocessing phase of trigger execution. The preprocessing phase encompasses the time from when the trigger retrieves the document from its local queue to the time the trigger service executes. When this property is set to true, Integration Server suspends a Broker/local trigger if one of the following occurs during preprocessing: The document history database is not available when Integration Server performs duplicate detection for the trigger. If the document history database is properly configured, Integration Server suspends the trigger and schedules a system task that executes a service that checks for the availability of the document history database. Integration Server resumes the trigger and re-executes it when the service indicates that the document history database is available. If the document history database is not properly configured, Integration Server suspends the trigger but does not schedule a system task to check for the database's availability and will not resume the trigger automatically. You must manually configure the trigger after configuring the document history database properly. The document resolver service ends because of an ISRuntimeException. Integration Server suspends the trigger and schedules a system task to execute the trigger's resource monitoring service (if one is specified). Integration Server resumes the trigger and retries trigger execution when the resource monitoring service indicates that the resources used by the trigger are available. If a resource monitoring service is not specified, you will need to resume the trigger manually (via the Integration Server Administrator or the pub.trigger:resumeProcessing and pub.trigger:resumeRetrieval services). When this property is set to false, Integration Server does not suspend the Broker/local trigger if a preprocessing error occurs during trigger execution. If the document history database is not available, Integration Server executes the specified document resolver service to determine the status of the document. Otherwise, Integration Server assigns
589
the document a status of In Doubt, acknowledges the document, and uses the audit subsystem to log the document. If the document resolver service ends because of an ISRuntimeException, Integration Server assigns the document a status of In Doubt, acknowledges the document, and uses the audit subsystem to log the document. The default is true. For more information about building a resource monitoring service, see the PublishSubscribe Developers Guide. watt.server.trigger.removeSubscriptionOnReloadOrReinstall Specifies whether Integration Server deletes document type subscriptions for Broker/local triggers when the package containing the trigger reloads or an update of the package is installed. If this property is set to true (the default) and a package reloads or an update of the package is installed, Integration Server deletes and then recreates any document type subscriptions for Broker/local triggers in the package. (If Integration Server connects to a Broker, Integration Server deletes and recreates the subscriptions on the trigger client on the Broker.) This creates a small window of time during which the document type subscriptions do not exist. During this window, the trigger will not receive documents to which it normally subscribes. If this property is set to false, Integration Server does not delete and then recreate document type subscriptions for Broker/local triggers when the package reloads or is updated. Although Integration Server creates new document type subscriptions for triggers, Integration Server does not modify existing subscriptions. Specifically, if a trigger deleted a document type subscription, the subscription will not be removed when the package reloads or is updated. Consequently, when this property is set to false, the trigger might receive document types to which it no longer subscribes because the deleted document type subscriptions still exist on the trigger client on the Broker. When working with a 6.5.2 version of webMethods Broker, you can use My webMethods to delete the obsolete document type subscriptions from the trigger client on the Broker. The default is true. Note: This property does not affect triggers running in a cluster of Integration Servers. watt.server.trigger.reuseSession Indicates whether instances of a Broker/local trigger use the same session on Integration Server when the document locale is the same as the default locale of Integration Server. When this property is set to true, Integration Server checks the locale of the document before processing it. If the document locale is the same as the default locale of Integration Server, or no locale is specified, the trigger uses a shared session. If the document locale is different from the default, then Integration Server creates a new session for the trigger to use to process that document. When this property is set to false, Integration Server uses a new session for each instance of a trigger. The default is false. Reusing sessions for a JMS trigger might improve performance. However, this property does not work with all adapters. watt.server.trigger.suspendOnAuditErrorWhen Specifies when Integration Server should suspend a Broker/local trigger. A trigger can be suspended when both the following occur:
590
The trigger service fails. The trigger service cannot write audit data to the audit database because an audit exception occurs. When Integration Server suspends a Broker/local trigger, it halts document processing and document retrieval for the trigger. Suspending the trigger prevents Integration Server from acknowledging the document and prevents the Broker from discarding the document. After suspending the trigger, Integration Server monitors the connection to the audit database and resumes the trigger (document processing and document retrieval) when the connection to the audit database is re-established. Integration Server retrieves the unacknowledged document from the Broker and attempts to process it again. Set the watt.server.trigger.suspendOnAuditErrorWhen parameter to one of the following values: Specify...
Never
To... Indicate that Integration Server does not suspend a trigger if the trigger service ends because of an error and an audit exception occurs when the trigger service attempts to write data to the audit database. Indicate that Integration Server suspends a trigger if the trigger service ends because of an error and an audit exception occurs when the trigger service attempts to write data to the audit database. Indicate that Integration Server suspends a trigger if the trigger service ends because of an error, the trigger service is configured to include the service pipeline in the audit log, and an audit exception occurs when the trigger service attempts to write data to the audit database. The default is ErrorPipelineEnabled.
Error
ErrorPipelineEnabled
Integration Server must be restarted for any changes to this parameter to take effect. The watt.server.trigger.suspendOnAuditErrorWhen configuration parameter only applies when the audit subsystem is configured to write data synchronously. watt.server.tspace.location Specifies the absolute directory path of the hard disk drive space in which the Integration Server is to temporarily store large documents rather than keep them in memory. Each file that the Integration Server stores in this directory is given the name DocResxxxxx.dat, where xxxxx is a value that can vary in length and character. Specify the absolute directory path to a directory on the same machine as the Integration Server. The default value is JVM's temporary directory (i.e., the value of java.io.tmpdir). Example: If you want the Integration Server to use the LargeDocTemp directory on your D drive, specify the following:
watt.server.tspace.location=D:\LargeDocTemp
591
If you have a cluster of Integration Servers, each one must have its own Tspace. Important! You must restart Integration Server after you modify the value of this property. watt.server.tspace.max Specifies the maximum number of bytes that can be stored at any one time in the hard disk drive space that you defined using the watt.server.tspace.location property. If the Integration Server attempts to write a large document to the hard disk drive space that will cause the number of bytes you specify to be exceeded, an error message is displayed on the server console, and the document is not stored. Specify a positive whole number of bytes. The default value is 52,428,800 bytes (50 MB). Example: To set the maximum number of bytes that can be stored to 30,000,000 bytes, specify the following:
watt.server.tspace.max=30000000
Tip! The size of the hard disk drive space for temporarily saving documents will vary based on the number of documents that you process concurrently and the size of the documents that you process. For example, if your typical concurrent document load is 10, you would need a hard disk drive space that is 10 to 15 times the combined size of the documents being processed concurrently. Important! You must restart the Integration Server after you modify the value of this property. watt.server.txMail Specifies the e-mail address of an administrator to notify when guaranteed delivery capabilities are disabled due to an error (for example, if the Integration Server encounters a disk full condition or if the audit-trail log is full). There is no default. watt.server.tx.cluster.lockBreakSecs Specifies the number of seconds a cluster server waits before breaking a lock on a job in a cluster job store. The default is 120. You must be using webMethods Integration Server Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.tx.cluster.lockTimeoutMillis Specifies the number of milliseconds a cluster server sleeps between attempts to place an update lock on a job in a cluster job store. The default is 100. You must be using webMethods Integration Server Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.tx.heuristicFailRetry Specifies whether the Integration Server is to re-execute services for guaranteed delivery transactions in the job store that are pending when the Integration Server is restarted after a failure. If a transaction is pending, the service began execution before the Integration Server failed.
592
If the setting is true, the Integration Server resets the transaction status from pending to new, and the service will be re-executed. If the setting is false, the Integration Server resets the transaction status from pending to fail to indicate the heuristic failure, and the service will not be re-executed. The default is true. watt.server.tx.sweepTime Specifies the number of seconds between sweeps (clean up) of the job store for inbound guaranteed delivery transactions. The server sweeps the job store to remove expired transactions. The default is 60. watt.server.userFtpRootDir Specifies the FTP root directory that the Integration Server will create at startup. When any Integration Server user logs into the FTP Listener, the server creates that user's FTP home directory in this root directory, for example FtpRoot/username. You can specify any directory to be the root directory, including a mapped network directory. If this property is not defined, a default directory named userFtpRoot is created in your Integration Server home directory. The user who connects to Integration Server through FTP listener is placed either in the default FTP root directory or the client user directory as defined in the watt.server.login.userFtpDir property. Administrators, Replicators, and non-privileged users can perform put and get operations in the following directories: This user... Administrator Can access... admin (in the Integration Server home directory) The Administrator's own user directory The entire namespace for all packages, including WmRoot All other user directories Replicator The Integration Server_directory\replicate directory Any services in the namespace that have Replicator ACL or lower The Replicator's own user directory Non-privileged user The user's own user directory Any services that have an ACL at or below the level of the user's ACL When a user completes a put command in his or her own user directory (that is, when the STOR command is completed on the server side but before the server acknowledges the client with return code 226), an event is fired to notify interested parties by publishing a pub.client.ftp:putCompletedNotification document to the webMethods Broker. EDI packages will subscribe to this document and will retrieve the file just put onto the server.
593
Note: The STOU command is not supported on the Integration Server. However, it is supported for clients. See the following built-in services in the webMethods Integration Server Built-In Services Reference: pub.client.ftp, pub.client.ftp:put, and pub.client.ftp:mput. watt.server.users.listWmOnly Specifies whether the server displays external users and groups on the Integration Server Administrator. When this value is set to true, the Integration Server Administrator displays native users and groups only. When the value is set to false (the default), the Integration Server Administrator also displays users and groups from external directories defined to the server. watt.server.ws.71xHandlerChainBehavior Specifies whether Integration Server uses the 7.1x handler chain processing behavior when executing handlers for a created in 7.1x. When set to true, Integration Server uses the handler chain processing behavior available in Integration Server version 7.1x for a 7.1x . When set to false, Integration Server uses the handler chain processing behavior available in Integration Server 8.0 for a 7.1x . The default is false. watt.server.ws.defaultNamespace This is an internal property. Do not modify. watt.server.ws.defaultPrefix Specifies the prefix assigned to the namespace http://www.webMethods.com/2001/10/soap/encoding for use in details for SOAP faults. The default is webM. watt.server.ws.security.timestampMaximumSkew Specifies the maximum number of seconds that the Web services client and host clocks can differ so that the timestamp expiry validation does not fail. Integration Server validates the inbound SOAP message only if the creation timestamp of the message is less than the sum of the timestamp maximum skew value and the current system clock time. You can use this parameter to set the timestamp maximum skew value when Integration Server uses WS-Security policy to implement security and if you have not set a value in the Timestamp Maximum Skew field in the Create Web Service Endpoints Alias screen. The value must be a positive integer or zero. The default is 300 seconds. watt.server.ws.security.timestampPrecisionInMilliseconds Specifies whether the timestamp placed in the Timestamp element of the security header of an outbound message is precise to seconds or milliseconds. If you set the precision to milliseconds, Integration Server uses the timestamp format yyyy-MMdd'T'HH:mm:ss:SSS'Z'. If you set the precision to seconds, Integration Server uses the timestamp format yyyy-MM-dd'T'HH:mm:ss'Z'. You can use this parameter to set the precision when Integration Server uses WS-Policy to implement WS-Security and if you have not set a value in the Timestamp Precision field in the Create Web Service Endpoints Alias screen. Set this property to true, if you want the timestamp precision set to milliseconds. Set this property to false, if you want the timestamp precision set to seconds. The default is true.
594
watt.server.ws.security.timestampTimeToLive Specifies the time-to-live value for an outbound message in seconds. Integration Server uses this value to set the expiry time in the Timestamp element of outbound messages. You can use this parameter to set the time-to-live value when Integration Server uses WSPolicy to implement WS-Security and if you have not set a value in the Timestamp Time to Live field in the Create Web Service Endpoints Alias screen. The value must be an integer greater than 0. The default is 300 seconds. watt.server.wsdl.debug Specifies whether Integration Server prints debug information to standard out and stack traces to standard error while generating or consuming WSDL. When set to true, Integration Server prints debug information to standard out and stack traces to standard error. The default is false. watt.server.wsdl.validateWSDLSchemaUsingXerces This is an internal property. Do not modify. watt.server.xml.enforceEntityRef Specifies whether the server will throw an exception when the XML parser detects a malformed entity. If the value is set to true, the server will throw an exception when it detects a malformed entity in an XML or DTD. If the value is set to false (the default), the server will allow malformed entities and does not throw an exception. watt.server.xml.xmlNodeToDocument.keepDuplicates Specifies whether the pub.xml:xmlNodeToDocument service keeps additional occurrences of an element in an XML node when arrays are not created (the makeArrays input parameter is set to false). This parameter also determines whether or not the pub.event.eda:eventToDocument service keeps additional occurrences of an element in the XML document passed into the service. When set to true, the document produced by the pub.xml:xmlNodeToDocument service contains multiple occurrences of the element. When set to false, the document produced by the pub.xml:xmlNodeToDocument service keeps only the last occurrence of the element. The default is true. For example, suppose the following XML node is provided as input to the pub.xml:xmlNodeToDocument service:
<?xml version="1.0" encoding="UTF-8"?><myDoc><e1 e1Attr="attrValue1">e1Value1</e1><e2>e2Value</e2><e1 e1Attr="attrValue2">e1Value2</e1></myDoc>
When watt.server.xml.xmlNodeToDocument.keepDuplicates is set to true, the pub.xml:xmlNodeToDocument service produces this document:
595
When watt.server.xml.xmlNodeToDocument.keepDuplicates is set to false, the pub.xml:xmlNodeToDocument service produces this document:
Note that only the last <e1> element in the source XML is retained in the resulting document.
watt.ssl.
watt.ssl.accelerator.provider Enables the use of the SSL accelerator provided with a T1/T2 processor on a Solaris 10 OS machine. The only value you can specify with this parameter is SunPKCS11-Solaris. To use this accelerator, Integration Server must be running with JVM 1.5 and the HSM Based Keystore field must be set to true on the Security>Keystore>Create Keystore Alias screen. If you do not specify this parameter, SSL ports will be able to use the nCipher accelerator only. To use this accelerator, the HSM Based Keystore field must be set to True on the Security>Keystore>Create Keystore Alias screen.
watt.tnextdc.
watt.tnextdc.pollinterval This is an internal parameter. Do not modify.
596
watt.tx.
watt.tx.defaultTTLMins Specifies the default time-to-live (TTL) value for outbound guaranteed delivery transactions. Specify the number of minutes you want the server to maintain outbound transactions in the job store when a service initiating an outbound transaction does not specify a TTL value. The default is 30. watt.tx.disabled Specifies whether you want to disable the use of guaranteed delivery for outbound transactions. By default, the server allows the use of guaranteed delivery for outbound transactions. The default is false. watt.tx.heuristicFailRetry Specifies whether Integration Server is to re-execute services for guaranteed delivery transactions in the job store that are pending when Integration Server is restarted after a heuristic failure. If the transaction status is pending, it means that the service began execution before Integration Server failed. If watt.tx.heuristicFailRetry setting is true, Integration Server resets the transaction status from pending to new, and Integration Server will retry the service. When the setting is true, a request to execute a service can only fail if the transaction expires before Integration Server executes the service. If the setting is false, Integration Server resets the transaction status from pending to fail to indicate the heuristic failure, and Integration Server does not retry the service. When the setting is false, a request to execute a service can fail due to a heuristic failure or due to the transaction expiring. The default is true. watt.tx.jobThreads Specifies the number of client threads you want to make available in a thread pool to service pending requests in the outbound guaranteed delivery job store. The default is 5. watt.tx.retryBackoffTime Specifies the number of seconds to wait after a service request failure before the Job Manager resubmits the request to execute the service to the Integration Server. The default is 60. watt.tx.sweepTime Specifies the number of seconds between sweeps of the job store of outbound guaranteed delivery transactions. The server sweeps the job store to identify transactions that it needs to submit. The default is 60. watt.tx.vm.id Specifies an Integration Server ID. Use this parameter when multiple Integration Servers are running on the same host machine and they all use guaranteed delivery. By specifying a unique ID for each Integration Server, you prevent the creation of duplicate guaranteed delivery transaction IDs. The value must be an integer from 0 through 2147483647. The default is 0.
597
watt.wm.tnextdc.
watt.wm.tnextdc.configVersion This is an internal parameter. Do not modify.
598
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the Diagnostic Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Diagnostic Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Starting the Integration Server in Safe Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When the Server Automatically Places You in Safe Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Generating Thread Dumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
599
Introduction
This appendix contains information for the server administrator who troubleshoots the Integration Server or maintains diagnostic data from the server. Diagnostic data is the configurational, operational, and logging information from the Integration Server. This information is useful in situations where the server becomes unresponsive and unrecoverable. To facilitate the troubleshooting process, the Integration Server provides the following features: Diagnostic port. A special port that uses a dedicated thread pool. Diagnostic utility. A special service that extracts important diagnostic data from the Integration Server. Safe mode switch. A method of starting the Integration Server in which the server does not connect to any external resource. Thread dump. A facility to generate a log containing information about currently running threads and processes within Java Virtual Machine (JVM), to help diagnose issues with Integration Server.
600
You can also set the thread priority for the diagnostic thread pool. The diagnostic thread priority determines the order of execution when the JVM receives requests from different threads. The larger the number, the higher the priority. When the JVM receives requests from different threads, it will run the thread with the higher priority. Therefore, by assigning a higher priority to the threads in the diagnostic thread pool, you can take advantage of the dedicated thread pool and improve access to the Integration Server Administrator. For more information about how to configure the diagnostic thread pool, see Working with Extended Configuration Settings on page 103.
601
Note: Each time you run this utility, it overwrites the diagnostic_data.zip file that is in the IntegrationServer\logs directory. If you want to keep the previous file, rename or save the file to another directory.
where <hostname> is the ip or name of the machine and <port> is the port number where the Integration Server is running. 3 4 Log on to the Integration Server with a username and password that has administrator privileges. The server displays a dialog box that prompts you to select one of the following: a b c Open the diagnostic data file. Save the diagnostic data file to the file system. Cancel and exit this operation.
602
If you open or save the diagnostic data file, the utility creates the file in the Integration Server_directory\logs directory.
(other switches)
603
System UNIX
Command
bin/startup.sh -safeboot
(other switches)
For information about other switches, see Starting the Server from the Command Line. When you open the Integration Server Administrator, it will display a message indicating that the server is running in safe mode.
These problems can be caused by a corrupted master password file, a corrupted outbound password file, or by simply mis-typing the master password when you are prompted for it. If you suspect you have mis-typed the password, shut down the server and restart it, this time entering the correct password. If this does not correct the problem, refer to When There Are Problems with the Master Password or Outbound Passwords at Startup for instructions.
604
The following example describe how you might use the JVM thread dump and individual thread dumps to diagnose and fix problems. Scenario 1: A Service Is Running Longer than Expected 1 2 3 4 5 A Flow service has been running for a very long time. You suspect the service is in an infinite loop, or is waiting for external resources that are not available. You log in through the Integration Server primary port and navigate to the Statistics > System Threads screen. On the System Threads screen you see threads that are associated with the service in question. You look at individual dumps of those threads. Using the information provided in the dumps, you determine that the threads are experiencing contention issues. You cancel the threads. This action allows the service to complete.
Scenario 2: The Server Is Unresponsive, Users Cannot Log In Through the Primary Port 1 2 3 4 5 6 7 Integration Server is unresponsive and no one can log in through the primary port. You log in through the diagnostic port and navigate to the Statistics > System Threads screen. On the System Threads screen you see multiple threads for the same service. You look at individual dumps of those threads. Based on the information provided in the dumps, you try canceling the threads. The problem persists. You try killing the threads. The problem persists. You perform a JVM dump. Using the information provided in the JVM dump, you determine the cause of the problem and are able to resolve it.
The following procedures show how to generate dumps for individual threads and for the JVM.
605
In the System Threads field, in the Current column, click the number of current threads. The System Threads screen displays. This screen contains a list of all the threads that are currently running on the server.
To view a dump of a particular thread, in the Name column for that thread, click the thread name. The server displays a dump of that thread.
606
607
608
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Working with Integrated Windows Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Activating and Deactivating Integrated Windows Authentication . . . . . . . . . . . . . . . . . . . . . . . . .
609
Overview
This appendix explains how to use Integrated Windows authentication with Integration Server.
610
In the list of packages, click WmWin32. Note: The WmWin32 package is deprecated as of Integration Server 7.1.
5 6 7 8
Click Browse Services in WmWin32. In the list of services, click wm.ntlm:reg. Click Test reg. The server displays the test screen for the win32.ntlm.reg service. Click Test (without inputs). The server activates Integrated Windows authentication. Note: If you want Integrated Windows authentication available whenever Integration Server is running, make the win32.ntlm:reg service a startup service for the Win32 package. For instructions, see Developing Integration Solutions: webMethods Developer Users Guide.
611
612
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How Does the Integration Server Communicate with Wireless Devices? . . . . . . . . . . . . . . . . . . Using URLs for Wireless Access to the Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WML and HDML Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
613
Overview
The webMethods Integration Server can receive requests from and send responses to Internet-enabled wireless devices. A wireless device requests information from the Integration Server the using a URL. The responses sent by the server contain WML (Wireless Markup Language) content or HDML (Handheld Device Markup Language) content. Examples of wireless devices that the Integration Server can communicate with include Internet-enabled wireless phones and Internet-enabled personal digital assistants. You might want to use a wireless device to communicate with the Integration Server to: Check inventory levels at your company or at a supplier. Place an order or check the status of an existing order. Receive order confirmation for an order submitted with a wireless device. Send or receive notification to alert subscribers to trade fulfillments of security price changes. Collect statistics about your Integration Server by using event handlers that send information to wireless devices. Request an HDML or WML page stored on the Integration Server. You access the Integration Server from a wireless device by entering a URL in the Web browser of wireless device. The URL can invoke a service on the Integration Server or can request a WML or HDML page stored on the Integration Server.
614
Stage 1
Description A user requests a URL using a Web browser on a wireless device such as a wireless phone or a personal digital assistant (PDA). The URL indicates the service to be invoked or identifies the requested WML or HDML page. The wireless device sends an encoded request to the wireless gateway. The wireless gateway (such as a Phone.com's Up.Link Server or Nokia Active Server) decodes the request from the wireless device, creates an HTTP or HTTPS request (depending on what is specified in the URL) for the specified URL, and sends it to the Integration Server. The Integration Server does one of the following depending on what the user requested in the URL: Executes the service specified in the URL and inserts the service results into the assigned WML or HDML output template. -ORRetrieves the WML or HDML page requested in the URL.
4 5
The Integration Server sends an HTTP or HTTPS response to the wireless gateway. The wireless gateway removes the HTTP or HTTPS header from the response and sends an encoded response containing the HDML or WML content to the wireless device. The Web browser on the wireless device decodes the response and displays the WML or HDML results.
For more information about wireless gateways and wireless protocol, see www.wapforum.org.
615
Item 1
Description Identifies the name and port number for the Integration Server on which the service you want to invoke resides. Important! For wireless access, the server name (localhost) must be a registered domain name; that is, the server needs to be accessible via the Internet. Important! Many wireless gateways use port 80 as the default registered port number. If you want to use a different port number, make sure to register the server name and port number with the wireless gateway. (For security reasons, Software AG discourages using port numbers below 1024. For more information, see Setting Up Aliases for Remote Integration Servers on page 93.
Specifies the required keyword "invoke", which tells the Integration Server that the URL identifies a service that is to be invoked.
616
Item 3
Description Identifies the folder in which the service to invoke resides. Separate subfolders with periods. This field is case sensitive. Be sure to use the same combination of upper and lower case letters as specified in the folder name on the Integration Server. Identifies the service that you want to invoke. This field is case sensitive. Be sure to use the same combination of upper and lower case letters as specified in the service name on the Integration Server. * Specifies the input values for the service. Specify a question mark (?) before the input values. The question mark signals the beginning of input values. Each input value is represented as a variable=value pair. The variable portion is case sensitive. Be sure to use the same combination of upper and lower case letters as specified in your service. If your service requires more than one input value, separate each variable=value pair with an ampersand (&). Note: Only specify this part of the URL when using the HTTP GET method.
For more information about invoking a service with a URL, see "Building a Browser Based Client" in Developing Integration Solutions: webMethods Developer Users Guide. Note: If you use the URL to invoke a service, make sure that the service applies the output to the appropriate template type (WML or HDML). For more information about creating output templates, see the Dynamic Server Pages and Output Templates Developers Guide.
617
Item 1
Description Identifies the name and port number for the Integration Server on which the file you want to request resides. Important! For wireless access, the server name (localhost) must be a registered domain name; that is, the server needs to be accessible outside via the Internet. Important! Many wireless gateways use port 80 as the default registered port number. If you want to use a different port number, make sure to register the server name and port number with the wireless gateway. (For security reasons, Software AG discourages using port numbers below 1024. For more information, see Setting Up Aliases for Remote Integration Servers on page 93.)
2 3
Identifies the package in which the WML or HDML file you want to request resides. Specifies the pub directory. WML and HDML files that can be served to wireless devices need to reside in this directory. Note: You do not need to specify the pub directory. Integration Server automatically looks in pub for the requested file if no directory is specified.
For example, the following URLs access the hello.wml file from the pub directory for the Wireless package: http://localhost:5555/Wireless/pub/hello.wml -ORhttp://localhost:5555/Wireless/hello.wml
618
You can find the WmSamples package in the certified samples area of the Knowledge Base on the Empower Product Support Web Site
619
620
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling the Level of Exception Logging Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Displaying the Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpreting the Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
621
Introduction
The Integration Server error log maintains information about exceptions that are thrown by services. This appendix describes how to use this log to help debug service exceptions.
622
For flow services, the Service Stack column also shows an indexed path that identifies the step within a service at which the exception occurred. The path takes the form /n/n/n..., where n represents a sequential index of flow steps and / indicates a level of nesting:
623
This path helps pinpoint the step at which the exception occurred and is particularly useful when a flow service is called multiple times or when the service or step is deeply nested. For example, suppose serviceA invokes serviceB three times, and the exception occurred at the second invocation of serviceB. The Service Stack column in the error log would show the path as serviceA(/1/2): Step
INVOKE serviceB SEQUENCE INVOKE serviceD INVOKE serviceE INVOKE serviceBSEQUENCE INVOKE serviceC INVOKE serviceB
Index
/0 /1 /1/0 /1/1 /1/2/2 /2/0 /2/1
In addition to the standard error message text that Integration Server provides (for example, "[ISS.0062.9021] "object" is null"), exception messages may also contain additional, customized text that a service developer provides in the error handling portion of the service.
624
Index
Numerics
2PC for XA transactions 506 64-bit JVM, using on Solaris and HP-UX systems 105 port restrictions 260, 261 ports 111 services manually 420 user accounts 68 users to a group 77, 79 administered objects creating 198 Administrator user account 67 administrators adding alternate administrators 28 defining 70 defining external users as 364 e-mail address for guaranteed delivery 449 password for predefined user account 27 predefined ACL, description 268 predefined group, description 76 predefined user account, description 27, 67 receiving messages, overview 27 responsibilities 26 role 26 SMTP server for e-mail address for guaranteed delivery 449 Administrators ACL 268 Administrators group 76 alias for JNDI providers 182 JMS connection alias 187 JNDI provider 182 aliases PKI profile, deleting 320 remote servers deleting 96 identifying 93 testing connection 95 updating 96 Allow By Default port IP access (custom) 256 port IP access (global) 255 Anonymous ACL, descr i ption 268 Anonymous group 76 architecture, webMethods Integration Server 30 archiving packages 387 AS/400 systems, port queue size 576
A
Acc ess Control Lis ts (ACLs) how they work with services 271 Accept header HTTP request 516 Access Control Lists (ACLs) ACL used when none assigned to s ervice 272 ACL used when none assigned to service 268 Administrators 268 Anonymous 268 assigning to services 272 creating 269 Default 268 deleting 270 description of use 264 Developers 268 Internal 268 predefined 268 protecting use of remote server aliases 93 removing from services 273 removing protection from files 275 Replicators 268 updating 269 access file, using to control access to files 274 accessing any Web document for package 383 home page for package 382 ACLs. 264 activating packages 384 activation codes, from registration authority 317 adding Access Control Lists (ACLs) 269 administrators 70 aliases for remote servers 93 aliases for Web services 106 developers 71 groups 77 packages 384
625
auditing security 44 audit-trail logging overview 44 writing log to screen 49 authenticating basic authentication 278 client certificates 282 using Integrated Windows authentication 610 using user names and passwords (basic) 278 using user names and passwords with Integrated Windows authentication 610 when invalid password supplied 278 when invalid user name supplied 278 when it occurs 285 when user name not supplied 278 automatic pull facility 404 auxiliary PKI profile creating 317 recovering 323 when exporting a profile to an HSM device 326 avail able threads warning threshold 87
B
blocking incoming requests to server 145 Brok er/local triggers document retrieval thread usage 463 Broker bypassing decoding for trigger services 588 checking for $brokerEvent objects 577 client group, description of 173 handling native events 577 keep-alive messages response time 548 retry limit 549 wait time 548 keep-alive mode 175 switching Integ ration Server territories 175 Broker/ local trigger removing subscriptions 589 Broker/local triggers cluster sync hronization monitoring 483 cluster synchronization 481 configuring 481 log messages for 482 document processing
concurrent trigger execution threads 473 limiting threads 479 overview 471 resu ming for one trigger 477 resuming for all triggers 475 suspending for all triggers 475 suspending for one trigger 477 thread usage 472 document retrieval overview 462 resuming for all triggers 467 resuming for one trigger 469 suspending for all triggers 467 suspending for one trigger 469 thread usage 463 editing properties 484 inte rrupting retries 587 monitoring interval 588 queue capacity, reducung 464 refill level, reducing 464 resuming all document processing 475 resuming document pr ocessing 477 resuming document processing 475 resuming document retrieval 467, 469 retrying on error 589 shut down requests 587 specifying user account 168 suspending on error 589 throttle controls Execution Threads Throttle 473 Queue Capacity Throttle 465 Broker/localtriggers deleting document type subscriptions 589 buil t-in services, for pub.pki 313 built-in services, for pub.pki 314 bypassing proxy server specify and editing a proxy bypass 101
C
C/C++ services, adding to server manually 420 caching service results overview 444 resetting for all services 445 resetting for single service 446 viewing statistics 446 canceling package subscriptions 411 scheduled service execution 435
626
capacity default document store 163 definition of 464 outbound document store 168 trigger document store 165 trigger queues 464 CentraSite testing connection to 106 certificate authorities (CAs) certificates to validate client certificates 112 certificate mapping changing user 281 Certificate Revocation List (CRL) description 328 stored in LDAP directory 312 when downloaded 328 certificates, digital certificates required to validate client certificates 112 trusted, for PKI profile 319 using for authentication 282 changing Access Control Lists (ACLs) 269 aliases for remote servers 96 license key 85 membership for groups 80 passwords 72 primary port 144 scheduled service execution 432 checklists configuring server 522 deploying the server 520 implementing SSL 238 installing server 520 installing services 524 security 527 setting up user accounts, groups, and ACLs 523 class loaders class loading chain 36 current 39 Integration Server 36 JVM 35 parent 39 class loading accelerating 42 how the process works 39 classes where to place for packages 41
classpath changing at startup 38 Integration Server 37 Java 37 using to prepare client to comm unicate with server 526 client certificates certificates required to validate 112 description 282 client groups, switching 173 client libraries, for JMS providers 204 client prefix, for webMethods Integration Server 173 client.jar file using to prepare client to communicate with server 526 clientKeepAliveTimeout 537 clients preparing to communicate with server 526 client-side queuing, described 166 client-side queuing, enabling or disabling 576 cluster synchronization configuring for trigger management 481 monitoring for triggers 483 Cluster View page, display of 483 code subdirectory 374 command line parameters for starting server 47 starting server from 47 communications with server, securing with SSL 236 configuration settings bypass list for proxy servers 101 controlling who can set 70 descriptions 532 guaranteed delivery 449 how long to keep inactive sessions 88, 89 how to set 63 LDAP 357 license keys 84 overriding when starting server 47 ports 110 proxy servers 96 server.cnf file 63 configuring additional ports 111 bypass list for proxy servers 101 checklist 522 controlling who can configure the server 70 default document stores 162
627
description of all settings 532 guaranteed delivery 449 how long to keep inactive sessions 88, 89 outbound document store 167 outbound password settings 301 PKI system settings 314 ports 110 primary port 144 proxy servers 96 server 83 server resources 102, 103 SSL 243, 245 SSL, checklist 238 trigger document store 164 user account to use 67 XA recovery store 511 content handler how server chooses for HTTP requests and responses 516 controlledDeliverToTriggers 552 controlling access to services and files 264 access to services by port 252, 258 server SSL security level by port 247 who can configure the server 70 who can develop services 70 conventions used in this document 21 copying packages ACL used 268 group used 77 how to 399 publisher tasks 395 requesting subscriptions to packages 406 subscriber tasks 404 to other servers 388 user account used 68 creating Access Control Lists (ACLs) 269 administred objects 198 auxiliary PKI profiles 317, 323 JMS connection alias 187 JNDI provider alias 182 package release 399 packages 384 packages distribution files 399 PKI profile aliases 318 CRL (Certificate Revocation List) description 328
D
database drivers, for use with wmDB 565 debug mode of the server 48 decreasing capacity of trigger queues 464 document processing for concurrent triggers 473 refill level of trigger queues 464 server threads for concurrent trigger execution 473 server threads for document processing 472 server threads for document retrieval 463, 464 trigger execution for concurrent triggers 473 decrypting documents 314 decryption keys, stored in auxiliary profile 317, 323 Default ACL 268 default document store capacity 163 configuring 162 description 162 initial size 163 location 163 refill level 164 default proxy server 97 default proxy servers change existing default 100 deleting existing default proxy 101 disabl ing 99 enabling 100 Default user account 67 defaultProtocol, SOAP 583 defining Access Control Lists (ACLs) 269 administrators 70 developers 71 groups 77 packages 384 user accounts 66 deleting Access Control Lists (ACLs) 270 aliases for remote servers 96 aliases for Web services 99, 100, 101 groups 80 JMS connection alias 197 JNDI provider alias 185 packages 386
628
ports 144 subscribers to packages 399 user accounts 69 Deny By Default access to services through a port 259 port IP access (custom) 257 port IP access (global) 254 dependency manager, ena bling and disabling 575 destinations managing through Designer JMS triggers 194 Developer predefined user account to use 68 privilege required to access server from 70 user account 68 developers defining 71 defining external users as 365 predefined ACL, description 268 predefined group, description 76 predefined user account, description 68 Developers ACL 268 Developers group 76 diagnostic data, description 600 diagnostic port assigning 134, 137 dedicated thread pool 600 description 600 thread priority 601 url 601 diagnostic utility description 601 diagnostic_data.txt 601 diagnostic_data.zip 601 wm.server.admin.getDiagnosticData 601 digital certificates certificates required to validate client certificates 112 client certificates for authentication 282 directives default 262 invoke 262, 563 REST 578 rest 262 restricting to specified ports 547 soap 262, 583 web 262 disabled keep-alive mode
configuring 177 description of 176 disabling guaranteed delivery for outbound requests 451 JMS connection alias 197 JMS triggers 494 packages 386 ports 145, 146 users 74 displaying active se ssions 55 active sessions 86 documentation for packages 382 folders 418 license key 84 licensed session limit 86 log information on screen 49 membership for groups 80 package subscribers 396 package subscriptions 405 packages 377 packages residing on your server 377 packages, enabled/disabled 379 packages, loaded/unloaded 379 scheduled service execution time 431 service information 418 service statistics 446 services 418 system task execution time 435 distribution files for packages creating 399 sending 399 DMZ, running a reverse invoke Integration Server in 330 doc subdirectory 375 document history database reaper interval 502 document history database, removing expired entries 563 document processing enforcing TTL 588 increasing or decreasing threads for 472 limiting threads for 479 overview of managing 471 rejecting locally published documen ts 576 resuming for all triggers 475 resuming for one trigger 477 server threads for 472
629
suspending for all triggers 475 suspending for one trigger 477 threads, limiting 479 document retrieval increasing or decreasing threads for 464 limiting threads for 479 overview of managing 462 resuming for all triggers 467 resuming for one trigger 469 server threads for 463 suspending and default client 469 suspending and local publishing 469 suspending for all triggers 467 suspending for one trigger 469 document stores default capacity 163 configuring size and location 162 refill level 164 outbound capacity 168 configuring size and location 167 overview 162 triggers capacity 165 configuring size and location 164 initial size 165 location 165 reducing capacity 464 refill level 165 document types removing subscriptions on reload or reinstall 589 validate when published property 577 validating 577 document types, fields from substitution groups 533 documentation conventions used 21 for your packages 382 using effectively 21 documents enforcing TTL 588 rejecting locally published 576 validating on publish 577 documents, signing 314 DSA encryption algorithm 318 DSPs, preventing cross site scripting attacks 534 Duplicate documents statistics for 503
E
editing JMS connection alias 196 JNDI provider alias 184 e-mail address for messages when guaranteed delivery fails 449, 452 ports, assigning 111 SMTP server to use for messages when g uaranteed delivery fails 449 SMTP server to use for messages when guaranteed delivery fails 452 Enabled icon, color descriptions 379 enabling client-side queuing 166 JMS connection alias 197 JMS triggers 494 packages 385 ports 146 users 74 encryption algorithms 318 encryption keys expiration 324 expiry accounts for 324 for outbound passwords 300 renewal accounts for 325 updating 324 endpoint aliases adding 106 Entrust PKI proxy, installing 327 epf files creating for PKI profile 317 for storing PKI profiles 312 errors suspending triggers for 589 Event Manager 424 eventcfg.bin file 424 events, running services in response to 424 Everybody group 76 exactly-once processing statistics, clearing 503 statistics, viewing 503 except ions logging to error log 555 exceptions using error log to debug 622 executing replication services 423
630
services 34 services at scheduled times 426 shutdown services 423 startup services 422 Execution Threads Throttle property 473 execution user, for adapters notifications, 532 expired UUIDs, deleting 563 expiry accounts, for encryption keys 324 external directories considerations for user accounts and groups 363 granting users access to services and files 366 granting users administrator privileges 364 granting users developer privileges 365 how server uses 353 overview 355 to stop using 362 uses for multiple 355 external groups assigning administrator privileges 364 assigning developer privileges 365 assigning to ACLs 366 how server uses 353 external user accounts assigning access to services and files 366 assigning developer privileges 365 how server uses 353 externaluser accounts assigning administrator privileges 364
access the directories 592 port range for listener 142 ports, assigning 111 root directory, specifying 592 ftp client timeout 538 FTP LIST command 560 FTP R ETR command 560 FTPS ports, adding 123 full release, of a package 389
G
gateway. 614 genera teAl l TypeDocuments 533 group name description 75 specifying for groups 75 groups adding 77 adding users to 77, 79 administrator privileges 76 Administrators 76 Anonymous 76 changing membership 80 conside rations when using external directories 363 defining 75 deleting 80 developer privileges 76 Developers 76 externally-defined 355 group name 75 overview 66 predefined 76 privileges that can be shared 75 purpose 66 Replicator 77 replicator privileges 77 settings 75 specify members of 75 specify users that belong to 67 viewing membership 80 guaranteed delivery administering 452 configuring 449 description of 448 disabling outbound transactions 451 e-mail address and SMTP server for error notification 452
F
file age, for FTP LIST command 560 files controlling access to 274 removing Access Control List (ACL) protection from 275 filtering packages 377 firewall configuring FTP/FTPS listerner port range 142 running an internal server behind 330 flat files, sending and receiving with Trading Networks 33 flow service outbound passwords 300, 544 folders assigning Access Control List (ACLs) 272 description 416 listing 418 FTP
631
e-mail address for error notification 449 handling heuristic failures 450 handling restart after a failure 450 inbound job store, clean up 450 inbound job store, description 450 reinitializing, for outbound transactions 454 reinitializing,for inbound transactions 453 requests to other servers 448 retry after server failure 450 retry wait 452 server failure 450 service threads 452 shutting down 452 SMTP server for error notification 449 specifying how long transactions active 451 submitting outbound transactions 452 thread pool 452
I
In Doubt documents statistics for 503 inbound client-side queuing, description of 166 inbound document history, description of 166 inbound vs. outbound passwords 300 inner firewall, running an internal server behind 330 installing package published from another server 411 run-time classes 525 server 520 services, checklist 524 Integrated Windows authentication activating 610 deactivating 610 description of 610 Integration Server. 264 Internal ACL 268 interrupt trigger retry property 587 interval, for clearing expired document history entries 502 invoke directive 262, 563 IP access to ports setting globally 253 IS services. 264
H
Handheld Device Markup Language. 614 handler chain behavor 594 HDML (Handheld Device Markup Language) 614, 617 HDML pages, accessing with wireless devices 617 heuristic failures, specifying how to handle for guaranteed delivery 450 home page for packages 382 hosts allowing inbound requests 254, 257 denying inbound requests 255 HSM devices for storing private keys 312 library name 316 token label 317 HTTP ports assigning 111 changing to or from primary port 144 HTTP proxy server bypass list 101 configuring 96 HTTPS ports assigning 116 changing to or from primary port 144 HTTPS proxy server bypass list 101 configuring 96
J
jar files where to place for packages 41 Java class loaders how the process works 39 Java classes how Integration Server loads them 35 loading 35 Java services adding to server manually 420 specifying com pi ler command 550 Java system properties passing to Integration Serve r at startup 53 java.transaction.Status interface for XA transactions 508 java.transaction.xa.Xid interface for XA transactions 508 JDK, specifying non-default one to use with server 550 JMS supported JMS providers 204
632
using SSL 203 JMS connectio n alias keep alive interval 198 JMS connection alias creating 187 deleting 197 disabling 197 editing 196 enabling 197 managing destinations 194 retry interval 196 transaction type 188 using native webMethods API 187 JMS provider adding cleint libraries 204 JMS providers supported 204 JMS triggers adjusting thread usage 492 disabling 494 enabling 494 state 494 suspending 494 thread usage 492 JNDI provider alias creating 182 deleting 185 editing 184 JNDI providers creating alias 182 for JMS 182 job store for inbound guaranteed delivery transactions 450 how long outbound transactions active 451 removing expired inbound transactions 450 submitting outbound transactions 452 JTA specification for XA transactions 508 JVM checking version when copying a package 393 class loaders 35 memory settings 38 using 64-bit on Solaris and HP-UX systems 105
idle time 548 limit 549 keep-alive mode configuring disabled mode 177 configuring listen only mode 177 configuring normal mode 177 definition of 175 disabled mode 176 keep alive period (duration) 548 listen only mode 176 maximum response property 548 normal mode 176 response time (max response time) 548 retry limit (retryCount) 549 server parameters for 176 keys, encryption expiration 324 PKI profile 318 updating 324 used for outbound passwords 300 keystore 240, 241
L
label HSM device token 317 LDAP assigning groups to ACLs 366 configuration settings 357 considerations for user accounts and groups 363 directory for use with PKI authority 315 granting users access to services and files 366 granting users administrator privileges 364 granting users developer privileges 365 how server uses 353 uses for multiple directories 355 library name, for HSM device 316 license keys changing 85 description 84 licensed sessions 85 renewal reminders 85 renewing 85 viewing 84 viewing licensed session limit 86 viewing number of active sessions 86 when session limit reached 85 licensing changing 84
K
keep alive interval, for JM S connection alias 198 keep-alive me ssages response time 548 keep-alive messages
633
listen only keep-alive mode configuring 177 description of 176 listeners. 264 listing active sessions 55 folders 418 log information on screen 49 packages residing on your server 377 services 418 Loaded? icon, color descriptions 379 loading Java classes 35 packages 385 local document publishing enforcing TTL 588 rejecting when trigger queue is full 576 LOCAL_T RANSACTION 189 LOCKFILE, during safe mode startup 603 locking best practices 458 choosing local or VCS 456 disabling and enabling 456 locking mode, setting 575 locking out users 74 logging controlling content of server log 151 controlling format of server log 157 exceptions 555, 622 overriding logg ing level and location of server log file 153 overview 44 queuing log entries for server log. 153 sending me ssages about critical log entries 155 setting up server log 151 viewing server log 156 writing log to screen 49 logging in, PKI profile 320
resetting when lost or corrupted 308 Maximum Documents to Send per Transaction property 167 maximum retry period, for services 564 Maximum Threads property for document processing 479 for document retrieval 479 maxPersist parame ter 168 Message History Sweeper task 502, 563 metadata publishing 106 MTOM Threshold, SOAP 584
N
naming services 416 native Broker events bypassing decoding for trigger services 588 checking for $brokerEvent objects 577 disabling document validation 577 native webMethods API using 187 NIC,spe cif ying which one server is to listen on f or incoming requests 563 NO_TRANSACTION 189 normal keep-alive mode configuring 177 description of 176 ns subdirectory 375
O
omitXSDAny 533 ou tbound document store configuring 167 outbound document store capacity 168, 552 configuring 167 defined 162 disabling use of 576 emptying 167 maxPersist parameter 168 setting transaction limit 167 outbound pas swords name or location of master password file, changing 305 outbound passwords definition 300 encryption method, changing 304 expiration interval, changing 303
M
managing XA transactions 506 manifest file for packages 39, 375 master password (for outbound pa sswords) file name and location 305 master password (for outbound passwords) changing 302 description 300
634
file name and location 304 flow service 300, 544 internal vs. public 544 management 301 master pa ssword, file name and location 305 master password, changing 302 master password, description 300 name or location of outbound passwords file, changing 304 passman.props file, definition 303 resetting when master password is lost or corrupted 308 vs. inbound 300 output templates, preventing cross site scripting attacks 534
P
pac kages information you can view 376 package class loader using instead of Integration Server class loader 39 packages ACL for package replication 268 activating 384 archiving 387, 388 canceling subscriptions to 411 code subdirectory 374 controlling ac cess 386 copying 388 copying to another server 388 creating 384 cutting 388 deleting 386, 387 description 370 directory structure 41, 373 disabling 386 doc subdirectory 375 documentation for 382 Enabled icon color descriptions 379 enabling 385 filtering the list 377 full vs. patch release 389 home page 382 installing published package 411 List, filtering 377 Loaded? icon color descriptions 379 loading 385
location 373 making available 385 manifest file 375 moving 388 ns subdirectory 375 package replication group 77 package replication guidelines 395 partial release 389 pasting 388 predefined 370 prohibiting access to 386 pub subdirectory 375 publishing to other servers 399 re plicating 399 recovering 387 release 389 reloading 385 effect on trigger subscriptions 589 replicating 388 residing on your server 377 resources subdirectory 375 retrieving automatically 404 retrieving manually 404 safe delete 387 sampleservices 373 status, enabled/disabled 379 status, loaded/unl oaded 379 subscribing to 406 subscriptions to 405 tasks you can perform 383 templates subdirectory 375 updating effect on trigger subscriptions 589 user account for package replication 68 web subdirectory 375 who can subscribe to 394 page size, controlling for adapters 532 pagination, controlling for adapter elements 532 partial release, of a package 389 passive FTP/FTPS listeners, port range for 142 passman.props file, definition 303 passwords 300 changing 72 creating for PKI profile 317 description 67 inbound vs. outbound 300 predefined Administrator user account 27 requirements 73
635
rules for PKI profiles 327 specifying in user accounts 67 patch release, of a package 389 PBE (Password-Based encryption), used for outbound passwords 300 pipeline Broker events bypassing decod ing for trigger services 588 checking for $brokerEvent objects 577 disabling docu ment validation 577 PKCS#5, encryption used for outbound passwords 300 PKI authority LDAP directory 315 url of 315 PKI profi les WmPKI package 313 PKI profile aliases creating 318 deleting 320 viewing information about 321 PKI profiles assigning passwords 317 authorization code 322 auxiliary 317, 318, 323 changing location of 325 changing password 324 creating 316 creating .epf file 317 decription 312 deleting 320 deleting aliases 320 determining whether logged in 321 exporting 325 key pair algorithm 318 key strength 318 password rules 327 reference number 322 viewing information about 321 PKI proxy description 312 installing 327 PKI system configuring settings 314 connecting server to 315, 319 PKIXCMP messages, routing through proxy 312 port queue size, lowering for AS/400 576 ports adding 111
adding a security provider 147 configuring 110 controlling access to services through 252, 258 controlling SSL security level of 247 deleting 144 Deny By Default access to services 259 disabling 146 editing 145 e-mail client configuration 129 enabling 146 FTP 126 FTPS 123 HTTPS 116 overview 30 primary, changing 144 reasons to add additional 111 reasons to change primary 144 reasonsto add additional 111 resetting access to 262 ports, listening adding additional 111 changing primary 144 configuring 110 deleting 144 Deny By Default access to services 259 disabling 145, 146 enabling 146 overview 30 port range, specifying for FTP/FTPS 142 reasons to change primary 144 resetting access to 262 preprocess errors, for triggers 589 preventing access to packages 386 hosts that can connect to server 255 use of ports 145 private keys, storing on HSM devices 312 privileges administrator, description 70 administrator, granting 70 administrator, granting when using external directory 364 developer, description 71 developer, granting 71 developer, granting when using external directory 365 replicator 77 shared between groups 75
636
profile aliases, creating 318 profiles, PKI 312 auxiliary 318 changing 324 creating 316 program code conventions in this document 21 protocols e-mail (SMTP) 110 FTP 110 HTTP 110 HTTPS 110 proxy bypass editing proxy bypass 101 proxy port on reverse invoke Integration Server, definition 331 web directive 263 proxy server alias bypassing proxy server 101 changing the existing default 100 creating or adding 97 deleting existing proxy alias 100 editing existing proxy alias 99 proxy server aliases changing existing default proxy 100 deleting existing default proxy 101 disabling 99 editing 99 enabling 100 proxy servers bypassing 101 configuring 96 default 97 editing 99 installing PKI 327 overview 33 PKI 312 pub subdirectory 375 pub.pki services 313, 314 pub.trigger services resumePro cessing 479 resumeRetrieval 471 suspendProcessing 479 suspendRetrieval 471 published docum ents, maximum published at one time 552 publishing metadata about server assets 106
publishing packages creating the distribution file 399 guid elines 395 how to 399 installing published package 411 removing recipients (subscribers) 399 requesting subscriptions 406 sending the distribution file 399 sending the release 399 updating subscriber information 398 who can publish 395 who can subscribe 394 publishing servers creating package distribution file 399 displaying subscribers 396 publishing packages 399 sending package release 399 tasks 395 who can pu blish 395 publishing services blocking 552 maximum published documents 552 publising services, delaying 551 pulling a package automatically 404 manually 404
Q
Queue Capacity Throttle, definition of 465
R
reaper interval, for document history database 502, 563 receiving administrator messages 27 recovering packages 387 refill level default document store 164 definition of 464 trigger document store 165 Registration Authority obtaining replacement activation codes from 322 supplier of certificate activation codes 316, 317 registration port, on reverse invoke Integration Server 331 reinitializing guaranteed delivery for inbound transactions 453 guaranteed delivery for outbound transactions 454
637
release s (packages) creating 399 releases (packages) full vs. patch 389 sending 389, 399 reloading packages 385 remote servers, identifying aliases 93 removing Access Control Lists (ACLs) 270 Access Control Lists (ACLs) from services 273 expired document history entries 563 groups 80 packages 386 ports 144 scheduled execution of service 435 subscribers to pac kages 399 user accounts 69 renewal accounts, for encryption keys 325 renewing license key 85 replicating packages ACL 268 group 77 guidelines 395 how to 399 overview 388 publisher tasks 395 Rep licators group 395 Replicator user account 395 Replicators ACL 395 requesting subscriptions to packages 406 subscriber tasks 404 user account 68 who can subscribe 394 replication services, description 423 Replicator user account 68 Replicators ACL 268 Replicators group 77 resetting access to ports 262 cache for all services 445 cache for single service 446 resolving uncompleted XA transactions 507 resource monitoring service, execution interval 588 REST directive 262 restarting guaranteed delivery for inbound transactions 453
guaranteed delivery for outbound transactions 454 reasons for restarting server 55 server 55 restricting access to Server Administrator 70 access to server from Developer 70 access to services and files 264 access to services by port 252, 258 hosts that can connect to server 254, 257 resuming scheduled execution of serv ice 434 retries, interrupting for shut down 587 retry failure for tr iggers 556 retry guaranteed delivery 450 retry interval, for JMS connection alias 196 reverse invoke overview 330 role of administrator 26 of webMethods Integration Server 30 round robin method, in reverse invoke configuration 331 RSA encryption algorithm 318 run-time classes, installing 525
S
safe mode automatic 604 description 603 scheduler server thread allotment 88 scheduling exe cution of services description 426 scheduling execution of servic es resuming a scheduled user task 434 scheduling execution of services 433 canceling scheduled user task 435 changing scheduled times 432 examples of complex scheduling options 437, 438 pauisng all scheduled user tasks 433 resuming all user sceduled tasks 434 suspending a scheduled user task 433 system tasks 426 user tasks 426 viewing scheduled times 431 viewing when system tasks execute 435 screens
638
e-mail client configuration 129 se rvices tasks you can perform 419 Secure Sockets Layer (SSL) background information 236 checklist to implement 238 client certificates 282 configuring server to use 243, 245 controlling security level by port 247 how server uses 236 security auditing 44 checklist 527 checklist to implement SSL 238 controlling access to services and files 264 controlling access to services by port 252, 258 controlling SSL security level by port 247 controlling who can configure the server 70 controlling who can develop services 70 securing server communications 236 security provider adding 147 sending distribution files 399 releases 399 sending and receiving flat files via Trading Networks 33 Server Administrator controlling access to 70 description 27, 60 how to use 62 picture of 62 starting 60 server log controlling content of 151 controlling format of 157 file location 151 logging levels 152 message format 535 overriding logging level and location of server log file 153 queuing log entries for 153 send ing messages about critical log entries 155 setting up 151 viewing 156 server resources 102, 103 server security. 278, 290, 610 server session
stateful session limit 90 warning threshold 90 server thread pool document retrieval threads 479 limiting thread usage 479 maximum threads 87, 89 minimum threads 87 sizing 102, 103 trigger execution threads 479 warning level 87 server threads for document processing 472 for document retrieval 463 for trigger execution 472 server.bat file 37, 53 server.cnf description of settings 532 guaranteed delivery settings 449 how to set configuration settings 63 location 532 updating from Server Administrator 103 server.sh file 37 services Access Control Lists (ACLs) usage 271 ACL used when no assigned ACL 268, 272 assigning Access Control Lists (ACLs) to 272 caching results, overview 444 caching service results, overview 44 canceling scheduled user task 435 changing scheduled times of execution 432 controlling access to 264 controlling access to by port 252, 258 controlling who can access 264 controlling who can develop 70 deleting its Access Control List (ACL) 270 denying access to external users 366 execution overview 34 fully qualified names 416 granting access to external users 366 guaranteeing delivery of requests to server 448 guaranteeing delivery of responses from services 448 guidelines for using startup/ shutdown/replication 423 invoking with URLs 616 listing 418 manually adding to server 420 maximum retry period 564
639
naming 416 overview 416 pub.pki 313, 314 removing Access Control Lists (ACLs) from 273 replication 423 replication services execution 423 resetting cache for all services 445 resetting cache for single service 446 resuming scheduled user task 434 retrieving data for 33 running in response to specific events 424 samples in WmSamples 373 scheduling execution 426 shutdown 423 shutdown service execution 423 startup 422 startup service execution 422 suspending scheduled user task 433 testing 420 user account for invoking trigg e r services 168 viewing information about 418 viewing scheduled times of execution 431 viewing service statistics 446 viewing when system tasks execute 435 sessions inactive sessions 88, 89 maximum number allowed per license 85 stopping all 54, 55 timeout limit 88, 89 viewing 55 sessions, licensed limit 85 viewing limit 86 setenv.bat file 38 setenv.sh file 38 shared-state client, keep-alive mode 175 shutdown services description 423 guidelines for use 423 shutting down guaranteed delivery 452 server with restart 55 webMethods Integration Server 54, 55 sizing default document store 163 server thread pool 102, 103 trigger document store 164
SMTP address for messages when guaranteed de livery fails 449 SMTP server, specifying for error messages generated during guaranteed delivery processing 452 soap directive 262, 583 SOAP, defaultProtocol 583 SOAP, MTOMThreshold 584 soap-jms request timeout 585 SOAP-JMS triggers WS endpoint triggers 496 specifications, viewing information about 418 SSL keystore 240, 241 using with JMS 203 SSL. 247 starting command line parameters 47 diagnosing problems with startup 603 guaranteed delivery for inbound transactions 453 guaranteed delivery for outbound transactions 454 Server Administrator 60 server from command line 47 server on UNIX 47 server on Windows 46 server, overriding configuration settings 47 server, process 49 startup services description 422 guidelines for use 423 statistics, for exactly-once processing 503 stopping active sessions 54, 55 server 54, 55 server with restart 55 use of external directories 362 store location default document store 163 master password for outbound passwords 305 outbound passwords 304 trigger document store 165 XA recovery store 512 subscri bing to packages displaying current subscriptions 405 subscrib ing se rvers updating information for 398
640
subscribing servers canceling subscriptions 411 displaying 396 installing published package 411 removing 399 requesting subscriptions 406 tasks 404 updating information for 409 who can subscribe 394 subscribing to packages guidelines 395 how to 406 manually pulling current subscriptions 405 updating subscription information 409 who can subscribe 394 subscriptions canceling 411 displaying 405 installing published package 411 pulling 405 requesting from a remote server 406 substitution groups, schema 533 suspending document processing for triggers 475, 477 document retrieval for triggers 467, 469 JMS triggers 494 scheduled execution of service 433 sweep interval, ftp sessions 539 synchronization, and depende ncy manager 575 synchronizing, trigger management changes 481 system tasks description 426 viewing scheduled execution 435
T
templates subdirectory 375 territories, switching for Integration Server 175 testing connection to remote servers 95, 106 installation of server 528 services 420 thread pool limiting server thread usage 479 scheduler 88 server 102, 103 warning threshold 87 threads for document processing 472, 479
for document retrieval 463, 479 for JMS triggers 492 threshold, server thread availability 87 throttle controls Execution Threads Throttle 473 Queue Capacity Throttle 465 time to live (TTL), specifying for guaranteed delivery 451 timeout for Flow steps 587 timeout limits, for sessions 88 timeouts, for soap-jms requests 585 timestampMaximumSkew 594 timestampPrecisionInMilliseconds 594 timestampTimeToLive 594 token, label 317 Trading Networks, sending flat files to 33 transaction management (XA) 506 transaction type for JMS connection alias 188 trigger document store capacity 165 configuring 164 decription 162 initial size 165 location 165 reducing capacity 464 refill level 165 trigger services infinite retry loop, escaping 486 triggers concurrent, reducing execution threads 473 document pro cessing rejecti ng when queue is full 576 editing WS endpoint triggers 497 exactly-once processing, statistics 503 reuse sessions 590 WS endpoint triggers 496 trusted certificates for PKI profile 319 tspace location 591 maximum bytes 591 TTL (time to live), specifying for guaranteed delivery 451 two-phase commit for XA transactions 506 typographical conventions in this document 21
641
U
unauthenticated users, predefined group description 76 UNIX, starting webMethods Integration Server 47 updating Access Control Lists (ACLs) 269 aliases for remote servers 96 license key 85 membership for groups 80 subscriber information 398 subscription information 409 when services scheduled to execute 432 URLs accessing the server with 616 invoking services with 616 using to access HDML or WML pages 617 user accounts account to configure and manage server 67 account to use when connecting from Developer 68 adding 68 Administrator 27 considerations when using external directories 363 deleting 69 description 67 externally-defined 355 group membership 67 overview 66 password 67 predefined 67 purpose 66 settings 66 trigger service execution 168 user name 67 using to authenticate (basic) 278 using to authenticate with Integrated Windows authentication 610 when client does not supply a user name 67 user name externally-defined 355 specifying in user account 67 using to authenticate (basic) 278 using to authenticate with Integrated Windows authentication 610 user tasks canceling scheduled execution 435 changing when schedule d to execute 432
examples of complex scheduling options 437, 438 resuming sche duled execution 434 suspending scheduled execution 433 viewing when scheduled to execute 431 userFtpRootDir property 592 users disabling 74 enabling 74 locking out 74
V
Validate when published property 577 version control, enabling lockingfor 575 versions, checking when a package is copied 393 viewing active sessions 55, 86 documentation for packages 382 folders 418 license key 84 licensed session limit 86 membership for groups 80 package subscriptions 405 packages 377 packages residing on your server 377 service information 418 service statistics 446 services 418 subscribers to packages 396 when services scheduled to execute 431 when system tasks execute 435 whether packages are enabled/disabled 379 whether packages are loaded/unloaded 379
W
wa tt.server.transaction.recovery.abandonTimeout 587 wa tt.server.ws.security.timestampPrecisionInMillise c onds 594 WAP gateway. 614 warning threshold, server thread availabliity 87 wat t.core .schema.generateAllTyp eDocuments 533 wat t.server.c ontrol.controlledDeliverToTriggers 552 wat t.server.licenses 572 watt .s erver.jms.connection.retryPeriod 567
642
watt .server.compile 550 watt .server.event.tx.async 559 watt .server.ftp.usecommandip 560 watt .server.rg.internalregistration.timeout 578 watt. server.scheduler.threadThrottle 580 watt. server.stats.pollTime 586 watt.art.page.size 532 watt.art.synchronousNotification.selectExecuteUser 532 watt.com.wm.artextdc.configVersion 532 watt.com.wm.isextdc.configVersion 532 watt.com.wm.isextdc.monitored 532 watt.config.systemProperties 533 watt.core.schema.createSchema.omitXSDAny 533 watt.core.schema.generateSubstitutionGroups 533 watt.core.schema.validateIncomingXSDUsingXerce s 534 watt.core.template.enableFilterHTML 534 watt.core.validation.multipleroot 535 watt.core.validation.skipMandatoryFields 535 watt.debug.layout 535 watt.debug.level 535 watt.debug.logfile 536 watt.debug2.facList 537 watt.debug2.logstringfile 537 watt.infradc.artmonitor 537 watt.infradc.artpollinterval 537 watt.ne t.ftpConnTimeout 538 watt.net.clientDataConnTimeout 537 watt.net.clientKeepAliveTimeout 537 watt.net.defaultBufferSize 537 watt.net.email.validateHost 538 watt.net.ftp.ignoreErrors 538 watt.net.ftpClientDataConnTimeout 538 watt.net.ftpClientTimeout 538 watt.net.ftpConnTim eout 538 watt.net.ftpPassiveLocalAddr 538 watt.net.ftpPassivePort.max 142, 539 watt.net.ftpPassivePort.min 539 watt.net.ftpSweepInterval 539 watt.net.ftpUseCertMap 539 watt.net.httpChunkSize 540 watt.net.maxClientKeepaliveConns 540 watt.net.maxRedirects 540 watt.net.proxySkipList 540 watt.net.retries 540 watt.net.secureProxyPass 540 watt.net.ssl.client.cipherSuiteList 541
watt.net.ssl.client.hostnameverification 541 watt.net.ssl.client.strongcipheronly 541 watt.net.ssl.server.cipherSuiteList 541 watt.net.ssl.server.clientHandshakeTimeout 541 watt.net.ssl.server.strongcipheronly 541 watt.net.timeout 542 watt.net.useCookies 542 watt.net.userAgent 542 watt.net.webapp.cookies .useRelevan tPath 542 watt.s e rver.xml.e nforceEntityRef 595 watt.s erver.tx.cluster.lockBreakSecs 592 watt.securi ty.trustStoreTypes 546 watt.security. ssl.ignoreExpiredChains 545 watt.security.cert.wmChainVerifier.enforceExtensio nsChecks 543 watt.security.cert.wmChainVerifier.trustByDefault 543 watt.security.fips.mode 544 watt.security.ope.AllowI nternalPasswordAc cess 544 watt.security.pki.jnditimeout 545 watt.security.sign.keyAlias 545 watt.security.sign.keySto reAlias 545 watt.security.ssl.cacheClientSessions 545 watt.security.ssl.ig noreExpiredChains 543 watt.security.ssl.ignoreExpiredChains 544 watt.security.ssl.keyAlias 545 watt.security.ssl.keypurposeverification 545 watt.security.ssl.keyStoreAlias 546 watt.security.trustStoreAlias 546 watt.serv er.soap.validateResponse 584 watt.serve r.cache.gcMi ns 549 watt.serve r.threadPool 587 watt.serve r.users.listWmOnly 593 watt.server 546 watt.server .event.security.async 559 watt.server .serverlogQueueSize 580 watt.server.acl.groupScanInterval 546 watt.server.allowDirective 547 watt.server.audit.displayLogs.convertTime 547 watt.server.auditDocIdField 547 watt.server.broker. replyConsu mer.fetchSize 548 watt.server.broker.producer.multiclient 547 watt.server.broker.replyConsumer.multiclient 548 watt.server.broker.replyConsumer.sweeperInterval 548 watt.server.brokerTransport.dur 177, 548 watt.server.brokerTransport.max 177, 548
643
watt.server.brokerTransport.ret 177, 549 watt.server.cache.flushMins 549 watt.server.cache.isPersistent 549 watt.server.checkAclsInternally 549 watt.server.classloader.pkgpriority 39, 41, 549 watt.server.clientTimeout 549 watt.server.cluster.aliasList 550 watt.server.cluster.aware 550 watt.server.cluster.cacheName 550 watt.server.cluster.purge Sessions 550 watt.server.cluster.SessTimeout 550 watt.server.coder.bincoder.trycontextloaderfirst 550 watt.server.compile.unicode 550 watt.server.content.type.mappings 551 watt.server.contr ol.se rverThreadThresho ld 552 watt.server.control.controlledDeliverToTriggers.dela yIncrementInterval 551 watt.server.control.controlledDeliverToTriggers.dela ys 552 watt.server.control.maxPersist 168, 552 watt.server.control.maxPublis hOnSuccess 552 watt.server.control.threadSensorInterval 553 watt.server.control.triggerInputControl.delayIncrem entInterval 553 watt.server.control.triggerInputControl.delays 553 watt.server.cronMaxThr eads 554 watt.server.cronMinThreads 554 watt.server.date.suppressPatternError 554 watt.server.dateStampFmt 554 watt.server.db.blocktimeout 554 watt.server.db.connectionCache 554 watt.server.db.maintainminimum 555 watt.server.db.testSQL 555 watt.server.deprecatedExceptionLogging 555 watt.server.diagnostic.logperiod 556 watt.server.dispatcher.join.reaperDelay 556 watt.server.dispatcher.messageStore.redeliverOrigi nalMessage 556 watt.server.displayDirectories 556 watt.server.ema il.waitForServiceC ompletion 557 watt.server.email.charset 556 watt.server.email.from 556 watt.server.errorMail 558 watt.server.event.audit.async 558 watt.server.event.exception.async 558 watt.server.event.gd.async 558 watt.server.event.jmsRetrievalError.async 558 watt.server.event.repli cation.async 559
watt.server.event.session.async 559 watt.server.event.stat.async 559 watt.server.extendedMessages 571 watt.server.fileEncoding 559 watt.server.ftp.connectMessage 559 watt.server.ftp.listingFileAge 560 watt.server.ftp.loginMessage 560 watt.server.hostAccessMode 561 watt.server.hostAllow 561 watt.server.hostDeny 561 watt.server.http .returnException 562 watt.server.http.header.useHttpOnly 561 watt.server.http.listRequestVars 561 watt.server.http.securityR ealm 562 watt.server.http.useAcceptHeader 562 watt.server.http.xmlFormat 562 watt.server.idr.reaperInterval 502, 563 watt.server.illegalNSChars 563 watt.server.inetaddress 563 watt.server.invoke.maxRet ryP eriod 564 watt.server.java.unicode 564 watt.server.jca.connectionPool.thresholdWaitingRe quest 564 watt.server.jca.transaction.recoverOnEnlist 564 watt.server.jca.transaction.rollbackOnWriteFailure 512, 564 watt.server.jca.transaction.writeRecoveryRecord 511 watt.server.jdbc.defaultDriver 565 watt.server.jdbc.derby.commitTolerance 565 watt.server.jdbc.driverList 565 watt.server.jdbc.loginTimeout 565 watt.server.jms.connection.pingDestination 566 watt.server.jms.connection.pingPeriod 198, 567 watt.server.jms.csq.batchProce ssingSize 568 watt.server.jms.csq.batchProcessingSize 568 watt.server.jms.debugTrace 568 watt.server.jms.tr igger.raiseEventOnException 570 watt.server.jms.trigger.maxDeliveryCount 568 watt.server.jms.trigger.maxP refetchSize 569 watt.server.jms.trigger.maxPrefetchSize 569 watt.server.jms.trigger.monitoringInterval 569 watt.server.jms.trigger.pollingSession.timeout 569 watt.server.jms.trigger.pooledConsumer.timeout 569 watt.server.jms.trigger.raiseEventOnRetryFailure 570 watt.server.jms.trigger.reuseSession 570
644
watt.server.jms.trigger.stopRequestTimeout 570 watt.server.jms.trigger.wmjms.clientIDShar ing 570 watt.server.jms.wmjms.lms.readTimeout 571 watt.server.key 571 watt.server.l og.queued 573 watt.server.ldap .doNotBind 571 watt.server.ldap.DNescapeChars 571 watt.server.ldap.extendedProps 572 watt.server.ldap.memberInfoInGroups 572 watt.server.ldap.retryCount 572 watt.server.ldap.retryWait 572 watt.server.log.maxEntries 572 watt.server.log.refreshInterval 573 watt.server.login.userFtpDir 573 watt.server.logs.dateStampFmt 573 watt.server.logs.dateStampTimeZone 573 watt.server.math. floatOperation.mode 573 watt.server.metadata.registry.timeout 574 watt.server.metadata.url 574 watt.server.netEncoding 574 watt.server.new.http.session.context 574 watt.server.noAccessURL 575 watt.server.noObjectURL 575 watt.server.ns.backupNode 575 watt.server.ns.dependencyManager 575 watt.server.ns.lockingMode 575 watt.server.package.parallel.threads 575 watt.server.partner 575 watt.server.pipeline.processor 576 watt.server.port 576 watt.server.portQueue 576 watt.server.publish .usePipelineBrokerEvent 577 watt.server.publish.local.rejectOOS 576 watt.server.publish.use CSQ 576 watt.server.publish.validateOnIS 577 watt.server.recordTod ocum ent.buffersize 578 watt.server.requestCerts 578 watt.server.RESTDirective 578 watt.server.revInvoke.proxyMapUserCert 578 watt.server.scheduler.deleteCompletedTasks 578 watt.server.scheduler.logical.hostname 579 watt.server.scheduler.maxWait 579 watt.server.securePort 580 watt.server.serviceMail 580 watt.server.smtpServer 449, 581 watt.server.smtpServerPort 581 watt.server.smtpTransportSecurity 581 watt.server.smtpTrustStoreAlias 582
watt.server.SOAP.addEmptyHeader 582 watt.server.SOAP.completeLoad 582 watt.server.soap.convertPlainTextHTTPResponseI ntoSOAPFault 582 watt.server.SOAP.defaultProtocol 583 watt.server.SOAP.generateNilTags 583 watt.server.SOAP.MTOMThreshold 584 watt.server.SOAP.request.timeout 584 watt.server.SOAP.validateSOAPM essage 585 watt.server.soapjms.defaultMess ageType 585 watt.server.soapjms.request.timeout 585 watt.server.SoapRPC.useSecondaryType 585 watt.server.stats.avgTime 586 watt.server.stats.logfile 586 watt.server.stats.pollTime 586 watt.server.storage.lock.maxDuration 586 watt.server.storage.lock.sweepInterval 586 watt.server.strictAccessExceptionLogging 586 watt.server.suppresscwarn 586 watt.server.sync.timeout 586 watt.server.threadKill.enabled 587 watt.server.threadKill.ti meout.enabled 587 watt.server.threadPoolMin 587 watt.server.transaction.recove ry.abandonTimeout 512 watt.server.transaction.recovery.sleepInterval 512, 587 watt.server.trigger.interruptRetryOnShutdown 486, 587 watt.server.trigger.ke epAsBroker Event 588 watt.server.trigger.local.checkTTL 588 watt.server.trigger.managementUI.excludeList 588 watt.server.trigger.monitoringInterval 588 watt.server.trigger.preprocess.suspendAndRetryOn Error 589 watt.server.trigger.removeSubscriptionOnReloadOr Reinstall 589 watt.server.trigger.reuseSession 590 watt.server.tspace.location 591 watt.server.tspace.max 591 watt.server.tx.cluster.l ockTimeoutMillis 592 watt.server.tx.heuristicFailRetry 450, 592 watt.server.tx.sweepTime 450, 592 watt.server.txMail 449, 592 watt.server.userFtpRootDir 592 watt.server.ws. security.timestampMaximumSkew 594 watt.server.ws.71x HandlerChainBeh av ior 594
645
watt.server.ws.defau ltNamespace 594 watt.server.ws.security.timestampTim eToLive 594 watt.server.wsdl.validateWSDLSchemaUsingXerce s 595 watt.server.xml.xmlNodeToDocument.keepDuplicat es 595 watt.sever.event.jmsDeliveryError.async 558 watt.sever.SOAP.useMu ltiReference 584 watt.ssl.accelerator.provider 596 watt.tnextdc.pollinterval 596 watt.tx.defaultTTLMins 451, 596 watt.tx.disabled 451, 596 watt.tx.heuristicFailRetry 597 watt.tx.jobThreads 452, 597 watt.tx.retryBackoff 452 watt.tx.retryBackoffTime 597 watt.tx.sweepTime 452, 597 watt.tx.vm.id 449, 597 watt.wm.tnextdc.configVersion 597 we bMeth ods Integr ation Server territories, switching 175 web directive 262 web directive, using with proxy port 263 Web services adding endpoint aliases 106, 210 web services handler chain behavior 594 timestampMaximumSkew 594 timestampPrecisionInMilliseconds 594 timestampTimeToLive 594 web subdirectory 375 webMethods Integ ration Server shutting down 54 webMethods Integration Server accessing with URLs 616 architecture 30 audit-trail logging, overview 44 client authentication 285 client prefix 173 configuration settings 532 configuring 83 debug mode 48 deploying 520 determining if running 50 how SSL is used 236 identify hosts that can connect 254, 257 installing 520
license keys 84 overview 30 preventing use of port 145 process for executing services 34 process when starting 49 recovery after hardware or software failure 56 rejecting connections from specified hosts 255 restarting 55 retrieving data for services 33 role 30 setting up aliases for remote servers 93 shutting down 55 starting from command line 47 starting on UNIX 47 testing installation 528 using with wireless gateways 614 when to restart 55 wireless devices, communicating with 614 wireless devices, using with 614 webMethods JMS Provider connecting to using native webMethods API 187 Windows authentication 610 wirele ss devices requesting HDML or WML pages 617 wireless devices communicating with webMethods Integration Server 614 invoking services with URLs 616 using URLs to access servers 616 using with webMethods Integration Server 614 wireless gateway, role in wireless communication 614 Wireless Markup Language. 614 wm.server.admin getDiagnosticData 601 WML (Wireless Markup Language) 614, 617 WML pages, accessing with wireless devices 617 WmPKI package, for use with PKI profiles 313 WmSamples package, description 373 WS endpoint triggers about 496 editing 497
X
XA recovery store 506 configuring 511 description 506 initial size 512
646
location 512 XA transactions deleting unresolved 513 disabling recovery 511 effect on Integration Server performance 507 enabling recovery 511 errors during manual recovery 514 JTA specification 508 management 506 resolving uncompleted transactions automatically 507 resolving uncompleted transactions manually 513 setting action to take when status not stored 512, 564 setting ret ry period for automatic resolution 587 setting retry period for automatic resolution 512 setting time limit for automatic resolution 512, 587 uncompleted transactions Integration Server cannot resolve 508 XA interface 506 XIDs 508 XA_TRANSACTION 189 XIDs 506, 508
Z
zip files for packages creating 399 sending 399
647
648