Integration Server Admin Guide
Integration Server Admin Guide
Administrators Guide
VERSION 6.1
webMethods, Inc. 3930 Pender Drive Fairfax, VA 22030 USA 703.460.2500 http://www.webmethods.com
webMethods Administrator, webMethods Broker, webMethods Dashboard, webMethods Developer, webMethods Glue, webMethods Fabric, webMethods Installer, webMethods Integration Server, webMethods Mainframe, webMethods Manager, webMethods Mobile, webMethods Modeler, webMethods Monitor, webMethods Optimize, webMethods Trading Networks, webMethods Workflow, and the webMethods logo are trademarks of webMethods, Inc. "webMethods" is a registered trademark of webMethods, Inc. Acrobat, Adobe, and Reader are registered trademarks of Adobe Systems Incorporated. Amdocs and ClarifyCRM are registered trademarks of Amdocs Ltd. Ariba is a registered trademark of Ariba Inc. BEA is a registered trademark, and BEA WebLogic Platform and BEA WebLogic Server are trademarks of BEA Systems, Inc. BMC Software and PATROL are registered trademarks of BMC Software, Inc. BroadVision is a registered trademark of BroadVision, Inc. Chem eStandards and CIDX are trademarks of Chemical Industry Data Exchange. Unicenter is a registered trademark of Computer Associates International, Inc. Kenan and Arbor are registered trademarks of CSG Systems, Incorporated. SNAP-IX is a registered trademark, and Data Connection is a trademark of Data Connection Ltd. DataDirect, DataDirect Connect, and SequeLink are registered trademarks of DataDirect Technologies. D&B and D-U-N-S are registered trademarks of D&B, Inc. Entrust is a registered trademark of Entrust. Hewlett-Packard, HP, HP-UX, and OpenView are trademarks of Hewlett-Packard Company. i2 is a registered trademark of i2 Technologies, Inc. AIX, AS/400, CICS, DB2, IBM, Infoprint, Informix, MQSeries, OS/390, OS/400, RACF, RS/6000, SQL/400, S/390, System/390, VTAM, and WebSphere are registered trademarks; and Communications System for Windows NT, IMS, MVS, SQL/DS, Universal Database, and z/OS are trademarks of IBM Corporation. JBoss and JBoss Group are trademarks of Marc Fleury under operation by JBoss Group, LLC. J.D. Edwards and OneWorld are registered trademarks, and WorldSoftware is a trademark of J.D. Edwards. Linux is a registered trademark of Linus Torvalds and others. X Window System is a trademark of Massachusetts Institute of Technology. MetaSolv is a registered trademark of Metasolv Software, Inc. ActiveX, Microsoft, Outlook, Visual Basic, Windows, and Windows NT are registered trademarks; and SQL Server is a trademark of Microsoft Corporation. Teradata is a registered trademark of NCR. Netscape is a registered trademark of Netscape Communications Corporation. New Atlanta and ServletExec are trademarks of New Atlanta Communications, LLC. CORBA is a registered trademark of Object Management Group, Inc. UNIX is a registered trademark of Open Group. Oracle is a registered trademark of Oracle Corporation. PeopleSoft and Vantive are registered trademarks, and PeopleSoft Pure Internet Architecture is a trademark of PeopleSoft, Inc. Infranet and Portal are trademarks of Portal Software, Inc. RosettaNet is a trademark of RosettaNet, a non-profit organization. SAP and R/3 are trademarks or registered trademarks of SAP AG. Siebel is a trademark of Siebel Systems, Inc. SPARC and SPARCStation are trademarks of SPARC International, Inc. SSA Global is a trademark and SSA Baan is a registered trademark of SSA Global Technologies, Inc. EJB, Enterprise JavaBeans, Java, Java Naming and Directory Interface, JavaServer Pages, JDBC, JSP, J2EE, Solaris, Sun Microsystems, and SunSoft are trademarks of Sun Microsystems, Inc. SWIFT and SWIFTNet are trademarks of S.W.I.F.T. SCRL. Sybase is a registered trademark of Sybase, Inc. UCCnet is a trademark of UCCnet. eBusinessReady is a trademark of Uniform Code Council, Inc. (UCC) and Drummond Group, Inc. (DGI). Verisign is a registered trademark of Verisign. VERITAS, VERITAS SOFTWARE, and VERITAS Cluster Server are trademarks of VERITAS Software. W3C is a registered trademark of World Wide Web Consortium. All other marks are the property of their respective owners.
Copyright 2004 by webMethods, Inc. All rights reserved, including the right of reproduction in whole or in part in any form.
Contents
Contents
About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
15
16 16 17 17 17 17 18
19
20 20 21 22 24 25 25 26 26
27
28 28 31 31 31 32 32 33 33 34
Contents
Contents
Adding an E-mail Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Adding a File Polling Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Changing the Primary Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Deleting a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Enabling/Disabling a Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Specifying a Third-Party Proxy Server for Outbound Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Bypassing a Proxy Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Setting Up Aliases for Remote Integration Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Adding an Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Testing the Connection to a Remote Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Editing an Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Deleting an Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Configuring Where the Integration Server Writes Logging, Status, and Other Information . . . . . . . . . 84 Configuring Integration Server to Write Key Cross Referencing and Echo Suppression Data to a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Preparing the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Defining the JDBC Connection Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Associating the Functional Alias with a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Directing the Integration Server to Write Data to the Database . . . . . . . . . . . . . . . . . . . . . 89 Changing from Storing in a Database to Storing in the File System . . . . . . . . . . . . . . . . . . . . . . 90 Configuring Server Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Managing the Server Thread Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Limiting Server Threads for Document Retrieval and Trigger Execution . . . . . . . . . . . . . . 92 Managing the Scheduler Thread Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Setting the Session Timeout Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Configuring Outbound HTTP Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Specifying Outbound HTTP Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Configuring Document Stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Configuring the Default Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Configuring the Trigger Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Maintaining Inbound Document History for Received Documents . . . . . . . . . . . . . . . . . . . . . . . 101 Enabling Inbound Client-Side Queuing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Configuring the Outbound Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Setting the Capacity of the Outbound Document Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Selecting a User Account for Invoking Services Specified in Triggers . . . . . . . . . . . . . . . . . . . . 103 Managing the Document History Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Working with Extended Configuration Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Configuring the Server to Connect to a Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Specifying Character Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Contents
Contents
Default Settings and Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 What Happens When You Change Existing ACL Assignments . . . . . . . . . . . . . . . . . . . . . 146 Assigning ACLs to Folders, Services, and Other Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Assigning ACLs to Files the Server Can Serve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Rules for Using .access Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Removing ACL Protection from a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Authenticating Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Checklist for Using Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Items You Need Before Configuring Ports to Request Client Certificates . . . . . . . . . . . . . . 152 Importing a Client Certificate and Mapping It to a User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Configuring How Ports Handle Client Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Basic Authentication (User Names and Passwords) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Customizing Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Overview of Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Protecting Your Internal Integration Server with Reverse Invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 How Reverse Invoke Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Advantages to Reverse Invoke vs. Traditional Third-Party Proxy Servers . . . . . . . . . . . . . . . . . 163 Clustering in the Reverse Invoke Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Setting Up Reverse Invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Configure an Integration Server in the DMZ to Be a Reverse Invoke Integration Server . . 165 Setting Up the Registration Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Setting Up the Proxy Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Setting Up the Filtering Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Monitoring Traffic Between Your Reverse Invoke Integration Server and the Internal Integration Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Setting Up Your Internal Integration Server to Connect to a Reverse Invoke Integration Server 176 Specifying How the Internal Server Connects to the Reverse Invoke Integration Server . . 176 Specifying Client Authentication Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Setting a Trusted Authorities Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Setting the Access Mode for Your Internal Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Viewing and Resetting Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Performing Client Authentication on the Reverse Invoke Server . . . . . . . . . . . . . . . . . . . . . . . . 181 Frequently Asked Questions About Reverse Invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Responding to NT Challenge/Response Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 User Name, Password, and Domain Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Activating NT Challenge/Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Contents
Securing Your Server with PKI Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . About PKI Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PKI Profile Checking Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Supported Hardware and Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring PKI System Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
186 186 187 187 188 188 189 191 194 195 195 196 196 196 197 198 201 201 202 204 204 205
Contents
Contents
10
Contents
Updating Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Suspending Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resuming Suspended Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Canceling Scheduled User Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Viewing the Scheduled System Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Contents
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
12
Document Conventions
Convention Bold Italic Description Identifies elements on a screen. Identifies variable information that you must supply or change based on your specific situation or environment. Identifies terms the first time they are defined in text. Also identifies service input and output variables. Identifies storage locations for services on the webMethods Integration Server using the convention folder.subfolder:service. Identifies characters and values that you must type exactly or messages that the system displays on the console. Identifies keyboard keys. Keys that you must press simultaneously are joined with the + symbol. Directory paths use the \ directory delimiter unless the subject is UNIX-specific. Optional keywords or values are enclosed in [ ]. Do not type the [ ] symbols in your own code.
Narrow font
Typewriter font
UPPERCASE \ []
Additional Information
The webMethods Advantage Web site at http://advantage.webmethods.com provides you with important sources of information about the webMethods Integration Platform: Troubleshooting Information. webMethods provides troubleshooting information for many webMethods components in the webMethods Knowledge Base. Documentation Feedback. To provide documentation feedback to webMethods, go to the Documentation Feedback Form on the webMethods Bookshelf. Additional Documentation. All webMethods documentation is available on the webMethods Bookshelf.
13
14
CHAPTER
15
16
17
To learn how to change passwords, see Changing Passwords and Password Requirements on page 48.
18
CHAPTER
19
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, and email ports. When applications are built around the webMethods Integration Platform 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 email, HTTPS provides for secure data transmission. It does this through encryption and certificates. Without HTTPS, 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 port. A typical use for an FTP 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 email port to receive requests through an email 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.
20
Architecture
HTTP requests
HTTP Port
HTTPS requests
HTTPS Port
FTP requests
FTP Port
E-mail message
E-mail Port
File System
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, webMethods 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.
Services
Client requests involve executing one or more services. The server maintains successfully loaded services as runnable objects within the servers 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.
21
Service A
HTTPS Port
Service B
FTP Port
Service C
E-mail Port
Service D
Service E
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.
22
Architecture
When a client submits a file to the Integration Server, the server uses the appropriate content handler to parse the contents of the file and pass them to the target service. For all transmission methods except the file polling, the client specifies the service to be executed. For file polling, the server always executes the service associated with the file polling port. For more information about using sending and receiving XML files, see the XML Services Developers Guide. For more information about sending and receiving flat files, see Flat File Schema Developers Guide. You can also refer to the webMethods Built-In Services Reference for information about services you can invoke from the service you write. When the server accesses data from external data sources, you can optionally route either protocol (HTTP or HTTPS) through a proxy server.
The Server Gets Data from Local Resources or Resources on the Internet
Local Data Source
Proxy Server
Service A
HTTPS Port
Service B
FTP Port
Service C
E-mail Port
Service D
File System
Service E
23
7 8 9
24
Security Features
Security Features
The Integration Server has several built-in security mechanisms to protect services from unauthorized access, prevent unauthorized administration of the Integration Server, and to prevent data from being intercepted during transmission. It requires clients to present valid credentials (i.e., user name and password or a client certificate) in order to connect to the server. It controls access to individual services by user groups. This mechanism is provided through the use of Access Control Lists (ACLs) that you associate with a service. For the greatest security, associate all services with an ACL. It allows you to control access to services based on the port on which a service request is received. It requires clients to present valid user names (with passwords) that have Administrator privileges before allowing access to the webMethods Integration Server Administrator functions. It hashes user passwords before storing them. It supports encrypted conversations through Secure Sockets Layer (SSL). It allows your Integration Server to present different client certificates to different SSL servers. For additional information about the servers security features, refer to Chapter 7, Managing Server Security. The security of the Integration Server depends on the security of the underlying operating system. Make sure you do the following: Follow all vendor recommendations for tight configuration Remove any unnecessary network services, such as telnet or mail, in case they contain security flaws. Regularly check for and install patches from the vendor that might affect security. See your operating systems documentation for instructions on accomplishing these tasks.
Logging
Logging for the webMethods Integration Platform provides important data you need to monitor platform activity and correct problems. The Integration Server maintains this logging data. For complete information and instructions about working with logging data, see the webMethods Integration Platform Logging and Monitoring Guide.
25
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 10, Caching Service Results.
Load Balancing
Load balancing is an optimizing feature you use with clustered Integration Servers. Load balancing allows a server to automatically refer a client request to another server if it is too busy to handle the request itself. To use this feature, you must use webMethods Integration Server Clustering, which uses a central repository to maintain the status of services running in the cluster. For more information, refer to the webMethods Integration Server Clustering Guide.
26
CHAPTER
27
To start the Integration Server on Windows 1 2 3 Click Start. In the Program menu point to the webMethods folder, then point to the Servers folder. Click the Integration Server icon.
To start the Integration Server on UNIX 1 2 Locate the server.sh script file that you modified for your environment when you installed the server. Execute this script.
Note: Run this script when logged in as a non-root user. Running the script as root might reduce the security of your system. The server can consume more files and sockets on a Unix system than on other systems. Therefore, if you are running the server on a Unix system, webMethods recommends that run it with at least 102 file descriptors. You can increase the number of available file descriptors by entering the following command from the Unix command line before starting the server:
ulimit -n number
28
Type the following command to start the server: For Windows: bin\server.bat switch For UNIX:
bin/server.sh switch switch switch
Description 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 20 for a discussion of remapping ports.
-home directoryName
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 is a number from 1 to 10 that indicates the level of
detail you want to record in the log. Specify: 0 1 2 To record: Critical messages only Error and critical messages Warning, error, and critical messages
29
switch
Description 3 4 510 Informational, warning, error, and critical messages Debug, informational, warning, error, and critical messages Verbose, levels 1 through 6. All services generate audit events and pass complete sets of input data to the event handler. This option should only be used when circumstances truly demand it. The overhead of copying the pipeline before and after every service can degrade server performance. The server records more levels of informational messages the higher you set the number. This switch overrides the value specified in the Level of Logging list and assigned to watt.debug.level for this session.
-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.
30
4 5
31
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 32. Click Shutdown.
32
Server Recovery
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 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. Then the server restarts. For instructions on how to view the active sessions, refer to Viewing Active Sessions on page 32.
Click Restart.
Server Recovery
If a hardware or software problem causes the 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 managers guaranteed delivery queues. See Configuring Guaranteed Delivery on page 265 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. See below.
33
Important! Establish site-specific backup and restore procedures to protect these critical data files The mission-critical nature of the data stored in the Integration Servers data files requires that it be backed up periodically for disaster recovery. As in all critical data resources, the potential exists for a physical failure to leave the Integration Server data files in a corrupted state. In these situations the method of recovery is to replace these data files with the most current backup. The frequency and nature of these backups depends on the critical nature of the data being stored. Backups of these data files should be an offline process with the Integration Server in an idle or shutdown state, i.e. no disk activity. Important! Implement site-specific procedures to periodically backup the critical Integration Server data files. You can use any file-system backup utility. Perform the backup process only when the Integration Server is shutdown or in a quiesce state, (no disk activity). This restriction ensures that the backup will capture these critical data files in a consistent state. Backing up an active Integration Server may result in capturing a snapshot of the data files that are in an inconsistent state and therefore unusable for recovery purposes
34
Server Recovery
./WmRepository2 The files in this subdirectory contain run-time data for the Integration Server. The loss of these files will result in the loss of run-time data for any services that were in an execution state at the time of the failure. There is one main file and a variable number of files within this directory, but they all have the following naming convention: DirValuesHash.dat VHnnnnnnnnnnnnn ./WmRepository4 The files in this subdirectory contain metadata for the 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
35
36
CHAPTER
37
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.
38
Basic Operation
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.
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.
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
39
procedures you can perform from the screen. From this window, click Show Navigation Area to view the help systems table of contents from which you can search for a specific procedure or screen description.
To resume use of the Integration Server Administrator, click here. To prevent anyone else from accessing the Integration Server using your cached credentials, close the browser.
40
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: Central manage
When you start webMethods Administrator, your browser displays the webMethods Administrator main screen. For more information about webMethods Administrator, see the webMethods Administrator Users Guide.
41
42
CHAPTER
43
44
45
Central
Default
Developer
Replicator
Everybody Replicators
46
In the Create Users section of the screen, specify the following information: For this parameter User Names Specify A unique user name made up of a combination of letters, numbers, or symbols. You can specify one user name or one username;password combination per line. Press ENTER to separate the lines. Important! User names are case sensitive. When you create a user account, type it exactly as you want the client to enter it. Password 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. Re-Enter Password The same password again to make sure you typed it correctly.
47
To delete a user account from 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 Users and Groups. In the Remove Users section of the screen, select the user names for the user accounts you want to delete. Click Remove Users. The server issues a prompt to verify that you want to delete the user account. Click OK to remove the user account.
Important! When you delete a user, the user is automatically removed from the members lists of all groups to which it was assigned.
Password Requirements
For security purposes, the webMethods Integration Platform places length and character restrictions on passwords for non-administrators. The webMethods Integration Platform contains a default set of password requirements; however, you can change these with the Integration Server Administrator. A non-administrator must observe these restrictions when changing a password. An administrator user receives a warning if he or she changes a password to one that does not meet these restrictions. The default password requirements provided by webMethods are as follows: Requirement Minimum number of characters (alphabetic characters, digits, and special characters combined) the password must contain. Minimum number of upper case alphabetic characters the password must contain. Default 8 2
48
Requirement Minimum number of lower case alphabetic characters the password must contain. Minimum number of digits the password must contain. Minimum number of special characters, such as asterisk (*), period (.), question mark (?), and ampersand (&) the password must contain.
Default 2 1 1
Use the following procedure to change the password associated with a user name. Important! 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.
To change a users 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 Users and Groups. 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 The same password again to make sure you typed it correctly.
49
Controlling password length and character requirements for non-Administrator users 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 Users and Groups. Click Password Restrictions. Click Edit Password Restrictions. Fill in information in the following fields: Field Enable Password Change? Minimum Password Length 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) Description Whether users are allowed to change their passwords. These users must have developer privileges. Minimum number of characters (alphabetic characters, digits, and special characters combined) the password must contain. Minimum number of upper case alphabetic characters the password must contain. Minimum number of lower case alphabetic characters the password must contain. Minimum number of digits the password must contain. Minimum number of special characters, such as asterisk (*), period (.), question mark (?), and ampersand (&) the password must contain. Default Yes
2 2 1 1
50
it to the Administrators, Developers, and Replicators groups. Then disable the Administrator user. (Internal server functions that run as the Administrator user, such as start up and shut down services, will still be able to run as Administrator.) Then you can use the SmithAdmin user to administer your Integration Server.
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 Users and Groups. 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 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. 6 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. 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 Users and Groups. Click Enable and Disable Users. In the Disabled Users list select (highlight) the user or users you want to enable.
51
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 Disabled Users area of the screen click .
The server moves the selected users to the Enabled Users area of the screen. 6 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.
52
Defining Groups
Predefined Groups
The 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 been authenticated. This group identifies users that have developer privileges. A user must have developer privileges to connect to the server from the 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.
53
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 235. 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 Users and Groups 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. You can add more than one group at a time by specifying multiple lines, one group to a line. Press ENTER to separate lines. Important! Group names are case sensitive. 5 Click Create Groups.
54
Defining Groups
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 Users and Groups. 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 From the pull-down list of groups, 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 6 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. Click Save Changes. .
55
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 Users and Groups. 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 From the pull-down list of groups, 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 moves the selected users to the Remaining Users area of the screen. . The server
56
Defining Groups
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 From the pull-down list of groups, select the group for which you want to view membership. The server displays the users in the Users in this Group list.
57
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.
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 Users and Groups Click Add and Remove Groups. In the Remove Groups area of the screen, select the groups you want to remove. Click Remove Groups.
58
CHAPTER
59
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 Edit License Key. The server displays the License Key screen. Type the new license key in the License Key field. Click Save Changes.
Note: The Integration Server updates the expiration date automatically after you click Submit.
60
Renewal Reminders
Approximately 30 days before your license expires, the Integration Server sends an email 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 the License screen of the Integration Server Administrator:
License key expires in about days days contact webMethods for a new key.
Renewing a Key
If you need to obtain a new key or renew your license, contact your webMethods 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 the 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:
Server has reached client limit.
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 servers 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. To view the current number of active sessions and the licensed sessions limit 1 2 Open the Integration Server Administrator if it is not already open. In the Server menu of the Navigation panel, click Statistics. The server displays the current number of active sessions in use in the Total Sessions field. The server displays the maximum number of licensed sessions your license allows in the Licensed Sessions fields. For detailed information about the active sessions, click the number in the Total Sessions field.
61
Configuring Ports
The Integration Server listens for requests on ports that you specify. Each port is associated with a specific type of protocol: HTTP, HTTPS, FTP, email, or File Polling. files). Typically, most client requests use an HTTP port, or for secure requests, an HTTPS port. Use an FTP port for an alternate way to request services and a convenient way for moving files to and from the server. Use an email port to receive requests through an email server, such as POP3 or IMAP. Use a file polling port to watch the file system for the arrival of files and perform special processing when they arrive. In addition, if you deploy with reverse invoke, there are two special protocols you will use: SOCK and SSLSOCK. In the reverse invoke configuration, an Integration Server sits in your companys DMZ while your main or internal Integration Server sits behind your inner firewall. The server in the DMZ intercepts requests and passes them to your internal server. For more information about Reverse Invoke, see Protecting Your Internal Integration Server with Reverse Invoke on page 161. Note: Unlike HTTP, FTP, email, and file polling, HTTPS provides for secure data transmission. It does this through encryption and certificates. Without HTTPS, unauthorized users might be able to capture or modify data, use IP spoofing to attack servers, access unauthorized services, or capture passwords. All ports are associated with a package. By default, they are associated with WmRoot. You can associate a 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. 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. For security reasons, by default, all ports except 5555 are configured to deny access to all services, except services specified in an allow list. However, you can configure individual ports to allow access to more services as needed.
62
Configuring Ports
Adding Ports
By default, the server is pre-configured with an HTTP port at 5555. In addition, you can configure one or more additional ports. You can associate an HTTP, HTTPS, FTP, email, or file polling protocol with the additional ports. You might add additional ports: If you have applications that require a specific port number If you want to support multiple types of listening protocols If you want to open several ports for the same protocol If you want to deploy your server in a reverse invoke configuration, in which a reverse invoke Integration Server sits in your DMZ and intercepts requests before passing them to the server behind your inner firewall. For instructions on adding reverse invoke ports, see Protecting Your Internal Integration Server with Reverse Invoke on page 161. Important! For security purposes, when you add a new port, the server defines the port to deny access to all services except those specified in an allow list. Therefore, after adding a port, you might need to perform additional steps to make more services available through the port. These steps are described in Authenticating Clients on page 150.
Note: If your server runs on AS/400, limit the size of the port queue that is available to the TCP/IP stack. The port queue is the number of outstanding inbound connections that are queued in the TCP/IP stack. Navigate to the webMethods6\IntegrationServer\config directory and add this line:
watt.server.portQueue=511
63
Click Go to Step 2. The 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 port. Use 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.
6 7 8
Click Save Changes. On the Port screen, change the Access mode if necessary by clicking Change Global IP Access Restrictions. On the Ports screen, 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.
64
Configuring Ports
Specify The number you want to use for the port. Use a number that is not already in use. The type of client authentication you want the Integration Server to perform. See Authenticating Clients on page 150 for more information. None. The server will not request client certificates but will prompt for a user and password instead. Request Client Certificates. The server will request client certificates for all requests that come in on this HTTPS port. If the client does not present a certificate, the request proceeds anyway, prompting the user for a userid and password. Require Client Certificates. The server requires client certificates for all request that come in on this HTTPS port. If a client does not supply a client certificate, the request fails.
Package name
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.
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. Optional. Path and file name of the file that contains the Integration Server's digital certificate. Specify a value here only if you want this port to present a different server certificate from the one specified on the Certificates screen. Optional. Path and file name of the file that contains the certificate for the certificate authority that signed the Integration Server's digital certificate.
Servers Certificate
Authoritys Certificate
65
Specify Optional. Path and file name of the file that contains the private key of the private/public key pair associated with the Integration Server's digital certificate. If you leave this field blank, the Integration Server uses the private key specified on the Certificates screen. Optional. Name of the directory (relative to the server home) that contains the digital certificates of certificate authorities trusted by this server, for example config\cas. If you leave this field blank, the Integration Server uses the trusted authority directory specified on the Certificates screen. If the trusted authority field is blank on the Certificates screen as well, the server trusts no certificates.
6 7 8
Click Save Changes. On the Port screen, change the Access mode if necessary by clicking Change Global IP Access Restrictions. On the Ports screen, 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.
66
Configuring Ports
Specify The number you want to use for the FTP port. Use 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, 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.
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.
6 7 8
Click Save Changes. On the Port screen, change the Access mode if necessary by clicking Change Global IP Access Restrictions. On the Ports screen, 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.
To add an email port 1 2 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports.
67
3 4 5
Click Add Port. In the Add Port area of the screen, select webmethods/Email. Click Go to Step 2. The Integration Server displays a screen requesting information about the port. Enter the following information: For this parameter Package Name 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, 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. Server Information Host Name. Name of the machine on which the POP3 or IMAP server is running. Type. Type of mail server. Select POP3 or IMAP. User Name. User name that identifies you to the mail server. Password. Password associated with the user name that identifies you to the mail server. Note: Passing a userid and password in an email presents a possible security exposure. While the email resides on the POP3 or IMAP server, someone might be able to access this information. Time Interval. How often (in seconds) the email port is to check for incoming emails on the POP3 or IMAP server. Port. Port to use for the mail server. The default for POP3 is 110; the default for IMAP is 143. Log out after each mail check. For use with IMAP and multithreading only. If you select Yes, the 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 readonly threads remain intact. Select Yes if your IMAP server restricts the number of connections it will allow to remain logged in.
68
Configuring Ports
Specify Run services as user. If you selected Yes in the Require authorization within message field, the Run services as user field remains blank because the Integration Server expects the user name and password to be in the email. If you selected No in the Require authorization within message field, you must enter the user under which the service is to run on the Integration Server. Require authorization within message. If you select Yes, the Integration Server checks for $user and $pass parameters in the Subject line of the email. The user name is the user under which the service is to run on the Integration Server. If you select No, you must specify the user in the Run services as user field above.
Message Processing
Global Service. Service to be executed on the Integration Server. This field overrides a service specified in the Subject line of the email. Default Service. Service to be executed if the email does not provide a valid service in the Subject line and the Global Service field is blank. Send reply email with service output. Tells the Integration Server to send any output generated by the service to the original sender in an email attachment. If the original email contained multiple attachments, the reply contains an equal number of attachments. Send reply email on error. Tells the Integration Server to report any errors that occurred during service execution to the original sender in the Body portion of an email. Delete valid messages (IMAP only). Tells the Integration Server to delete a valid email from the IMAP server once the Integration Server has successfully received the email. This setting helps prevent emails from accumulating on the IMAP server, possibly affecting disk space and performance. The Integration Server always deletes emails on a POP3 server. Delete invalid messages (IMAP only). Tells the Integration Server to delete invalid emails from the IMAP server. Invalid emails are those that experienced errors during processing. This setting helps prevent invalid emails from accumulating on the IMAP server, possibly affecting disk space and performance. The Integration Server always deletes emails on a POP3 server.
69
Specify Multithreaded processing (IMAP only). Tells the Integration Server to use multiple threads for this port. This setting allows the port to handle multiple requests at once and avoid a bottleneck. Number of threads if multithreading is turned on. Tells the Integration Server the number of threads to use for this port. The default is 3. Invoke service for each part of multipart message. Specifies whether the Integration Server invokes the service for each part of a multipart message or just once for the entire message. If you specify No, the entire email is passed to the appropriate content handler and then to the specified service for execution. When you send an entire multi-part email, make sure the server includes the email 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 email. See Include email headers when passing message to content handler below. If you specify Yes, the Integration Server treats each part of the message individually. That is, the 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 email 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 email headers when passing message to content handler below. Include email headers when passing message to content handler. Specifies whether the Integration Server includes the email headers when passing an email message to the content handler. The email headers are typically found at the beginning of an email 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 email. Specify No if you are processing the different parts of an email individually. If you are processing a single-part email, you probably do not want to include email headers.
70
Configuring Ports
Specify Email body contains URL encoded input parameters. Specifies how the IS treats input parameters it finds in email messages.With this value set to Yes, the IS 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, the IS treats the string as plain text and passes it to the appropriate content handler.
6 7 8
Click Save Changes. On the Port screen, change the Access mode if necessary by clicking Change Global IP Access Restrictions. On the Ports screen, 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.
When you configure the file polling port, you specify how often to poll for files, the name and location of the processing service to use, file names to filter for, as well as other options. To add a File Polling port 1 2 3 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Add Port.
71
4 5
In the Add Port area of the screen, select webMethods/FilePolling. Click Go to Step 2. The Integration Server displays a screen requesting information about the port. Enter the following information: For this field Package Specify Package Name 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 servers machine. Security Run services as user User name you want to use to run the services assigned to the File Polling directory Monitoring Directory Directory on Integration Server that you want to monitor for files. Working Directory (optional) Directory on the Integration Server to which the server should moves 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 subdirectory, MonitoringDirectory\..\Work, is automatically created if no directory is specified. Completion Directory (optional) 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.
Polling Information
72
Configuring Ports
Specify Error Directory (optional) Optional - 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. File Name Filter (optional) 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. File Age (optional) 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. Allow Recursive Polling Whether the Integration Server is to poll all sub-directories in the Monitoring Directory. Select Yes or No. Content Type 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.
73
Specify Processing Service Name of the service you want the 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. Cleanup Service Optional - The name of the service that you want to use to clean up the directories specified under Polling Information. File Polling Interval How often (in seconds) you want Integration Server to poll the Monitoring Directory for files. Cleanup File Age Optional - The number of days to wait before deleting processed files from your directories. The default is 7 days. Cleanup Interval Optional - How often (in hours) you want Integration Server to check the processed files for cleanup. The default is 24 hours Maximum Number of Invocation Threads The number of threads you want the Integration Server to use for this port. Type a number from 1-10. The default is 10.
6 7
Click Save Changes. Make sure the ports 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.
74
Configuring Ports
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.
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.
75
To delete a port 1 2 3 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 the icon in the Delete column to delete the port. The server displays a dialog box that prompts you to verify your action. Click OK to verify you want to delete the port.
Enabling/Disabling a Port
If you want to temporarily prevent the server from accepting requests on one of its ports, you can disable that port. This action blocks incoming requests from reaching the server. When a port is disabled, clients receive an error message when they issue requests to it. Later, you can enable the port. If you shut down and restart the server, the port remains disabled until an administrator enables it. Disabling a port is a convenient way to eliminate developer access to an Integration Server once it goes into production. Another way to enable or disable a port is to enable or disable the package associated with the port. 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. When a package is associated with a port, enabling the package enables the port and disabling the package disables the port. For more information about associating a package with a port see Configuring Ports on page 62. Important! You must leave at least the primary port enabled.
To disable a port 1 2 3 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 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 To enable a port 1 2 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Ports. icon with No to indicate that the port is now disabled.
76
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.
77
Specify Type of FTP proxy server to connect to using the pub:client.ftp built-in service. The proxy server always requires the FTP server name, FTP user name, and the FTP user password. The method you use to send this information to the FTP proxy server depends on the type of proxy server you have. The Integration Server supports the following proxy server types: 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 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
78
79
it easier to present different certificates to them. See Presenting Multiple Client Certificates on page 121 for more information. Performing package replication. For a subscriber to set up a subscription with a publisher or pull a package from the publisher, you must define the publishing server as a remote server to the subscriber. The alias tells the subscribing server how to connect to the publishing server to set up the subscription or pull the package. See The Subscribing Server on page 251 for more information. Using a reverse invoke Integration Server. If you use a webMethods reverse invoke Integration Server in your DMZ to protect your internal Integration Server, you must define the reverse invoke Integration Server as a remote server to your internal server. The definition for an alias contains the connection information the server requires to connect to a remote server. It identifies the host name or IP address of the remote server and indicates whether the server should use an HTTP or HTTPS connection to connect to the remote server. The alias also identifies a user name and password that the server supplies to the remote server. The remote server uses the user name and password to authenticate the client and to determine if the client is authorized to execute the requested service. In effect, the alias grants access to a remote service by allowing the user to impersonate an authorized user on the remote server. Therefore, to prevent unauthorized users from accessing services on remote servers, the alias also contains access control information. You specify an ACL that protects the use of the alias. If a client that is authorized to use the alias makes a request, the server will request the service on the remote server. If a client that is not authorized to use the alias makes a request, the server rejects the request and does not invoke the service on the remote server.
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 3 4 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Remote Servers. Click Create Remote Server Alias. Set the Remote Server Alias Properties as follows:
80
Specify Name that you want to use for the alias. You can give the remote server any alias name you want. There is no restriction on the characters you can specify or a limit to the length of the alias. 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. Number of minutes that the server maintains an idle connection to the remote server. If you specify 0, there is no timeout limit; the server maintains the connection until your local server is shut down or the sessions that are using the alias expire. Any remote invoke connection that is GLOBAL (instead of SESSION) will survive indefinitely; therefore, use of 0 for a timeout limit is not recommended.
Use SSL
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.
Private Key
Specifies the name of the file containing the Entrust private key associated with this server's digital certificate.
81
Specify Certificate you want to present to this remote server. You must specify the entire certificate chain using this format. Subject , Intermediate1 , Intermediate2 ,, Root Subject is the local Integration Servers certificate, that is, the certificate you want to present to the remote server. Intermediate1 and Intermediate2 are optional intermediate certificates in the certificate chain. Root is the root CA certificate of the certificate chain. Specify the path and file name for each element of the chain. For example:
config\cert.der,config\intermedcert.der,config/cacert.de r
Retry Server
Host name or IP address (e.g., workstation6.webmethods.com) of a remote server you want your local Integration Server to connect to if the primary remote server is unavailable. Specify this parameter if you are using the remote:invoke and pub.remote.gd:*services to invoke services on a remote server that is part of a cluster.
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.
82
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.
83
Configuring Where the Integration Server Writes Logging, Status, and Other Information
The Integration Server collects and stores information about the following areas: Key Cross Referencing and Echo Suppression: Cross-reference keys and process integrity status information. This information is required to synchronize updates among various applications and the databases they reference. Logging: Auditing information about service execution (audit, error, session, and guaranteed delivery) on the Integration Server. Also includes auditing information about processes. These include processes generated by Business Process Modeler. The webMethods Monitor uses this information to resubmit failed processes and services. Document History: History of documents received by triggers on the Integration Server. The server uses this information during duplicate detection to determine whether a trigger already received and processed a document. Trading Networks: Database used by webMethods Trading Networks. Although the Integration Server can write this information to flat files, it is often better to use a JDBC database instead. For example, for logging data to be available to webMethods Monitor, it must be stored in a JDBC database. Other benefits of storing information in a JDBC database include improved performance and the availability of database utilities for controlling how long the data is retained. The following sections describes how to configure where the Integration Server writes the Key Cross Referencing and Echo Suppression information. For information about where to store Logging and Document History data, see webMethods Integration Platform Logging and Monitoring Guide. For information about where to store the Trading Networks database, see webMethods Integration Platform Installation Guide.
Configuring Integration Server to Write Key Cross Referencing and Echo Suppression Data to a Database
The Integration Server connects to the Key Cross Referencing and Echo Suppression database and the other databases mentioned above by using functional aliases and JDBC connection pools. Note: The Integration Server does not use the functional aliases and the JDBC connection pools to connect to the Integration Server repository database or to databases accessed through WmDB or the JDBC Adapter. Configuring the Integration Server to write Key Cross Referencing and Echo Suppression data to a database requires these steps:
84
Configuring Where the Integration Server Writes Logging, Status, and Other Information
Prepare the database to be written to by Integration Server and to hold the Key Cross Referencing and Echo Suppression data. Define a JDBC connection pool for the Key Cross Referencing and Echo Suppression function. Associate the Key Cross Referencing and Echo Suppression function with the database. Configure the Integration Server to write the Key Cross Referencing and Echo Suppression data to the database. These steps are explained in detail later in this section. Note: You might have done some or all of these tasks when you installed Integration Server. If so, review this section to make sure you have completed all the tasks.
You must use DataDirect Connect JDBC 3.3 as your driver; it is the only JDBC driver certified by webMethods for this purpose. The Connect JDBC driver is a Type 4 JDBC driver that does not have a server component. The client component comes with Integration Server, so no installation is required.
85
Prepare the database 1 Ask your database administrator to set up the user ID, password, and database permissions that Integration Server needs to connect to the database. Integration Server requires create, update, and delete permissions. Install the script you need to create the database tables for the Key Cross Referencing and Echo Suppression data. Note: This section provides only instructions that are specific to installing the database script. For complete instructions on using the webMethods Installer, see the webMethods Integration Platform Installation Guide. a b c Download webMethods Installer 6.1 from the webMethods Advantage Web site at http://advantage.webmethods.com and start the installer. Specify the installation directory as the webMethods 6.1 installation directory (by default, webMethods6). In the component selection list, navigate to Database Scripts. Choose to install Script Files. The installer installs create and drop table scripts in the webMethods_directory\common\db\scripts\create and drop directories, respectively.
Create the Key Cross Referencing and Echo Suppression data tables in the database by executing the create_xref_6-1_database.sql script.
Note: If you later need to drop the Key Cross Referencing and Echo Suppression tables from the database, execute the drop_xref_6-1.sql script.
86
Configuring Where the Integration Server Writes Logging, Status, and Other Information
Fill in the fields as follows: Box Alias Name Alias Description Associated Driver Alias Database URL Entry Name to use for the connection pool. The name can include only characters that are valid for a file name in your operating system. Description for the connection pool. Driver to use to connect to the database. URL for the database, as follows: URL Oracle
jdbc:wm:oracle://host_or_IPaddress:port; SID=database_name
Default Port
1521
SQL Server
jdbc:wm:sqlserver://host_or_IPaddress:port; databaseName=database_name;SelectMethod=cursor
1433
DB2 UDB
jdbc:wm:db2://host_or_IPaddress:port; databaseName=database_name; PackageName=package_name; CreateDefaultPackage=true; ReplacePackage=true
50000
446
Note: AlternateId must match the schema in which you created the logging database tables. User Id Password Minimum connections User name for Integration Server to use to log in to the database, if your database administrator set one up. Password for Integration Server to use to log in to the database, if your database administrator set one up. Minimum number of connections the connection pool must keep open at all times.
87
Entry Maximum number of connections the connection pool can have open at one time. Calculate this value as part of the total possible number of connections that could be open simultaneously by all applications that write to the database. Such applications include other Integration Servers that are writing to the database and other webMethods components such as Trading Networks. webMethods Monitor uses one connection. Make sure the total number does not exceed the databases connection limit. If one of the applications opens more connections than the database allows, the database will reject subsequent requests for connections from any application. Suppose the databases connection limit is 40 connections. If you are storing just Key Cross Referencing and Echo Suppression data in the database and webMethods Monitor is the only other application that connects to the database, you could safely specify 39 as the maximum number of connections for the Key Cross Referencing and Echo Suppression data connection pool. If other applications also write to the database, you would have to decrease that number to accommodate the maximum possible number of connections that could be opened by the other applications. For example, if Trading Networks also writes to the database and could use up to 5 connections, you would specify 34 as the maximum number of connections for the Key Cross Referencing and Echo Suppression data connection pool. When a database rejects connection requests, the exceptions thrown are handled by each application as specified in that application.
Idle timeout
Period of time, in milliseconds, the connection pool can keep an unused connection open. After the specified period of time, unused connections that are not needed to satisfy the Minimum connections value are closed.
88
Configuring Where the Integration Server Writes Logging, Status, and Other Information
Functional aliases are predefined by the server. You cannot add or delete a functional alias, but you can change the connection pool with which a functional alias is associated. Associate the functional alias with the database 1 2 3 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click JDBC Pools. Associate the Key Cross Referencing and Echo Suppression function with the database as follows: a Under Functional Alias Definitions, locate the Xref functional alias. Locate the Edit Association column for the functional alias on the far right side of the page. Click Edit. Select the connection pool you created for the function from the Associated Pool Alias field. Click Save Settings. Integration Server Administrator returns to the Settings > JDBC Pools page. Initialize the connection pool. In the Functional Alias Definitions area, locate the Restart Function column for the Xref functional alias on the far right side of the page. Click Restart. Make sure the function can connect to the database. In the Functional Alias Definitions area, locate the Test column for the Xref functional alias on the far right side of the page. Test the connection by clicking .
b c d
89
90
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 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 more information, see Appendix D, Managing Document Retrieval and Document Processing.
91
92
To set the maximum number of server threads for document retrieval and processing 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 Trigger Throttle Controls, and then click Edit Trigger Throttle Controls. Under Trigger Document Retrieval, in the Maximum Document Retrieval Threads field, type the maximum percentage of the server thread pool that can be used to retrieve documents from the Broker. You must enter a value greater than zero. The default is 100%. Under Trigger Execution, in the Maximum Trigger Execution Threads field, type the maximum percentage of the server thread pool that can be used to process documents in trigger document stores. You must enter a value greater than zero. The default is 100%. Click Save Changes.
Notes: 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. If the current number of server threads retrieving documents is greater than the new value set by the Maximum Document Retrieval 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 value of Current Document Retrieval Threads is less than the thread value of Maximum Document Retrieval Threads. If the current number of server threads processing documents (executing triggers) is greater than the thread value determined by the Maximum Trigger Execution 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 value of Current Trigger Execution Threads is less than the thread value determined by Maximum Trigger Execution Threads.
93
5 6
94
To set the session timeout limit 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 Resources. Click Edit Resource Settings. In the Session Timeout field, type the number of minutes you want the server to wait before terminating an idle session. Click Save Changes.
95
Timeout The Timeout parameter 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). Retries The Retries parameter 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
96
Specify An integer that indicates the number of seconds the server waits for a response from the target server before retrying the service or returning a timeout error to the client. An integer that indicates the number of times the server retries a service that has timed out before returning an exception to the client.
Retries
97
Important! As part of configuring your server to publish and subscribe to documents, you might need to increase the minimum and maximum heap size. The heap size indicates how much memory is allotted for server processes. To edit the heap size, shut down the server, and open the server.bat or server.sh using a text editor. Set JAVA_MIN_MEM to the minimum heap size and set JAVA_MAX_MEM to the maximum heap size. By default, the minimum heap size is 128MB and the maximum heap is 256MB. Your capacity planning and performance analysis should indicate whether you need to set higher maximum and minimum heap size values.
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.
98
Specify... 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 and the trigger document 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 > Document Stores page. Note: The Capacity field displays Broker Not Configured if there is not a Broker configured for the server.
Refill Level
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.
99
Note: An asterisk (*) next to a field indicates that you need to restart the server for changes to take effect.
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 Document Stores Settings, and then click Edit Document Stores Settings. Set the Trigger Document Store parameters as follows:
100
Specify... The location of the trigger document store. By default, the Integration Server saves the trigger document store in the following directory:
\webMethods6\IntegrationServer\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 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 and the trigger document store.
Note: An asterisk (*) next to a field indicates that you need to restart the server for changes to take effect.
101
In a cluster of Integration Servers connected to a Broker version 6.0.1, each Integration Server in the cluster maintains its own inbound document history information. That is, the inbound document history information is not shared across the cluster. Note: The Duration field under Inbound Document History can be set only if the Integration Server connects to a Broker version 6.0.1. The Duration field is not available if the server connects to a 6.1 or later version of the Broker. For detailed information about configuring the Duration field, see the 6.0.1 version of the webMethods Integration Server Administrators Guide.
102
memory to empty the outbound document store and can allow the outbound document store to empty more slowly, decrease the number of documents sent for each transaction. However, it is advisable to drain the outbound document store as quickly as possible because the server performs more quickly and uses fewer resources when publishing documents directly to the Broker. Tip! You can use the Current Documents in Outbound Store field to monitor the number of documents in the outbound document store and how quickly the server drains the store.
To configure how quickly the server empties the outbound 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 Document Stores Settings, and then click Edit Document Stores 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.
103
request. Because the Integration Server does not associate user credentials with a published document, you can specify the user account for the Integration Server to use when invoking services associated with triggers. You can instruct the Integration Server to invoke a service using the credentials of one of the predefined user accounts (Administrator, Central, Default, Developer, Replicator). You can also specify a user account that you or another server administrator defined. When the Integration Server receives a document that satisfies a trigger condition, the Integration Server uses the credentials for the specified user account to invoke the service specified in the trigger condition. Make sure that the user account you select includes the credentials required by the execute ACLs assigned to the services associated with triggers. For example, suppose that you specify Developer as the user account for invoking services in triggers. The 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).
To specify a user account to execute a service in a trigger condition 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 Document Stores Settings, and then click Edit Document Stores Settings. In the Run Trigger Service As User area of the screen, in the User field, select the user account whose credentials the Integration Server uses to execute a service specified in a trigger condition. Each predefined user provides different security access to the Integration Server. The default user is Administrator. Administrator. Used to access the Integration Server Administrator to configure and manage the server. Central. Used to monitor different servers from one Integration Server. Default. Used when the client does not supply a user name and password. Developer. Used to connect to the server from the webMethods Developer to create, modify, and delete services that reside on the server. Replicator. Used during package replication. 5 After editing the document store settings, click Save Changes.
104
105
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.
106
To connect the server to a Broker 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Settings menu of the Navigation panel, click Broker. Click Edit Broker Settings. If you want to connect the server to the Broker, click Configured and fill out the following fields, as shown below: For this parameter Broker Host Broker Name Client Group Specify Name (DNSname:port or ipaddress:port) of the machine on which the Broker server resides. Name of the Broker as defined on the Broker server. The default is Broker #1. Client group to which this Integration Server connects. The client group is defined on the Broker server and describes multiple Integration Servers that have similar characteristics. If the specified client group does not exist, the Integration Server creates it when connecting to the Broker.
107
Specify Important! If you switch the Integration Server from one client group to another client group, you need to restart the server, and synchronize all of the publishable document types on the server with the Broker. Then shut down the server and use the Broker Administrator running on another server to delete all of the Broker clients created for the server with the changed client group. Restart the server with the changed client group. The Broker does not share Can Publish and Can Subscribe permissions across client groups.
Client Prefix
A string that identifies the server to the Broker. By default, the server uses its license key for the prefix. For ease of use you can define your own, shorter, prefix 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 server is part of a cluster, make sure all servers in the cluster use the same client prefix. Important! Simply assigning a group of servers the same client prefix will not make the servers function as a cluster. You must set up the cluster and configure each Integration Server within the cluster. For more information about creating a cluster of Integration Servers, see webMethods Integration Server Clustering Guide.
108
Specify The path to the Integration Servers certificate file. A certificate file contains the certificate information required for the Integration Server and the Broker to communicate with each other using SSL. The Integration Servers certificate file contains the certificate of the CA (Certificate Authority) that signed the Brokers certificate. The CAs certificate is also known as the trusted root. This information allows the Integration Server to authenticate the Broker. The Integration Servers certificate file can also contain the Integration Servers certificate and the certificate of the CA that signed the Integration Servers certificate. The Integration Servers certificate file is stored on the machine on which the Integration Server resides. The Brokers certificate file contains the Brokers certificate and the certificate of the CA that signed the Brokers certificate. This information allows the Broker to authenticate the Integration Server. The Brokers certificate file resides on the machine on which the Broker server resides. A certificate file must exist on the Broker server and on each Integration Server that will connect to the Broker. If the Broker server and the Integration Server reside on the same machine, they can use the same certificate file, but this is not recommended. If the certificate file contains multiple certificates, you must supply a Distinguished Name to tell the server which certificate to use.
Password
Password required to access the certificate file. The Integration Server needs access to its certificate file when connecting to the Broker. Whether or not the connection between the Integration Server and the Broker is encrypted.
Encryption
109
Specify Whether or not you want the Broker to authenticate the Integration Server. If you select Client Authentication, you must also specify the Distinguished Name, described below. In addition, the Brokers certificate file must contain the certificate of the CA that signed the Integration Servers certificate.
Distinguished Name
Required if you want the Broker to perform client authentication of the Integration Server. A Distinguished Name is that portion of a certificate that identifies the owner of the certificate. It provides information such as common name, organizational unit, organization, locality, state or province, country, and email address. Here is an example of a distinguished name: CN=John Smith,OU=Engineering,O=webMethods, L=Sunnyvale,ST=CA,C=USA,[email protected]
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 Synchronizing Publishable Document Types in the Publish-Subscribe Developers Guide. For more information about using the Broker, see Publish-Subscribe Developers Guide and the webMethods Broker Administrators Guide.
110
111
112
CHAPTER
113
Overview of Security
To secure access to your server and the data that resides on the server, you can: Control who can configure and manage the server. You can restrict access to the Integration Server Administrator. Control who can use the webMethods Developer to connect to the server. You can specify who is authorized to view, create, edit, and delete the services and other elements that reside on the server. Secure the transmission of data between IS clients and the server. You can configure a port for SSL communications. Digitally sign documents and verify digital signatures. You can code your services to invoke a built-in service (pub.security.pkcs7:sign) to digitally sign a document. Similarly, you can invoke another built-in service (pub.security.pkcs7:verify) to ensure a document has not been altered since it was digitally signed. In addition, you can use PKI profiles to digitally sign and verify documents. The corresponding services here are pub.pki.pkcs7:sign and pub.pki.pkcs7:verify. Refer to Securing Your Server with PKI Profiles on page 186 to learn more about how to use PKI profiles. Refer to the webMethods Built-In Services Reference for more information about the built-in services. Control access to packages, folders, and other elements that reside on the server. You can create Access Control Lists (ACLs) that control access to individual packages, folders, and other elements such as specifications, records, and schemas. In addition, you can restrict which services are available for execution from specific ports. Specify how you want the server to authenticate clients. This allows you to authenticate a client based on client certificates or user name/password authentication. In addition, the Integration Server also supports NT Challenge/Response authentication when the server acts as a Web client to access information from a server. (Microsoft Internet Information Server is an example of a server that supports the Microsoft Windows NT built-in authentication mechanism.) Use different certificates for different connections. This allows you to specify different certificates (and associated private keys) depending on the host with which the server is communicating. Isolate your webMethods Integration Server behind an inner firewall. You can use the reverse invoke feature to place a reverse invoke Integration Server in your DMZ to intercept requests from external clients before passing the requests to your internal server. See Protecting Your Internal Integration Server with Reverse Invoke on page 161 for more information.
114
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 Users and Groups.
115
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, select the Administrator group from the pull-down list of groups. 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 6 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. Click Save Changes. .
Note: Alternatively, you can create a new group such as LocalAdministrators, add that group to the Administrators ACLs allow list, and add the user to that group.
116
Controlling Who Can Create, Modify, and Delete Packages, Folders, and Other Elements
Controlling Who Can Create, Modify, and Delete Packages, Folders, and Other Elements
A developer can use the webMethods Developer to view, create, modify, and delete packages, folders, services, and other elements that reside on the server. Before the server allows a connection from the Developer, it ensures that the user has developer privileges. 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 Authenticating Clients on page 150.) 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 the 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 Users and Groups.
117
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, select the Developer group from the pull-down list of groups. 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 6 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. Click Save Changes. .
Note: Alternatively, you can create a new group such as LocalDevelopers, add that group to the Developers ACLs allow list, and add the user to that group.
118
2 3
119
Internet Resource
When the server acts as an SSL client, as part of the SSL handshake it receives the digital certificate of the Internet Resource to which it is connecting. The digital certificate is usually part of a digital certificate chain. The chain contains the certificates of one or more certificate authorities (CAs) and the digital certificate of the Internet Resource.
CA certificate CA certificate Internet Resource digital certificate
At times, one or more CA certificates in the chain might be expired. When a Web browser connects to the Internet resource, it might accept the connection even if it receives an expired CA certificate. The Web browser accepts the connection if it has on file a valid certificate for the CA whose certificate is expired. In contrast, the Integration Server does not accept a connection when one of the CA certificates in the chain is expired unless you specifically configure the Integration Server to do so. If you want the Integration Server to accept a connection when one or more of the CA certificates in the chain are expired, you must update the watt.security.ssl.ignoreExpiredChains property in the server configuration file (server.cnf) to true. This setting will cause the server to ignore expired CA certificates in the chain. To change this setting, use the Settings>Extended screen of the Integration Server Administrator, as described in Working with Extended Configuration Settings on page 106. Remember to restart the server after changing the setting.
120
Wait for your signed certificate. Periodically check the status of your request. Obtain your digital certificate and the certificate of the certificate authority that signed your digital certificate. Use the webMethods Certificate Toolkit to make the certificates available to the Integration Server and convert them to DER format if necessary. If the Integration Server will act as an SSL client, obtain the digital certificates of the certificate authorities that signed the certificates for the Internet resources that you will connect to. Place each certificate in a separate file. Place the files in the directory you use to store digital certificates of certificate authorities.
Refer to Items You Need Before Configuring Ports to Request Client Certificates on page 152 and Obtaining the Certificate of the CA that Signed an Internet Resources Certificate on page 124.
121
Notes Refer to Configuring the Server to Use SSL on page 124. Refer to Configuring Ports on page 62.
Add an HTTPS port if none are defined. If you want to allow only secure connections to the server, ensure that the primary port uses an HTTPS port and delete all other non-HTTPS ports. Add as many additional HTTPS ports as you want. If you want to authenticate using client certificates but will allow clients without certificates to authenticate using passwords, configure the server to request client certificates. If you want to authenticate using client certificates and will not allow clients to authenticate using passwords, configure the server to require client certificates.
122
Digital Certificate for the Integration Server. A digital certificate attests to the identity of the Integration Server. You can use the webMethods Certificate Toolkit to create a Certificate Signing Request (CSR) for a digital certificate and to make the certificate available on your server. After creating the CSR, the webMethods Certificate Toolkit takes you to Verisigns website so that you can your request to them. Request the certificate in DER format. If you receive a certificate in PEM format (or any format other than DER), use the webMethods Certificate Toolkit to convert it to DER format. When the Integration Server acts as an SSL server, it uses this certificate in the SSL handshake to identify itself to the client. When the Integration Server acts as an SSL client and the SSL server requests a client certificate, the Integration Server presents this certificate as its client certificate. The Integration Server can present its own client certificate or certificates provided by other organizations. For example, some organizations prefer to provide certificates signed by their own CAs for clients to use, rather than accept the clients certificate. You can set up the webMethods Integration Platform to present client certificates from multiple organizations. This involves obtaining the certificates and setting them up on your server, then using remote aliases or special public services to control which certificate is being presented. Refer to the webMethods Certificate Toolkit Users Guide for instructions on obtaining a certificate for the Integration Server. Refer to Configuring the Server to Present Multiple Client Certificates on page 126 for more information about sending different certificates to different SSL servers. Certificate of the CA that signed the webMethods Integration Platform's Server certificate. The signing CAs certificate attests to the identity of the CA that signed the digital certificate for the Integration Server. The CA should send this certificate to you when it sends you the digital certificate for the Integration Server. If it is not in DER format, you can use the webMethods Certificate Toolkit to convert it to DER format. When the Integration Server acts as an SSL client and the SSL server requests a client certificate, the Integration Server presents this certificate along with its client certificate. If the certificate authority does not send you its certificate, refer to the webMethods Certificate Toolkit Users Guide for instructions on obtaining it. Certificate of the CA that signed an Internet resources certificate. If your Integration Server will run services that submit HTTPS requests to other resources on the Internet, the Integration Server will be acting as a client and will receive certificates from these resources. In order for these transactions to work, your Integration Server must have on file copies of the CA certificates of the Internet resources. For example, if your Integration Server runs a service that requests services from Molly Manufacturing, your Integration Server must have on file a copy of the certificate of the CA that signed Molly Manufacturings certificate. Refer to Obtaining the Certificate of the CA that Signed an Internet Resources Certificate below.
123
Note: The Integration Server uses the certificate information on this screen for SSL communications through a port unless you have specified different certificate information for that port. See Configuring Ports on page 62 for more information about configuring ports and Configuring the Server to Present Multiple Client Certificates on page 126.
124
The hardware accelerator vendor information always applies server-wide; you cannot specify different hardware accelerators for different ports. 5 In the Trusted Certificates area of the screen, in the CA Certificate Directory field, type the name of the directory (relative to the server home) that contains the digital certificates of certificate authorities trusted by this server, for example config\cas. Note: Most of the time you will want to specify a trusted certificates directory; however, there may be times when you want to leave it blank. For example, you might want to trust all certificate authorities on outbound requests and trust specific CAs on different ports for incoming requests. For outbound requests (a certificate the server receives from a server that it submits a request to), if you leave this field blank or specify a directory that does not contain certificates for CAs, by default, the server trusts all certificate authorities. The property that controls this behavior (watt.security.cert.wmChainVerifier.trustByDefault) is set to True by default. If this property is set to False and no directory or an empty directory is specified, the server will trust no certificates for outbound requests. For inbound requests, you can specify a trusted certificates directory at the server level (on the Security Certificates screen) or at the port level (on the Edit HTTPS Port Configuration screen). If you omit a trusted authorities directory (or specify a directory that does not contain CA certificates) from both the server level and the port level, the server will trust no certificate authorities. If you specify a trusted authorities directory at the server level and at the port level, the server uses the directory specified at the port level for determining trust on connections being made to that port. If you specify a trusted authorities directory at just the port level, the server uses the port-level setting for requests being made to the port. For S/MIME signature trust validation, if you leave this field blank or specify a directory that does not contain the certificates of trusted CAs, by default the server will trust 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. 6 Add an HTTPS port if one does not already exist. Follow the instructions in Adding Ports on page 63. Specify HTTPS for the type of port. Make sure no other applications are listening on the port you want to use. For HTTPS protocol, the standard port is 443.
125
Note: 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, webMethods 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. Test whether your server is listening to https requests on the port you specified. Bring up your browser and type in https://localhost:port. If the port is working properly, you will see the logon screen for the Integration Server Administrator. If the Integration Server Administrator does not display, check the following: If you used the webMethods Certificate Toolkit to create this certificate, make sure the key you specified on the Convert and Save Certificates for use with webMethods Software screen is the same as the key you sent with your CSR. If the keys do not match and the correct one is the one you sent with the CSR, then go to the Convert and Save Certificates for use with webMethods Software screen and perform the conversion again, this time specifying the correct key. If the key you sent with your CSR is not the correct one, then you must resubmit the CSR, this time specifying the correct key. Check to see if a service running on the machine is listening to the same port. 7 If you want the server to ignore expired CA certificates that it receives from an Internet resource (i.e., a Web server, another Integration Server), update the watt.security.ssl.ignoreExpiredChains property to be true. For information about this setting, see When the Integration Server Is an SSL Client on page 120. To change this setting, use the Settings>Extended screen of the Integration Server Administrator, as described in Working with Extended Configuration Settings on page 106. Remember to restart the server after changing the setting.
126
In the following diagram, Company B and Company C require that certificates signed by their CA be presented by the client. Company D accepts Company As client certificate.
Server A acting as a client
As certificate
Integration Server
Integration Server
Bs certificate
Integration Server
Cs certificate
Integration Server
Obtaining Certificates
Make the certificate you want to use available to your Integration Server. If you do not already have the certificate you want to use, you can create it using the webMethods Certificate Toolkit. Refer to the webMethods Certificate Toolkit Users Guide for instructions on using the toolkit. If you are going to use a certificate provided by the SSL Server with which you want to communicate, obtain the certificate from that organization.
127
Place the certificate in a location that is easily accessible to the Integration Server. A good place is the servers config directory. For example, you could put the client certificate to use with Company B in webMethods6\config\certs\companyB.
128
129
130
To reset an individual port, update the following parameter in the config\listeners.cnf file in the package for which the port is defined:
<array name="hostAllow" type="value" depth="1"> <value>132.906.19.22</value> </array>
131
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.
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. Char * ? 7 Description Matches any number of characters Matches any single character Example r*.webmethods.com workstation?.webmethods.com
Deny Inbound Connections from Specified Hosts (Allow All Others) The following procedure describes how to change the global IP access setting to Allow by Default and specify some hosts to deny. With this setting in effect, the server allows most hosts and denies some. To deny inbound requests from specified hosts 1 2 3 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.
132
Click Change IP Access Mode to Allow by Default. The server changes the access mode and displays a screen from which you can add hosts to the Deny List.
5 6
Click Add Hosts to Deny 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 deny inbound requests). Separate your entries with commas, for example: *.denyme.com, *.denyme2.com. 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. Char * ? Description Matches any number of characters Matches any single character Example r*.webmethods.com workstation?.webmethods.com
133
Important! Before you switch the port setting to Deny by Default, make sure you have at least one other port that allows at least one host. If you inadvertently lock all hosts out of the server, you can correct the problem by manually updating the appropriate configuration file, as shown below. Before updating these configuration files, be sure to shut down the Integration Server To reset the global setting, update the watt.server.hostAllow parameter in the server.cnf file. For example:
watt.server.hostAllow=132.906.19.22
To reset an individual port, update the following parameter in the config/listeners.cnf file in the package for which the port is defined:
<array name="hostAllow" type="value" depth="1"> <value>132.906.19.22</value> </array>
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. You can use the following pattern-matching characters to identify several clients with similar host names or IP addresses. Char * ? Description Matches any number of characters Matches any single character Example r*.webmethods.com workstation?.webmethods.com
134
Deny Inbound Requests from Specified Hosts (Allow All Others) The following procedure describes how to change the IP access settings for an individual port to Deny by Default and allow some hosts. With this setting in effect, the server allows most hosts and denies some through this port. To deny inbound requests from only specified hosts 1 2 3 4 5 6 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 Allow by Default. Click Add Hosts to Deny List. Specify the host names or IP addresses of hosts from which the server is to deny inbound requests (e.g., workstation5.webmethods.com). Separate your entries with commas, for example: *.denyme.com, *.denyme2.com. 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
135
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 except those you explicitly deny in a list that is associated with the port. Note: Another way to control access to services through a port is to restrict access to clients that present particular client certificates. See Authenticating Clients on page 150 for more information.
To allow access to specified services 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. Click Edit in the Access Mode field with which you want to work. Click Set Access Mode to Deny by Default. Click Add Folders and Services to Allow List. Build a list of folders and services for the server to allow from this port. You can build the list by entering one folder or service at a time, entering sets of folders or services, or doing a combination of the two. Typically, you will group the services you want to expose to your partners in one or more folders. It is then a simple matter of adding those folders to the list. To enter folders or services one at a time, enter the folder or service name in the area provided on the left, and press ENTER. Repeat until you have added all the folders and services you want to add. Alternatively, you might want to allow all services associated with a specific Execute ACL. For example, to create a custom Administrator port, you can expose all services
136
protected by the Administrators ACL. To enter a set of services or folders associated with an ACL, use the pull-down menu on the right of the screen to select an ACL. The server displays a list of the folders and services protected by the ACL. Initially, all these items are selected. If you do not want to add all of them to the list, deselect the ones you do not want. (Use Ctrl-Click to deselect a selected item.) To move these entries to the list of folders and services that will be accessible through the port, click Append Selected. The server appends the selected entries to the existing list. Continue the process of adding individual items and/or sets of items until you have built the list of folders and services you want to make available from this port. Then click Save Additions. 7 Click Return to Port List to return to the Security>Ports screen.
137
Continue the process of adding individual items and/or sets of items until you have built the list of folders and services you want to deny access to from this port. Then click Save Additions. 7 Click Return to Port List to return to the Security>Ports screen.
To reset a port to the default 1 2 3 4 Open the Integration Server Administrator if it is not already open. In the Security menu in the Navigation panel, click Ports. Locate the port with which you want to work in the Port List and click Edit in the Access Mode column. Click Reset to Default Access Settings. The Integration Server changes the type to Deny By Default and creates a default list of allowed services. These include the standard services required to connect to and authenticate to the server.
138
Assigning ACLs to Files the Server Can Serve on page 148 for more information about making files available. This section describes how to control access to resources using ACLs. To control access at the port level, see Controlling Access to Resources by Port on page 130.
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 the Developer and the Integration Server Administrator. List access also allows you to view an elements metadata. Read allows a user to view the main source of an element through the 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. 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.
139
The following table summarizes what the different access types mean for the different elements. Type of access and what it lets you do 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. See that the folder exists. Children will inherit List access if they do not have a specific access of their own. Read N/A Write N/A Execute N/A
Folder
Has no meaning for the folder itself. Children will inherit Read access if they do not have a specific access of their own.
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, and delete the service. Change the ACL assignment for the service.
Has no meaning for the folder itself. Children will inherit Execute access if they do not have a specific access of their own.
Services (includes Flow, Java, C, Adapter services, and Web Service Connectors). Adapter Notifications. Specifications, Schemas, Flat File Schemas, Document Types, Triggers
See that the service exists. In the Developer, tabs for the service will be listed and information under the tabs will be shown for non-source tabs. See that the element exists.
Edit, lock, unlock, and delete the element. Change the ACL assignment for the element.
N/A
140
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. 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.
141
The server uses the following rules 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: Group1s access to the package, folder, or other element Allowed Group2s Access to package, folder, or other element Allowed Denied Not specified User Allowed User Denied User Allowed Denied User Denied User Denied User Denied Not specified User Allowed User Denied User Denied
Predefined ACLs
The server comes with the following predefined ACLs. You cannot delete these ACLs. Administrators. Allows only users in the Administrators group access to a package, folder, or other element and denies all other users. Anonymous. Provides access to unauthenticated users (those that did not specify a valid userid). Default. Allows all authenticated users 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 access to a package, folder, or other element and denies all other users. Internal. Allows only users in the Administrators and Developers groups 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 folders. You should never need to assign this ACL to an element. Replicators. Allows the Replicator user replication privileges. Note: 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.
142
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 the 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.
143
Updating ACLs
After an ACL is created, you can edit it to add and/or remove groups from the Allowed and Denied lists. To update an ACL 1 2 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click ACLs. The server displays a screen similar to the following:
Groups in the Allowed list have been explicitly allowed to access the packages, folders, services, or other elements associated with this ACL. Groups in the Not Specified list have not been explicitly allowed or denied access to the packages, folders, services, or other elements associated with this ACL. Groups in the Denied list have been explicitly denied access to the packages, folders, services, or other elements associated with this ACL To help you determine which users are allowed access by this ACL, the server displays a list of allowed users in the Resulting users in this ACL with access area of the screen. The server builds this list by looking at the groups to which the user belongs
144
and comparing that to the groups allowed by the ACL. See About ACLs on page 139 for more information about how the server determines access. 3 4 5 From the pull-down list of ACLs, select the ACL with which you want to associate a group. To move a user from one list to another select (highlight) the group or groups you want to move. After you have selected all the users you want to move from this list, click the appropriate or button. The server moves the selected groups to the desired list. 6 Click Save Changes.
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 ACLs name. As a result, when you view the elements 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. 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 147. 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 148. To delete an ACL 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 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.
145
146
If you change a folders ACL assignment, it can change the ACL assignments of the elements contained within. Specifically, elements whose ACL assignment is Inherited will change to the folders new ACL assignment. Elements that already have a specific ACL assignment will remain unchanged.
147
To remove an ACL from 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. Select <Default> (inherited) from the pulldown menu of ACL names and click Save Changes.
148
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! The 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
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.
149
Authenticating Clients
This section describes how the Integration Server processes requests from clients attempting to communicate with it. For information about how the Integration Server behaves when it is the client, see When the Integration Server Is an SSL Client on page 120 and Presenting Multiple Client Certificates on page 121. Authentication is determining who a client is. When the server performs authentication, it determines the user name of a client. Authentication works with access control. After the server determines the user name of a client, it can then determine whether the client should be granted access to the requested resource. The server uses the clients group membership to control access to the server resources. The server authenticates when a client attempts to Invoke a service The server controls access to the requested resource by determining whether The client is a member of a group listed among the Allowed Groups or Denied Groups in the Execute ACL that is associated with the service. The client is a member of the Administrators Group, which indicates the client has administrator privileges. The client is a member of the Developers Group, which indicates the client has developer privileges.
Access the Integration Server Administrator Connect to the server from the Developer
Client Certificates
A client certificate is a digital certificate that identifies a client. The server attempts to authenticate using client certificates only if the incoming request is an HTTPS request. If a port is configured to request (or require) client certificates, the server requests the client certificate during the SSL handshake that the client and server perform when initializing an SSL transaction. After the SSL handshake is complete, the server tries to authenticate the client using the client certificate. What happens next depends on how your server is configured. If a port is configured to Request client certificates, a client can connect to that port with or without a certificate. If the certificate exactly matches one on file on the server, the client is automatically logged in as the user that has been previously mapped to that certificate. If the server does not find a matching certificate, it performs Basic Authentication (prompts the client for user and password information). For more information about mapping a user to a certificate, see Importing a Client Certificate and Mapping It to a User on page 152. For more information about Basic Authentication, see Basic Authentication (User Names and Passwords) on page 155.
150
Authenticating Clients
If a port is configured to Require client certificates, a client can connect to that port only if the certificate the client presents was signed by a trusted CA and exactly matches a client certificate on file on your server. Anything less will cause the request to fail. If the request succeeds, the client is automatically logged in as the user to which the certificate has been previously mapped. If you do not configure the port to request or require client certificates, the server will not request a client certificate, but will process one if the client presents it. After this point, processing is the same as if you had configured the port to Request client certificates. The following diagram illustrates the differences between requesting and requiring a client certificate.
Request Certificate Require Certificate
No
No
Request fails
Yes
Yes
No
Request fails
The following lists reasons why the server cannot authenticate a client using client certificates: The server is not configured to use SSL. The incoming request is not an HTTPS request. Your server is configured to Require certificates and the client does not supply a client certificate or the CA certificate of the CA that signed the clients certificate is not in the CA certificate directory, or the client certificate has expired. Your server is configured to Require certificates, the clients certificate is signed by a trusted authority, but there is no certificate mapping for that certificate.
151
Configure the port to request client certificates. Import client certificates and map to specific user
152
Authenticating Clients
the user that is mapped to that certificate. If no match is found, the server prompts the user to enter userid and password information. 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 Integration Server userids you want the clients to log on as. Even 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. Important! Be careful when mapping a userid to particular client certificate. Make sure the user you specify does not have more authority than you want it to.
To import a client certificate and map it to a user 1 2 3 4 5 6 7 8 Open the Integration Server Administrator if it is not already open. In the Security menu of the Navigation panel, click Certificates. Click Configure Client Certificates. In the Certificate Path field, enter the path and file name of the file that contains the certificate you want to import. Click Import Certificate. To map the certificate to a user, find the Current Certificates area of the screen, and click the name in the Subject CN field for the certificate. Click Change User Mapping. From the pull-down list, select a user to which you want to map this certificate and click Save Changes.
153
Enabled column. The server replaces the icon with No to indicate that the port is now disabled.) Then click the port number. 4 Click Edit HTTPS Port Configuration to update the information in the following fields, as necessary: Client Authentication Type of client authentication you want the Integration Server to perform for this port. Select one of the following authentication types from the pull-down list in the field. None. The server will not request client certificates. If the client presents a certificate anyway, the Integration Server processes it. If the certificate matches exactly a client certificate on file on the server, the client is logged in as the user pre-mapped to the certificate. Otherwise, the server prompts the client for a userid and password. Request Client Certificates. The server will request client certificates for all requests that come in on this HTTPS port. If the client does not provide a certificate, the request proceeds anyway. If the certificate matches exactly a client certificate on file, the client is logged in as the user to which the certificate is pre-mapped. Otherwise, the server prompts the client for a userid and password. Require Client Certificates. The server requires client certificates for all requests that come in on this HTTPS port. For the request to succeed, the client must present a certificate that was signed by a trusted authority and that matches exactly a client certificate on file on the Integration Server. If the certificate matches a client certificate on file, the client is logged in as the user to which the certificate was pre-mapped. In all cases, if the certificate presented has not been signed by a trusted authority, the Integration Server does not use it. Servers Certificate Optional. Path and file name of the file that contains the Integration Server's digital certificate. Specify a value here only if you want this port to present a different server certificate from the one specified on the Certificates screen. Optional. Path and file name of the file that contains the certificate for the certificate authority that signed the Integration Server's digital certificate. Optional. Path and file name of the file that contains the private key of the private/public key pair associated with the Integration Server's digital certificate. If you leave this field blank, the Integration Server uses the private key specified on the Certificates screen.
154
Authenticating Clients
Optional. Name of the directory (relative to the server home) that contains the digital certificates of certificate authorities trusted by this server, for example config\cas. If you leave this field blank, the server uses the trusted authority directory specified on the Certificates screen. If this field is blank on the Certificates screen as well, the server then checks the value of the
watt.security.cert.wmChainVerifier.trustByDefault property. If the value is True, the server trusts all certificates. If the
5 6
Click Save Changes. Enable the port by clicking No in the Enabled column.
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 45. 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 users, see Chapter 8, Using an External Directory (LDAP or NIS).
155
Customizing Authentication
There may be times when you need to perform customized authentication. For example, if you use an external directory such as LDAP or NIS to store and manage users and passwords, the passwords might be unavailable to the Integration Server because they are encoded in an unsupported format or because they are stored in an authentication system such as Kerberos. To access these users and passwords, you can write your own pluggable module to take over authentication processing. The server calls this module when the standard method of authentication cannot provide the necessary information.
webMethods Integration Server
Successful?
No
Kerberos
The pluggable module is deployed in a package on the Integration Server and consists of at least a factory class and an authentication module. Factory class. Passes the client-provided userid and password to the authentication module. Authentication module. Performs the actual authentication processing. To make the pluggable module available to the server, you must register the factory class with the server. This registration occurs during execution of a start up service that you write.
156
Authenticating Clients
Note: There is a feature of the Integration Server that allows you to map client certificates to particular users. This mapping allows a user who presents a particular certificate to log on automatically as the corresponding pre-mapped user. To use this feature you must create and maintain a store of client certificates on the Integration Server. If you use an external directory to manage users and passwords and the directory contains certificate information, you can write a pluggable module to obtain certificate information directly from the external directory. This approach saves you from maintaining two certificate stores and allows you to customize certificate authentication. For more information about mapping a user to a certificate, see Importing a Client Certificate and Mapping It to a User on page 152. For more information about Basic Authentication, see Basic Authentication (User Names and Passwords) on page 155. The following sections describe how to set up a pluggable module for your Integration Server. Note: If you are going to use an external directory such LDAP or NIS with the Integration Server, make sure the server is properly configured to work with an external directory. See Chapter 8, Using an External Directory (LDAP or NIS) for instructions.
Overview of Steps
Step
1 2 3
Description Create the factory class. Create the authentication module. Create startup and shutdown services to register and unregister the factory class. Place the factory class, authentication module, and startup and shutdown services in a package. Enable the package.
Step 1
Creating the Factory Class The factory class instantiates a new instance of the authentication module for the Integration Server and passes the user name and password supplied by the client to the module. The factory class must implement the com.wm.security.auth.ModuleFactory interface. Here is a simple example.
157
public static final void myService(IData in) throws ServiceException { // --- <<IS-START(myService)>> --String subject = null; String contenttype = null; String protocol = null; String filename = null; String sentdate = null; String recvdate = null; InputStream is = null; IDataHashCursor idhc = in.getHashCursor(); public static class TestModuleFactory implements ModuleFactory { protected TestModule _module; public TestModuleFactory() { _module = new TestModule(); } public Module getInstance() { return _module; } public static String getMechanismName() { return BasicModule.MECHANISM_NAME; } }
Step 2
Creating the Authentication Module The authentication module performs the actual authentication of the user name and password supplied by the client. In the simple example below, the processToken(Token token) method verifies that the supplied users name is bob and that the supplied password is 123. If the user name and password are correct, the method returns the user name as a string to the Integration Server. The server then checks to make sure this user exists in its list of users. (This list consists of users defined locally and in external directories.)
158
Authenticating Clients
public static class TestModule implements Module { public TestModule () { } public String processToken(Token token) { if (token == null) { return null; } String id = null;
Insert your own authentication processing here
try { BasicToken bt = ( BasicToken ) token; String name = bt. getName (); if (name == null) { return null; } if (name.equals("bob") && bt .getPassword ().equals("123") && UserManager .getUser (name) != null) id = name; } } catch ( ClassCastException cce ) { } return id; } public String getMechanism () {return "basic"; } }
This example is very simple. Typically, rather than checking for a hard coded user name and password, your processToken method will perform authentication checking in another system, such as LDAP or NIS, or in a proprietary or third party system. For an example of code that performs this kind of authentication, see the sample in webMethods6\IntegrationServer\packages\WmSamples\code\source\sample\ldap, which is provided with the Integration Server.
Step 3
Creating Startup and Shutdown Services to Register and Unregister the Factory Class To make your pluggable module available to the server, you must register the factory class with the server. Use the AuthenticationManager.registerMechanism method from a startup service to register the class. A startup service runs each time its associated package is enabled.
159
When you enable the package that contains your pluggable module, the startup service executes and registers the factory class, making the pluggable module the servers alternate authentication processor. This means that if the server cannot perform authentication using the default webMethods authentication, the server turns processing over to the pluggable module. Here is a sample startup service that registers the factory class with the server:
public static final void registerAuth (IData pipeline) throws ServiceException { AuthenticationManager.registerMechanism(TestModuleFactory.getMechanismName() new TestModuleFactory()); }
You must unregister the factory class when the package containing the pluggable module is disabled. You can do so by executing the AuthenticationManager.unregisterMechanism method from the packages shutdown service. A shutdown service is one that executes each time the package is disabled Here is a sample shutdown service that unregisters the factory class from the server:
public static final void unregisterAuth (IData pipeline) throws ServiceException { AuthenticationManager.unregisterMechanism(BasicModule.MECHANISM_NAME); }
For information about setting up startup and shutdown services for a package, see Running Services When Packages Are Loaded, Unloaded, or Replicated on page 281.
Step 4
Place the Factory Class, Authentication Module, and Startup and Shutdown Services in a Package Place the factory class, authentication module, and startup and shutdown services in a package. 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 the package replication feature to copy all the services and files in a package to another server. Most likely you will want to keep files and services related to your pluggable authentication module in a separate package from other applications. This way you can disable those packages for maintenance without affecting authentication on your server.
160
Step 5
Enable the Package To make your pluggable module available to the server, you must enable the package in which the module resides. 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 column. icon and Yes in the Enabled
For more information about enabling a package, see Enabling a Package on page 233.
External clients send requests to the reverse invoke Integration Server (1), which in turn passes the requests to the internal Integration Server (2). After processing the requests, the internal server sends the response to the reverse invoke Integration Server (3), which in turn passes them back to the client (4).
161
With reverse invoke, there is no need to open a port through the internal firewall to allow a connection from the DMZ to the internal network. For reverse invoke 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 invoke 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. In addition to passing requests from and to the external clients, you can also use the reverse invoke Integration Server to perform user-defined functions before passing requests to the internal server. For example, you might create a package that performs XML validation. The reverse invoke server is transparent to the client and, unlike some third-party proxy servers, requires no modifications to the client. Reverse invoke supports nearly all requests that a regular Integration Server handles, including guaranteed delivery. Important! To get the maximum benefit from the reverse invoke configuration, webMethods highly recommends that you configure your inner firewall to deny all inbound connections.
162
The reverse invoke Integration Server converts the request to a message and sends it to the internal server on the previously-established connection between the reverse invoke Integration Server and the internal server. The internal server processes the request then sends a response to the reverse invoke Integration Server. The reverse invoke Integration Server sends a response to the external client. The following diagram shows where the proxy and registration ports fit into the reverse invoke configuration.
Internet DMZ Reverse Invoke Integration Server External Client Proxy Port External Client Registration Port Internal Network Internal Integration Server
163
If desired, you can perform additional processing, such as user-defined XML validation, on the reverse invoke Integration Server before sending the request to the internal server.
External Client
External Client Reverse Invoke Integration Server External Client Internal Integration Server
To set up a pseudo-cluster, you must define a list of hosts you want to be in the pseudo cluster. You specify this list on the watt.server.cluster.hosts property in the server.cnf file of each reverse invoke Integration Server in the pseudo cluster. This allows for failover support to the webMethods Context/TContext clients, just as with a real cluster. For clients that call the service wm.server:getClusterNodes to find out about the servers in the cluster, the server returns the list of hosts specified in the watt.server.cluster.hosts property. To change this setting use the Settings>Extended screen of the Integration Server Administrator, as described in Working with Extended Configuration Settings on page 106. For more information about the watt.server.cluster.hosts property, refer to watt.server. on page 312.
164
165
Notes This is the port through which the reverse invoke Integration Server maintains its connection to the internal server. See Setting Up the Registration Port on page 167 for instructions on setting up this port. If you are going to set up an encrypted connection between the internal server and the reverse invoke Integration Server, you can optionally store a certificate for the administrator user (defined above) on the reverse invoke Integration Server. See Importing a Client Certificate and Mapping It to a User on page 152 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 invoke 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 invoke registration port, IP address filtering is a good idea because it will stop insiders from connecting to the reverse invoke Integration Server. See Restricting IP Addresses that Can Connect to a Port on page 130 for more information.
This is the port through which the reverse invoke Integration Server listens for requests from external clients. An Integration Server is not considered a reverse invoke Integration Server unless it has an enabled proxy 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 Securing Communications with the Server on page 119 for instructions.
166
Task
Notes It is best not to use a standard port such as 80 (the standard port for HTTP) or 443 (the standard port for HTTPS); the external firewall will typically allow access to those ports from the outside world. See Setting Up the Proxy Port on page 170 for instructions on setting up this port.
Optional. Write a filtering service and tell the server about it.
You can use this service to perform additional userdefined processing, such as XML validation of requests, before passing them to the internal server. See Setting Up the Filtering Service on page 174 for instructions.
external client
RI server
internal server
Note: Most likely you will need only one registration port, however, if you do set up more than one, make sure they are all SOCK or all SSLSOCK.
To set up the registration port 1 2 3 4 5 6 Open the Integration Server Administrator for the reverse invoke Integration Server if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Reverse Invoke Settings. Click Configure this Server as a Proxy. Click Add Registration Ports. Select SOCK or SSLSOCK then click Go to Step 2. For a SOCK port, enter the following information:
167
Note: When using HTTP, there is no choice of client authentication methods (user name and password is the only supported mechanism), therefore no configuration is required. For this parameter Port Specify The number you want to use for the 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 wont need to work with packages from a reverse invoke 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.
For an SSLSOCK port, enter the following information: For this parameter Port Specify The number you want to use for the 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. Client Authentication The type of client authentication to perform when the internal server establishes a persistent connection to the reverse invoke Integration Server. See Authenticating Clients on page 150 for more information. None. The reverse invoke Integration Server will not request client certificates, but rather looks for user and password information in the request header.
168
Specify Request Client Certificates. The reverse invoke Integration Server will request a client certificate from the internal server. If the internal server does not present a certificate, the request proceeds anyway. The reverse invoke Integration Server uses user and password information it obtains from the request header. Require Client Certificates. The reverse invoke Integration Server requires client certificates 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, the request fails.
Package name
This field associates a package with a port. Typically you wont need to work with packages from a reverse invoke Integration Server; therefore you can leave this field with the default setting. Optional. Path and file name of the file that contains the certificate for the reverse invoke Integration Server. The server uses this certificate for requests coming from the internal server. Specify a value here only if you want this port to present a different server certificate from the one specified on the Certificates screen.
Servers Certificate
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. Optional. Path and file name of the file that contains the certificate for the certificate authority that signed the Integration Server's digital certificate specified in the Servers Certificate field. If you leave this field blank, the Integration Server uses the file specified on the Certificates screen.
Authoritys Certificate
Private Key
Optional. Path and file name of the file that contains the private key of the private/public key pair associated with the Integration Server's digital certificate specified in the Servers Certificate field. If you leave this field blank, the reverse invoke Integration Server uses the private key specified on the Certificates screen.
169
Specify Optional. Name of the directory (relative to the server home) that contains the digital certificates of certificate authorities trusted by this server, for example config\cas. If the internal server presents a client certificate, the reverse invoke Integration Server looks in this directory to see if the client certificate was signed by an authority the reverse invoke Integration Server trusts. If you leave this field blank, the reverse invoke Integration Server uses the trusted authority directory specified on the Certificates screen. If this field is blank on the Certificates screen as well, the server trusts no certificates.
7 8
Click Save Changes. 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.
external client
RI server
internal server
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 proxy port 1 2 Open the Integration Server Administrator for the reverse invoke Integration Server if it is not already open. In the Navigation panel of the screen, on the Security menu, click Ports.
170
3 4 5 6
Click Reverse Invoke Settings. Click Configure this Server as a Proxy. Click Add Proxy Ports. Select HTTP or HTTPS then click Go to Step 2. For an HTTP port, enter the following information: Note: When using HTTP, there is no choice of client authentication methods (user name and password is the only supported mechanism), therefore you do not need to configure certificate information. For this parameter Port Specify The number you want to use for the proxy port. Use a number that is not already in use. This is the port that will be allowed through your outer firewall This field associates a package with a port. Typically you wont need to work with packages from a reverse invoke 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.
Package name
For an HTTPS port, enter the following information: For this parameter Port Client Authentication Specify The number you want to use for the proxy port. Use a number that is not already in use. The type of client authentication to perform for requests coming in on the proxy port (in other words, from the external client). See Authenticating Clients on page 150 for more information.
171
Specify Note: In a default reverse invoke configuration, the reverse invoke Integration Server does not perform client authentication. Rather, it obtains authentication information (user/password or certificates) from the client and passes it to the internal server for authentication. However, if you want the reverse invoke Integration Server to perform client authentication as well, you can do so. See Performing Client Authentication on the Reverse Invoke Server on page 181 for more information. None. The reverse invoke Integration Server will not request client certificates. Instead it looks for user and password information in the request header. Request Client Certificates. The reverse invoke Integration Server will request client certificates for all requests that come in on this HTTPS port (in other words, from the external client). If the client does not present a certificate, the request proceeds anyway. The reverse invoke Integration Server obtains user and password information from the request header. Require Client Certificates. The reverse invoke Integration Server requires client certificates for all requests that come in on this HTTPS port (in other words, from the external client). If the client does not supply a certificate, the request fails. 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 external port of the reverse invoke Integration Server ensures that the request passed to the internal server includes a certificate. If you have both an HTTP and an HTTPS proxy port on the reverse invoke Integration Server, set the authentication mode on the internal server to Request Client Certificates. Otherwise, the internal server will deny all requests coming in on the HTTP proxy port.
Package name
This field associates a package with a port. Typically you wont need to work with packages from a reverse invoke Integration Server; therefore you can leave this field with the default setting.
172
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. Optional. Path and file name of the file that contains the Integration Server's digital certificate that the reverse invoke Integration Server is to present to requests coming in through this port (the external port). Specify a value here only if you want this port to present a different server certificate from the one specified on the Certificates screen.
Servers Certificate
Optional. Path and file name of the file that contains the certificate for the certificate authority that signed the Integration Server's digital certificate specified in the Servers Certificate field. If you leave this field blank, the Integration Server uses the file specified on the Certificates screen.
Private Key
Optional. Path and file name of the file that contains the private key of the private/public key pair associated with the Integration Server's digital certificate specified in the Servers Certificate field. If you leave this field blank, the server uses the private key specified on the Certificates screen.
Optional. Name of the directory (relative to the server home) that contains the digital certificates of certificate authorities trusted by this server, for example config\cas. If the external server presents a client certificate, the reverse invoke Integration Server looks in this directory to see if the client certificate was signed by an authority the reverse invoke server trusts. If you leave this field blank, the reverse invoke Integration Server uses the trusted authority directory specified on the Certificates screen. If the trusted authority field is blank on the Certificates screen as well, the reverse invoke Integration Server trusts no certificates.
173
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.
Configure the proxy port so that it allows only service invokes and disallows the web, soap, and default directives. This step prevents the external client from accessing JSP pages on the Reverse Invoke server. To make this change you must use the watt.server.allowDirective configuration property. See watt.server. on page 312 for more information.
174
Parameter watt.server.revInvoke.errorSvcName=
What It Specifies Fully qualified name of the service to run if your filtering service encounters errors (folder.folder2:servicename). Name of content types for which you want the filtering service to run. If the content type specified by the client matches any in the list, the reverse invoke Integration Server runs the filtering service. You can specify multiple content types separated by commas.
Make the service available from the proxy port of the reverse invoke Integration Server by adding the service name to the list of allowed services for the port. See Authenticating Clients on page 150 and Allow Access to Specified Services (Deny All Others) on page 136. Make sure the service is protected by the Anonymous ACL. See Assigning ACLs to Folders, Services, and Other Elements on page 147 for instructions. Restart the server.
3 4
Monitoring Traffic Between Your Reverse Invoke Integration Server and the Internal Integration Server
You can configure your reverse invoke Integration Server to keep track of the number of requests sent to, but not yet executed, by the internal server, and to take action when the number exceeds a threshold you specify. (Too many pending requests suggests the internal server is not handling the request load and could benefit from more connections to the reverse invoke Integration Server.) When the number of pending requests exceeds the threshold, the reverse invoke Integration Server fires an alarm event, causing an event handler to execute. You might code the event handler to search for the string All Reverse Connections are Busy and send an email to the administrator stating that someone should register more connections from the internal server. Make sure your event handler does not subscribe to any other service that produces an alarm event. See the webMethods Developer Users Guide for information about setting up an event handler. To specify a threshold for pending requests 1 2 3 Open the Integration Server Administrator for the reverse invoke Integration Server if it is not already open. In the Security menu in the Navigation panel, click Ports. Click Reverse Invoke Settings.
175
4 5 6 7
Click Configure this Server as a Proxy. Click Edit Pending Request Alarm Trigger. Enter the number of pending requests after which the reverse invoke Integration Server triggers an alarm event. Click Save Threshold.
Setting Up Your Internal Integration Server to Connect to a Reverse Invoke Integration Server
In this step, you tell the internal server how to connect to the reverse invoke Integration Server. You do this by defining an alias for the reverse invoke Integration Server, which specifies connection information, and by specifying the number of connections to extend to the webMethods reverse invoke Integration Server. If you are clustering internal servers, configure them to look the same on all machines. registered connections between internal server and RI server
external client RI server internal server
Note: When selecting a connection to the internal server, the reverse invoke Integration Server uses a round robin approach and selects the next connection it finds that meets the selection criterion. Specifically, it selects the next connection that does not exceed the threshold for the number of pending requests.
Specifying How the Internal Server Connects to the Reverse Invoke Integration Server
In this step you specify the alias of the reverse invoke Integration Server, select a communications protocol (SOCK or SSLSOCK), and specify the number of connections to exist between the reverse invoke Integration Server and your internal server. To specify how the internal server connects to the reverse invoke Integration Server 1 2 3 4 Open the Integration Server Administrator for the internal server if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Reverse Invoke Settings. Click Register Reverse Connections.
176
Enter connection information in the following fields: Field Reverse Proxy Alias What It Means Alias assigned to the reverse invoke Integration Server. The alias contains connection information such as host name or IP address and communications protocol. If you have not already defined an alias for this reverse invoke Integration Server, click the link to go to the Remote Servers screen. From this screen you can set up an alias for the server. See Setting Up Aliases for Remote Integration Servers on page 79 for more information. When specifying an alias, use the protocol that matches the protocol specified for the reverse invoke servers registration port. If the registration port specifies SOCK, select No for Use SSL? if the registration port specifies SSLSOCK, specify Yes for Use SSL. Number of Connections Number of connections the internal server is to establish. For these connections to work, the reverse invoke Integration Server must be running and a registration port (SOCK for nonSSL or SSLSOCK for SSL) must be available on it.
6 7
Click Register Connections. By default, the access mode for the internal server is set to Deny by default with no allow list, meaning no services will be available from the internal server. See Setting the Access Mode for Your Internal Server on page 179 for instructions on changing the access mode.
177
To set client authentication mode for your internal server 1 2 3 4 Open the Integration Server Administrator for the internal server if it is not already open. In the Security menu in the Navigation panel, click Ports. Click Reverse Invoke Settings. In the Configure Authentication Mode for Inbound Messages area, in the Client Authentication field, select an authentication mode from the pull-down menu: For this parameter Client Authentication Specify The type of client authentication you want the internal server to perform for requests coming from the reverse invoke Integration Server. User/Password. The server will not request client certificates. Instead, it will use user and password information. The reverse invoke Integration Server includes this information in the message it sends to the internal server. Request Client Certificates. The internal server will look for client certificates for all requests from the client. If the client did not present a certificate, the request proceeds anyway. The internal server uses user and password information instead. Require Client Certificates. The internal server requires client certificates for all requests from the client. If the client does not supply a certificate, the request fails. Important! Use the same authentication mode here as you used for the proxy port on the reverse invoke Integration Server. For example, suppose you specify authentication mode Required on the internal server. Specifying Required on the external port of the reverse invoke Integration Server ensures that the request passed to the internal server includes a certificate. If you have an HTTP and an HTTPS proxy port on the reverse invoke server, set the authentication mode on the internal server to Request Client Certificates. Otherwise, the internal server will deny all requests coming in on the HTTP proxy port. 5 Click Save Changes.
178
To set the access mode for your internal server 1 2 3 4 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. Click Reverse Invoke Settings. In the Access Mode for Inbound Messages area, in the Access Mode field, select an access mode. There are two ways to set up the restrictions for a port: Deny By Default. Use this type to deny access to all services except those you specify in a list.
179
Allow By Default. Use this type to allow access to all services except those you specify in a list that is associated with the port. Refer to Authenticating Clients on page 150 for more information.
To establish connections 1 2 3 4 5 6 Open the Integration Server Administrator for the internal server if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Reverse Invoke Settings. Click Register Reverse Connections. Select the alias that corresponds to your reverse invoke Integration Server from the pull-down list of remote server aliases. Click Register Connections.
To delete connections 1 2 3 4 Open the Integration Server Administrator for the internal server if it is not already open. In the Security menu of the Navigation panel, click Ports. Click Reverse Invoke Settings. In the Connections to Aliases section of the screen, click remove the connection. in the Delete column to
180
181
How many reverse connections should I register between the reverse invoke server and the internal server? That depends on the expected load and the size of the transactions. A reverse connection between the reverse invoke and internal server is available except when a request is being written to the Internal server. In other words, reverse invoke connection utilization is I/O bound. Therefore, if you expect large, simultaneous transactions, increase the number of registered connections accordingly.
Is there persistence with the reverse invoke server? No. The reverse invoke 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 invoke configuration, in which the internal server performs client authentication. If you want to perform client authentication on the reverse invoke server as well, see Performing Client Authentication on the Reverse Invoke Server on page 181. Reverse Invoke Server Proxy Port Server certificate Private key CA certificate Directory that contains a list of certificate authorities that the reverse invoke server trusts. The server uses this directory when checking certificates submitted by external clients. Client public certificate mapped to the user presented by the external client. Add this certificate here if you are performing client authentication on the reverse invoke Integration Server in addition to the internal server. Directory that contains a list of certificate authorities the internal server trusts. The server uses this directory when checking certificates submitted by external clients. Client public certificate mapped to the user presented by the external client. Internal Server
182
Reverse Invoke Server Registration Port Public certificate the internal server uses to register reverse connections with the reverse invoke server. This certificate must be mapped to a user with administrator privileges.
Internal Server
Client certificate that the internal server presents to the reverse invoke server. If the registration port of the reverse invoke server requires certificates, this certificate must be mapped to an administrator user on the reverse invoke server.
Internal servers CA certificate 6 What exactly does the reverse invoke server do with the incoming request from the external client? The reverse invoke server does the following: a b c d e f 7 Performs trust checking against HTTPS certificates presented by the client (if applicable). Checks IP access rules. Parses the request as an HTTP 1.0/1.1 based request. Executes a filtering service (if applicable). Rewrites the request as a message (not a stream) in a webMethods proprietary protocol called SOCK (for HTTP requests) or SSLSOCK (for HTTPS) requests. Sends the request to the internal server across one of the registered connections.
Is there a way to perform a keep alive on the reverse connection to avoid a timeout at the firewall? If a connection is severed due to an exception, transient network outage, firewall intervention or other problem, will it automatically reconnect. Starting with Release 4.6 of the Integration Server, the internal server schedules a task that runs every 30 seconds (by default) and executes a keep-alive service on all the registered connections, thus preventing timeouts at the firewall. You can change the 30 second interval using the Settings > Resources screen of the Integration Server Administrator. If a connection is severed, it will be automatically reconnected.
Can I use the reverse invoke server as my outbound proxy server as well? No. The only requests that go through the reverse invoke 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.
183
Which components does reverse invoke support? Trading Networks and webMethods eStandards modules (including EDI, ebXML, RosettaNet and CIDX).
10 What authentication mode should I use for the reverse invoke server and the internal server? Authentication mode is the method a server uses to authenticate client requests. In a default reverse invoke configuration, the reverse invoke server receives authentication information from the external client and passes it on to the internal server, which performs the authentication. As a general rule, specify the same authentication mode on both servers. If this is not practical, at a minimum, make sure that if your internal server requires certificates, you configure your reverse invoke server to require certificates as well. If you specify authentication mode None or Request on the proxy port of the reverse invoke server, the reverse invoke server will accept requests that do not supply certificates. If your reverse invoke server forwards such a request to an internal server that requires a certificate, the internal server will reject the request. If you want to perform client authentication on the reverse invoke server, see Performing Client Authentication on the Reverse Invoke Server on page 181.
184
Activating NT Challenge/Response
You must activate NT Challenge/Response before the Integration Server can participate in an NT Challenge/Response. Once activated, the Integration Server automatically responds to NT Challenge/Response requests. Note: NT Challenge/Response is only available when the Integration Server is running on NT.
To activate NT Challenge/Response 1 2 3 4 5 6 7 8 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Management. If the WmWin32 package is not already enabled, enable it by clicking No in the Enabled column for this package. In the list of packages, click WmWin32. 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 NT Challenge/Response.
Note: If you want NT Challenge/Response available whenever the Integration Server is running, make the win32.ntlm:reg service a startup service for the Win32 package. For instructions, see the webMethods Developer Users Guide.
185
To deactivate NT Challenge/Response 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 WmWin32. Click Browse services in WmWin32. In the list of services, click wm.ntlm:unreg. Click Test unreg. The server displays the test screen for the win32.ntlm.unreg service. Click Test (without inputs). The server deactivates NT Challenge/Response.
186
187
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 vendors instructions. See Installing an Entrust PKI Proxy on page 204 for more information. (Optional) Install an HSM device on the machine on which your Integration Server runs, according to the vendors 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 webMethods6\IntegrationServer\packages directory. Configure the PKI system settings from the Integration Server. In this step you specify PKI connection settings. See Configuring PKI System Settings 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 on page 191 for instructions. 7 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 BuiltIn Services Reference.
188
Connect Directly Select this option if you are not using the PKI proxy
189
Field Use HTTP Proxy Select this option if you are using the PKI proxy
Contents Entrust Authority Host Host name (IP address) of the server on which the PKI authority is running. The proxy connects to this host. Proxy Entrust Authority URL URL of the proxy to your PKI authority. Proxy LDAP Directory URL URL of the proxy to your PKI authoritys LDAP directory.
Whether or not 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 systems 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 205 for more information about this topic.
This is 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.
190
If you are storing the PKI profile 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 Create PKI Profile. Update the profile settings as follows:
2 3 4 5 6
191
Contents Reference Number Reference number provided by your registration authority. Authorization Code Authorization code provided by your registration authority.
Entrust Profile Location File System Enter information in these fields only if you want to store the PKI profile in your file system. File Name 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 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 204 for more information. Confirm Password Enter the same password again to make sure you typed it correctly.
192
Contents Enter information in these fields only if you want to store the PKI profile on an HSM device. Label 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 Password associated with the PKI profile. This password was assigned to the token when it was formatted. Path to Auxiliary Profile 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. Auxiliary Profile Name 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.
Key Information
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. Key Pair Algorithm Encryption algorithm to use for the signing and encryption of keys. Select Entrust or DSA. Entrust is the default.
193
Hardware Device
Execute ACL
194
Note: If the Integration Server will be disconnected from the PKI system for a long time, be sure to disable CRL checking. See About CRL Checking on page 205 for more information.
195
4 5
In the PKI menu, click Profile Management. In the entry for the PKI profile you want to log in, click Log In.
196
4 5
Click the alias name. View and/or update the following fields: Field PKI Profile Alias Profile Location Contents The alias name associated with the PKI profile. (view only) File Name (If the PKI profile is stored in your file system) Name of the .epf file that contains the PKI profile. This file must have been previously created. You can specify an absolute or relative path. Be sure to specify a path that is valid and accessible to the server. If you specify just the file name, the server looks for the PKI profile in the servers root directory. Label (If the PKI profile is stored in your HSM device) Label of the token associated with this PKI profile. When you log into the PKI profile, the server searches each slot in the HSM device until it finds a token with this label. Execute ACL ACL that governs which user groups on your server can use this alias for the PKI profile. Select an ACL from the drop down list. By default, only members of groups governed by the Internal ACL can use this alias. 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;....
Determining whether or not a PKI profile is logged in 1 2 3 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.
197
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.
Recovering 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. Update the following fields:
2 3 4 5 6
198
Contents Reference Number Reference number provided by your Entrust registration authority. Authorization Code Authorization code provided by your Entrust registration authority.
Entrust Profile Location File System Enter information in these fields only if you want to store the PKI profile in your file system. File Name 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 servers root directory. Be sure to specify a path that is valid and accessible to the server. Password Password you want to associate with the PKI profile. Confirm Password Enter the same password again to make sure you typed it correctly.
199
Contents Enter information in these fields only if you want to store the PKI profile on an HSM device. Label 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 Password associated with the PKI profile. This password was assigned to the token when it was formatted. Path to Auxiliary Profile 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. Auxiliary Profile Name 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.
Key Information
Key Strength 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. Key Pair Algorithm Encryption algorithm to use for the signing and encryption of keys. Select Entrust or DSA. Entrust is the default.
200
Changing 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 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 the case 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 typically 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 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.
201
Updating Keys
Up
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.
2 3 4 5 6
202
Contents File Name Name of the .epf file that contains the PKI profile. You can specify a relative or absolute path. Be sure to specify a path that is valid and accessible to the server. If you specify just a file name, the server looks for the file in the server root directory. Label 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. Export Key History Whether or not you want the PKI profiles key history to be exported with the PKI profile. The key history will be written to the new PKI profile on the HSM device. Path to Auxiliary Profile 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. Auxiliary Profile Name 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.
Password Password associated with the PKI profile. This password is required when you log in the PKI profile.
Create a new alias for the profile. SeeCreating the PKI Profile Alias on page 194 for instructions.
203
Password Rules
Under some circumstances, the Integration Server might ask you to change a PKI profiles 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 systems rules for passwords. (The PKI systems 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 servers default rules are in effect) and your default rules are more restrictive than the rules under which the PKI profile was created (the PKI systems 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 profiles 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.
204
During signature verification. The server performs signature verification when it processes a signed document. If the clients 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. How Often Is the CRL Downloaded? The server does not download CRLs as part of server startup. Rather, the server downloads a CRL only when it is needed. For example, the first time a user logs in a PKI profile after server startup, the server downloads the CRL associated with that PKI profile. The CRL is stored in the servers memory. If another user logs in a PKI profile that requires the same CRL, the server uses the same copy of the CRL already in the servers memory. The server does not refresh that copy until the CRL has been in the servers memory for a length of time that exceeds a limit that your PKI administrator sets. The default is 24 hours. This means that a CRL in the servers cache can become out of sync with the master CRL maintained by the certificate authority.
205
206
CHAPTER
207
Note: This chapter describes how the server acts differently when it uses an external directory rather than using internally-defined user and group information. It also describes how to set up the server to use an external directory. Before you read this chapter, you should understand how the server uses user and group information. Read the following sections if you have not already done so. Chapter 5, Managing Users and Groups Controlling Who Can Configure and Manage the Server on page 115 Controlling Who Can Create, Modify, and Delete Packages, Folders, and Other Elements on page 117 Controlling Access to Resources with ACLs on page 138 Basic Authentication (User Names and Passwords) on page 155
208
To control who can create, modify, and delete services using the webMethods Developer To control access to services and files that are controlled by the server Externally-defined information does not replace ACLs. To control access to services and files, you still need to set up the ACLs that identify the groups that are allowed and denied access to specific services and files. However, you can assign externally-defined groups to an ACL. When you configure the server to use an external directory, the server displays externallydefined user and group information on screens in the Integration Server Administrator (in addition to internally-defined user and group information). For example, when you display the New ACL screen to create a new ACL, the server displays all groups that are defined internally and externally in the Allowed Groups and Denied Groups fields.
209
To configure the server to use LDAP 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 Users and Groups. Click JNDI Settings. Click Edit JNDI Settings. Select LDAP from the drop down list in the Provider field. The server issues a prompt to verify that you want to change the setting. Click OK. The server redisplays the JNDI Settings screen listing configuration settings that are specific to LDAP. 6 Fill in the Settings parameters as follows: For this parameter Server URL Specify The complete URL of the LDAP server. The URL has the format ldap://hostname:portnumber, for example, ldap://blue:389. The distinguished name (DN) that defines the root entry of your LDAP directory, for example, o=webMethods, c=US. The user ID the Integration Server should supply to connect to the LDAP server, for example, cn=DirectoryManager, o=webMethods, c=US. The password the Integration Server should supply to connect to the LDAP server.
Connection credentials
210
Specify The name of the root where user entries are located on the LDAP system, relative to Directory Root, for example, ou=People. A filter the Integration Server should use to narrow the selection of users within User Root, for example, (objectclass=inetOrgPerson) or (uid=*). This setting is optional. If you specify a filter, when the Integration Server requests user information from the LDAP server, the LDAP server only searches user entries that match the filter criteria. For more information about LDAP search filters, consult RFC 2254: Search Filters for LDAP.
User Filter
Group Root
The name of the root where group entries are located on the LDAP system, relative to Directory Root, for example, ou=Group. A filter the Integration Server should use to narrow the selection of groups within Group Root, for example, (objectclass=groupOfNames) or (cn=*). This setting is optional. If you specify a filter, when the Integration Server requests group information from the LDAP server, the LDAP server only searches group entries that match the filter criteria. For more information about LDAP search filters, consult RFC 2254: Search Filters for LDAP.
Group Filter
User ID attribute
The name of the attribute that contains each users webMethods Integration Platform user ID, for example, uid. The name of the attribute that contains each users webMethods Integration Platform user password, for example, userpassword. The name of the attribute that specifies the members of a group, for example, member. A comma delimited list of additional string attributes you want retrieved from the LDAP server for each user. For example, if you want to retrieve the phonenumber and mail attributes for each user, specify phonenumber,
mail.
Password attribute
211
Specify A comma delimited list of additional binary attributes you want retrieved from the LDAP server for each user. For example, if you want to retrieve the userphoto and certificate attributes for each user, specify userphoto, certificate. Number of milliseconds that you want the Integration Server to maintain user and group information that it retrieved from the LDAP server in cache. If the Integration Server receives subsequent requests that it can satisfy with the information in cache, it does so rather than accessing the LDAP server.
Timeout (ms)
7 8
Click Save JNDI Settings. Restart the server for the changes to take effect. For instructions, see Restarting the Integration Server on page 32.
212
Specify Number of milliseconds that you want the Integration Server to maintain user and group information that it retrieved from the NIS server in cache. If the Integration Server receives subsequent requests that it can satisfy with the information in cache, it does so rather than accessing the NIS server.
7 8
Click Save JNDI Settings. Restart the server for the changes to take effect. For instructions, see Restarting the Integration Server on page 32.
213
214
External Directories
Users
Replicator
Administrator
Developer
Admin
Lindsay
Rebecca
Groups
Replicators
Administrators
Developers
Admins
ISDevs
An exception to this is that all users (internally- and externally-defined) are members of the internally-defined Everybody group. You cannot use the Integration Server Administrator to manage (i.e., create, edit, or delete) LDAP or NIS user and group information. To make changes to LDAP or NIS directories, follow your sites standard directory update procedures.
215
Users
Administrator
Admin
Groups
Administrators
Admins
ACLs
Administrators
To grant administrator 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 administrators group if one does not already exist. Important! Do not name the externally-defined group Administrators. 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 administrators group. Update the Administrators ACL to include the externally-defined administrators group in the Allowed list. For instructions on how to update an ACL, refer to Updating ACLs on page 144. When the server displays the ACL Membership screen, it displays externally-defined groups in the Allowed, Not Specified, and Denied lists.
216
Users
Developer
Lindsay
Rebecca
Groups
Developers
ISDevs
ACLs
Developers
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. Update the Developers ACL to include the externally-defined developers group in the Allowed list. For instructions on how to update an ACL, refer to Updating ACLs on page 144. When the server displays the ACL Membership screen, it displays externally-defined groups in both the Allowed and Denied lists.
217
Users
Groups
Finance
Marketing
ACLs
Finance
ACL Name
Finance Everybody Administrators Developers Replicators Finance Marketing Everybody Administrators Developers Replicators Finance Marketing
Allowed Groups
Daniel is granted access to the services protected by the Finance ACL because his external group is an Allowed group.
Denied Groups
Leanna is denied access to the services protected by the Finance ACL because her external group is a Denied group.
For information about working with ACLs, refer to Updating ACLs on page 144.
218
CHAPTER
Managing Packages
Using Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 How the Server Stores Package Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Finding Information about Your Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Working with Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Creating a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Copying Packages from One Server to Another . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
219
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 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 138. 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 Configuring Ports on page 62 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.
220
Using Packages
Predefined Packages
The Integration Server comes with the following predefined packages: Default. This package serves a dual purpose. webMethods provides it as a convenience so you can create elements and store them here without first creating a package. In addition, the 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. Note: The 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 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 6: Setting Up Security on page 304 for more information. WmAdminResource. This package contains the services that the webMethods Administrator remotely invokes to retrieve resource information available on other remote servers. WmART. This package contains services that the server uses to support version webMethods 6 adapters and above. Do not disable, alter, or delete, this package if you are running any version webMethods 6 adapters. For more information about this package, see your adapter documentation. Note: This package is not enabled when you first install the Integration Server. For instructions on enabling and disabling packages, see Enabling a Package on page 233 and Disabling a Package on page 233. Before you enable this package, make sure it is the latest version of the webMethods Integration Platform Ariba Supplier OnRamp. When webMethods releases a new version of the Integration Server, it includes the version of the webMethods Integration Platform Ariba Supplier OnRamp that is generally available at that time. To obtain the most recent version of the webMethods Integration Platform Ariba Supplier OnRamp, go to the webMethods product download site or contact webMethods Technical Services. For more information about this product, see the webMethods Integration Platform Ariba Supplier OnRamp User Guide. WmFlatFile. This package contains services that you can call within customized flow services or the File Polling processing service to initially accept and consume inbound flat files. These services are described in the webMethods Built-In Services Reference. WmOmiAgent. This package contains the management agent for the webMethods Manager tool, and services that the webMethods Manager Server uses to connect to
221
the Integration Server. For more information about the webMethods Manager tool, see webMethods Manager Server Installation and Administrators Guide. WmOmiIs. This package contains the Integration Server management objects and defines the MBeans for the webMethods Manager tool. For more information about the webMethods Manager tool, see webMethods Manager Server Installation and Administrators Guide. WmPartners. This package contains services for Partner Manager. For information about the services in this package, see the webMethods Partner Manager Users Guide, which is located in the packages\WmPartner\pub\doc directory on the Integration Server. When performing new integrations, use webMethods Trading Networks instead. Trading Networks provides more functionality and improved performance. For more information about Trading Networks, see the webMethods Building Your Trading Network. WmPRT. This package contains the facility that runs the process run-time scripts. It is the run-time component that executes process logic, logs process data, and controls process execution order. WmPublic. This package contains services (i.e., utilities) that you can invoke from your client applications and services. For more information about the services in this package, see the webMethods Built-In Services Reference. WmRoot. This package contains services that the server uses for core functionality and auxiliary files. Do not alter or delete this package. WmSamples. This package contains sample services. 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. WmWin32. This package contains services you can use to invoke methods on COM objects. These services are documented in the webMethods Developer Users Guide. This package also contains Windows-specific samples, such as sample Visual Basic services. WmDB. This package contains services that access JDBC-enabled databases. When developing new applications, use the webMethods JDBC Adapter instead of the WmDB package. The JDBC Adapter provides more functionality, improved performance, and supports adapter notifications. For more information about the JDBC adapter, see the webMethods JDBC Adapter Users Guide. Important! Never remove the WmRoot package. The Integration Server uses the services in this package.
222
The code subdirectory holds the Java and C/C++ services that belong to this package. Within the code subdirectory are the classes, jars, 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 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 directorys 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. For ease of administration, place services that use shared libraries in the same package.
223
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 230. The doc subdirectory holds documentation for the package. 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. 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 281. 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 227 and the 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.
224
Information List of all of the packages that reside on your server Status of whether the server successfully loaded the package or not Status of whether the package is enabled or disabled Version number of the package Number of elements in a package that the server successfully loaded into memory 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
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.
225
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 232.
For instructions on enabling and disabling packages, see Enabling a Package on page 233 and Disabling a Package on page 233.
226
227
The server displays the Packages Management screen, which contains the following fields: 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. The Access Control List assigned to the package. Users associated with this ACL can see the package listed on the Integration Server Administrator or the 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. Number of elements that the server successfully loaded. If the server successfully loaded one or more elements, the server displays the (show list) link. Click on this link to have the server list the elements that it successfully loaded. 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 281.
Patches Included
Elements Loaded
Startup Services
228
Description 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 281. 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 281. List of the packages the server must load before it loads this package. For more information about package dependencies, see the 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 235. 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.
Replication Services
Packages on which this package depends Packages that depend on this package Subscribers
Load Errors
Load Warnings
229
To access any Web document for a package Make sure the package is enabled. (See Determining Whether the Package Is Enabled or Disabled on page 226 for instructions.) Enter the URL for the Web document. The URLs for the Web documents have the following format: http://host:port/PackageName/Docname where: host:port PackageName is the server name and port address of the Integration Server is the name of the package in which the Web document resides. If you do not specify a package name, the server looks in the Pub directory of the Default package. is the name of the Web document. If you do not specify a document name, the server displays the index.dsp or index.html file in the Pub directory of the specified package.
DocName
230
When you want to: Create a new package. Developers create packages from the Developer. See the webMethods Developer Users Guide for more information. Use a package that you manually moved into the Server/packages directory without having to restart the server. Reload the services in the package into memory without having to restart the server. Enable a package that you previously disabled. Disable access to a package without deleting it. 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.
Archive
235
Copy
235
Note: You can also manage packages by using a set of built-in services. See the webMethods Built-In Services Reference for more information.
Creating a Package
When a developer wants to create a new grouping for services and related files, he or she 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 223. See the webMethods Developer Users Guide for instructions on creating a Package.
231
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 recognized by the server and displayed in the Package List on 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. 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 packages Java services and reloads the flow services into memory. Developers can also reload a package from the Developer. To reload 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 the reload icon in the Reload column for the package.
The 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 226.
232
Creating a Package
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. 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 column. icon and Yes in the Enabled
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 icon 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.
233
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 webMethods6\IntegrationServer\replicate\salvage directory before deleting the package from the webMethods6\IntegrationServer\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 234. Important! Never delete the WmRoot package. The Integration Server uses the services in this 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. If you want to save a copy of the package so you can recover it later if necessary, check the 4 5 icon in the row that corresponds to the package you want to delete. icon in the row that corresponds to the
If you do not want to save a copy, click the package you want to delete.
Click Delete. The server displays a screen 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.
234
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. To archive 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. 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 248 for instructions on specifying this information.
235
Publisher
Subscriber
Subscriber
Subscriber
Subscribing servers receive the package in their inbound directory (webMethods6\IntegrationServer\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 Installing a Package Published by Another Server on page 259.) 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 251.
236
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. With a full release, the new package entirely replaces the old package on the subscribers 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: Publishing Server
Target Server before Patch Replication Target Server after Patch Replication
Package
Service A
Package
Service A
Package
Service A
Service B
Service B
Service B
Service C
Service C
Service C
237
The following diagram illustrates the results if you selected a single service for replication and specified a full release instead. Publishing Server
Target Server before Full Replication Target Server after Full Replication
Package
Service A
Package
Service A
Package
Service B
Service B
Service B
Service C
Service C
238
Publishing Server
Package
Service A
Package
Service A
Package
Service A
Service B
Service B
Service B
Service C
Select these files. They will replace the versions in the target package.
Type in these files. They will be deleted from the target package.
239
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 servers 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 the 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: 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 232 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
240
241
server uses to log on), the publisher will not be able to log into the subscribing server to send this package.
Displaying Subscribers
Use this procedure to display the list of subscribers for a specific package on your server. To display the subscribers for a single 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 the name of the package for which you want to view subscribers. The server lists the subscribers to the package in the Subscribers field. To display the subscribers for all packages 1 2 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Publishing. The server displays a list of all packages, their subscribers, and releases.
242
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 its default certificate (specified on the publishers Security Settings 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.
243
Description Password of the user that the publishing server uses to log into the subscribing server. Email address of the administrator to notify when the publishing server releases a package.
Then, 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. Note: To specify the automatic pull feature, you must create the subscription from the subscriber. Note: The subscribing server must be running at the time you add the subscriber.
Host Name
244
Description 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 its default certificate (specified on the publishers Security Settings screen).
Transport
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. Email address of the administrator to notify when the publishing server releases a package.
Then, 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.
245
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 subscribers 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 235 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 webMethods6\IntegrationServer\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. A subscribing server receives the zip file containing the release in its inbound directory (webMethods6\IntegrationServer\replicate\inbound). If a zip file for the package already exists in a subscribing servers 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.
246
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. See the webMethods Developer Users Guide for instructions on setting up replication services. Important! Before you can publish a package, you must specify the subscribers. For instructions, refer to Adding Subscribers from a Publishing Server on page 243.
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 248 for instructions on specifying this information.
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.
247
248
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 281 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.
249
Specify package version information and description: Field Archive/Release Type What It Means: 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 281 for more information about startup, shutdown, and replication services. Archive/Release Name Brief Description 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 webMethods Developer assigns version 1.0 to it. For more information about the checking the Integration Server performs, see Version Checking on page 240. 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,310. 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.
Version
Patches Included
250
Specify subscriber settings: Field Version of 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 240. 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 240.
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.
251
publisher and places it in the Inbound directory. The administrator on the subscribing server can then install the package. 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: 252 252 253 256 258 259
The server automatically updates this information when you (the subscriber) add, update, or remove a subscription; however, to see changes made by the publishers, you must click Update All Subscription Details.
252
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 Host: Name of the machine on which the publishing server resides. Remote 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 Installing a Package Published by Another Server on page 259.
253
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. The following procedures describe how to request a subscription. Note: The following procedure is for adding a subscriber from a subscribing server. If you want to set up a subscription on a publishing server, see Adding Subscribers from a Publishing Server on page 243. 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.
To subscribe 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 79 for more information.
254
Description 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.
Password for the local user name. Email 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 select Yes, you must also specify the email address of a user on an email server to which the publishing server should send a service-invocation email. The subscribing server, through an email port, periodically checks this email address for a service-invocation email. When the subscribing server processes the email, it pulls the package. The service invocation-email contains a call to a service that runs on the subscribing server and loads the package to the subscribing servers Inbound directory. For automatic pull to work, you must set up an email port to listen at the automatic pull address (described below). For information about setting up an email port, see Configuring Ports on page 62.
Email address to which the publishing server is to send a serviceinvocation email when a new release of the package becomes available. Use a different email address for the notification and serviceinvocation emails. For example, send notification emails to [email protected] and service invocation emails to [email protected]. For automatic pull to work, you must set up an email port to listen at this address. For information about setting up an email port, see Configuring Ports on page 62.
255
Note: The publishing server must be running at the time you add the subscription. 6 Click Start Subscription.
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 79 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 Port
256
Field
Description 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.
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.
Password for the local user name. Email 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 Email field and delete the email address there. If you want to configure your server for Automatic Pull, select Yes. You must also specify the email address of a user on an email server to which the publishing server should send a service-invocation email. The subscribing server, through an email port, periodically checks this email address for a service-invocation email. When the subscribing server processes the email, it pulls the package. The service invocation-email contains a call to a service that runs on the subscribing server and loads the package to the subscribing servers Inbound directory. For automatic pull to work, you must set up an email port to listen at the automatic pull address (described below). For information about setting up an email port, see Configuring Ports on page 62.
257
Description Email address to which the publishing server is to send a service-invocation email when a new release of the package becomes available. Use a different email address for the notification and serviceinvocation emails. For example, send notification emails to [email protected] and service invocation emails to [email protected]. For automatic pull to work, you must set up an email port to listen at this address. For information about setting up an email port, see Configuring Ports on page 62.
Note: The publishing server must be running at the time you add the subscription. 6 7 Click Submit Changes. The server updates the information on both the subscribing and publishing servers.
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 publishers 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 publishers list.
To cancel your subscription to a package on another server 1 2 Open the Integration Server Administrator if it is not already open. In the Packages menu of the Navigation panel, click Subscribing.
258
3 4
Click Update and Unsubscribe from Remote Package. Locate the package for which you want to cancel the subscription and click the icon.
To install a package that was published from another server 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 Install Inbound Releases. Select the package you want to install from the Release file name drop down list. If you want to make the package available immediately following installation, check the Activate upon installation checkbox in the Option field. Click Install Release.
259
260
CHAPTER
10
261
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 the webMethods Developer. When you enable caching for a service, the server saves the results from invoking the service in a local cache for the period of time that you specify. 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 currency 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 the Developer. See the webMethods Developer Users Guide for more information.
262
At run time, the Integration Server scopes the pipeline down to only the input parameters of the service...
...and compares them to the cached copy. If they match in name, dimension, and value, the cached output from the previous service invocation is used.
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 services input parameters are missing from the pipeline, the Integration Server extracts any variables that exist in the pipeline that match the cached services 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 click Reset Cache on the Properties panel in Developer, or in Service Usage in the Integration Server Administrator. If you do not reset the Server cache, the old cached input will be used at run time.
263
To reset the cache for a specific service 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 the name of the package that contains the service for which you want to reset the cache. Click Browse Services in packagename. Click the name of the service for which you want to reset the cache. Click Reset Service Cache.
264
CHAPTER
11
265
C H A P T E R 11 C o n f i g u r i n g G u a r a n t e e d D e l i v e r y
Client Application
Service A
Service B
Acts as a client
For inbound transactions, acts as a server; for outbound transactions, acts as a client
Acts as a server
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.
266
There is no default for this setting. watt.server.smtpServer Use the watt.server.smtpServer setting to specify the domain name (e.g., purple.webmethods.com) or IP address (e.g. 132.906.19.22) of the SMTP server you want the Integration Server to use when sending an email about an error during guaranteed delivery. An example of using this setting is watt.server.smtpServer=132.906.19.22 There is no default for this setting. When an administrator receives an email notification of an error, the administrator should correct the problem, then use the Integration Server Administrator to re-initialize guaranteed delivery capabilities. For instructions on how to reinitialize guaranteed delivery, refer to Reinitializing Guaranteed Delivery on page 271.
267
C H A P T E R 11 C o n f i g u r i n g G u a r a n t e e d D e l i v e r y
The following describes the inbound transaction settings you can configure. You can configure: How often the server sweeps the job store to remove expired transactions How the server updates the status of PENDING transactions when a heuristic failure occurs Where the server maintains the audit-trail log for inbound transactions (on the server) Using this setting
watt.server.tx.sweepTime
watt.server.tx.heuristicFailRetry
watt.server.tx.logfile
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 re-execute 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. The default is: true
268
watt.server.tx.logfile Use the watt.server.tx.logfile setting to specify the file (on the server) in which the server maintains an audit-trail log of all operations it processes for inbound guaranteed delivery transactions. The default is: logs\txinyyyymmmdd.log watt.debug.logfile Use the watt.debug.logfile setting to specify the file in which the server maintains an audit-trail log of all operations it processes for inbound guaranteed delivery transactions. The default is: logs\txin.log
watt.tx.defaultTTLMins watt.tx.retryBackoff
watt.tx.sweepTime
watt.tx.jobThreads
watt.tx.logfile
269
C H A P T E R 11 C o n f i g u r i n g G u a r a n t e e d D e l i v e r y
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 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 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 watt.tx.logfile Use the watt.tx.logfile setting to specify the file (on the client) in which the server maintains an audit-trail log of all operations it processes for outbound guaranteed delivery transactions for that client. The default is: logs\txoutyyyymmmdd.log
270
Inbound Transactions
If you shut down the guaranteed delivery capabilities to correct a configuration problem or to make an administrative change, you can reinitialize guaranteed delivery using the Integration Server Administrator.
271
C H A P T E R 11 C o n f i g u r i n g G u a r a n t e e d D e l i v e r y
You can also use this procedure to reinitialize guaranteed delivery if it becomes disabled due to an error (for example, because of a disk full condition or if the server could not locate the job store). Reinitialize guaranteed delivery after you correct the problem. To reinitialize guaranteed delivery for inbound transactions 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:init. Click Test init. The server displays the test screen for the wm.server.tx:init service. Click Test (without inputs). The server reinitializes the guaranteed delivery capabilities for inbound transactions.
Outbound Transactions
If guaranteed delivery capabilities for outbound transactions become disabled due to an error (for example, because of a disk full condition or if the server could not locate the job store), use this procedure to reinitialize guaranteed delivery after you correct the problem. To reinitialize guaranteed delivery for outbound transactions 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:resetOutbound. Click Test resetOutbound. The server displays the test screen for the wm.server.tx:resetOutbound service. Click Test (without inputs). The server reinitializes the guaranteed delivery capabilities for outbound transactions.
272
273
C H A P T E R 11 C o n f i g u r i n g G u a r a n t e e d D e l i v e r y
274
CHAPTER
12
Managing Services
About Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Fully-Qualified Service Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Finding Information about Services and Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Working with Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Running Services When Packages Are Loaded, Unloaded, or Replicated . . . . . . . . . . . . . 281 Running Services in Response to Specific Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Scheduling Services to Execute at Specified Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
275
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 the webMethods Developer. You can create database flow services from the Integration Server Administrator as well. You can also use the 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, refer to the 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 Chapter 10, Caching Service Results.
276
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 fullyqualified 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 webMethods6\IntegrationServer\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 on page Working with Extended Configuration Settings on page 106.
277
278
The server displays a screen that contains the following sections: 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 138. Identifies whether the server is to save the results of executing this service in cache. For information, see Chapter 10, Caching Service Results. 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 Developers Guide.
Cache Control
Data Formatting
279
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: The Developer offers a more robust environment for testing services.
To test a service 1 2 3 4 5 6 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. 7 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).
280
281
282
this file directly; however, if you are clustering Integration Servers, you need to copy this file from one server to another to duplicate event subscriptions on all servers in the cluster. For more information about using the Event Manager, refer to the webMethods Developer Users Guide.
283
select this option, the user task is removed from the system at server shutdown and the server no longer executes the user task when the server is restarted. When and how often you want the service to run. Once. The server executes the service a single time. Repeating. The server executes the service repeatedly at an interval you specify. Complex. The server runs the service on the day(s) and at the time(s) that you specify either during a specified date range or indefinitely. Whether or not you want the scheduled user task to run on any Integration Server in the cluster. Select this option if you have set up clustering and want the task to run anywhere in your cluster of Integration Servers.
284
Start Time
End Date
End Time
The server combines all your selections to determine when to execute the service. If you do not select an item in one of the above settings, the server assumes all items for the selection. For example, if you do not specify a month, the server assumes you want the service to execute every month. If you do not select any items for any of the settings, the server assumes you want the service to execute every month, every day, all week days, every hour, and every minute; in other words, the server executes the service every minute from the time you add the task. If you use the Start Date and End Date to specify a date range, the server executes the service at the scheduled times until the end of the time period. At the end of the time period, the server removes the user task from the list of scheduled user tasks. If you indicate that you
285
do not want the user task to persist after a restart, the server will not continue to execute the service if the server is restarted before the schedule time period elapses. If you do not specify an End Date to specify a date range, the server executes the service for an indefinite period of time. The scheduled user task remains in the system until you cancel the scheduled user task, or if the user task does not persist after restart, until the server is restarted. The following shows examples of how to use the Complex option settings: If you want the service to execute The 28th day of every month at midnight for the year 2000. 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 Specify 2000/01/01 00:00:00 (or leave blank) 2000/12/31 00:00:00 (or leave blank) no selection 28 no selection 0 0 leave blank
Start Time End Date End Time Months Month Days Week Days Hours Minutes Every hour of every Tuesday of the month of June, 2000. Start Date Start Time End Date
leave blank leave blank leave blank January, February, March no selection Monday 14 30 2000/06/01 00:00:00 (or leave blank) 2000/06/30
286
For this setting: End Time Months Month Days Week Days Hours Minutes
Specify 00:00:00 (or leave blank) June no selection Tuesday no selection 0 2000/06/01 00:00:00 (or leave blank) 2000/06/30 00:00:00 (or leave blank) June no selection Tuesday no selection no selection
Every minute of every hour of every Tuesday of the month of June, 2000.
Start Date Start Time End Date End Time Months Month Days Week Days Hours Minutes
To schedule the execution of a service 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 folder:subfolder:service Run As User Specify The fully-qualified service name of the service you want the server to execute. The user name you want the server to use when running the service.
287
Specify Whether you want the server to maintain this user task in the event that the server is restarted. Check the Persist after restart checkbox if you want the server to execute the service at the scheduled time(s) if the server is restarted. Whether you want the task to run anywhere in your cluster of Integration Servers.
Clustering
Select Run Once, Repeating (Simple), or Repeating (Complex) to indicate when and how often you want the server to execute the service. If you select Run Once Specify The date on which you want the server to execute the service in the Date field. Use the format YYYY/MM/DD to specify the date. For example, if you want the server to execute the service on March 11, 2000, specify 2000/03/11. The time at which you want the server to execute the service in the Time field. Use the format HH:MM:SS to specify the time (using a 24-hour clock). For example, if you want the server to execute the service at 1:00:00 a.m., specify 1:00:00; if you want the server to execute the service at 1:00:00 p.m., specify 13:00:00. For more information about using this option, see Using the Once Option on page 284. Repeating (Simple) The number of seconds that you want the server to wait between executions of the service in the Interval field. If you want the server to wait for a service to complete execution before it starts the next scheduled execution of the service, check Repeat from end of invocation. 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 from end of invocation box, the server will wait for the service to complete before beginning its next scheduled execution. For more information about using this option, see Using the Repeating Option on page 284.
288
Specify When you want the first execution of this service by specifying a beginning date and time in the Start Date and Start Time fields. 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 time period in which to run this service to begin be on May 3, 2000 at 1:00:00 p.m., specify 2000/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 00:00:00 (midnight). When you want the last execution of this service to run by specifying an ending date and time in the End Date and End Time fields. 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 time period in which to run this service to end on June 4, 2000 at 2:00:00 a.m., specify 2000/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 00:00:00 (midnight). Use the Run Mask parameters to indicate when you want the server to execute the service. For examples of setting these parameters, see Using the Complex Option on page 285. For more information about using this option, see Using the Complex Option on page 285.
289
290
291
292
CHAPTER
13
293
Introduction
This chapter contains information intended for the server administrator and users who regularly replicate and publish packages as part of the production process.
Procedure
To disable or re-enable locking, you use the Integration Server Administrator or manually edit server.cnf. The following procedure describes the Integration Server Administrator procedure. 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 Before You Begin. 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 Type this... watt.server.ns.lockingMode=none watt.server.ns.lockingMode=system
294
5 6
Click Save Changes. The information is saved to \webMethods6\IntegrationServer\config\server.cnf. Restart the Integration Server. The updated settings are now in effect.
To re-enable locking on the Integration Server 1 2 3 4 Complete the tasks in Before You Begin on page 294. 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.
295
5 6
Click Save Changes. The information is saved to \webMethods6\IntegrationServer\config\server.cnf. Restart the Integration Server for the changes to take effect.
Best Practices
Remote Server Configuration
It is not recommended that you use Cooperative Development functionality in a Remote Repository configuration. Locking information for elements could be inadvertently shared with another Integration Server sharing the Remote Repository. Also, if the Remote Repository Server goes down or a connection is lost, development will be stalled until the Remote Repository Server is back online. Use the local webMethods Repository while developing to eliminate these Cooperative Development problems.
Server Usernames
When logging on to the Integration Server, use a distinct username. Locking is based on your username, so it is important that each user log on to the server with a unique username (not Administrator or Developer).
296
Best Practices
Source Control
If there has been a significant change to the source code, always reload the package to reflect the latest system locks. Before adding service code to source control, or checking service code in, make sure that no user has a lock on the service in webMethods Integration Platform.
297
298
APPENDIX
299
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 2 Action Install the Integration Server. For instructions, see the webMethods Integration Platform Installation Guide. 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 Changing Passwords and Password Requirements on page 48.
300
301
302
303
where: Server is the name of the Integration Server, and Port is the port on which it listens for HTTP requests.
304
Step 3 4 5 6 7
Action 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. If you are deploying an SSL-enabled server, install the servers cert.der and privkey.der files in the following directory: webMethods6\IntegrationServer\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 119.
Configure HTTP routing systems. If your server sits behind a routing, loadbalancing, or URL-filtering system, consult with the administrator of that system to ensure that it will pass inbound requests to the Integration Server. 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.
305
306
APPENDIX
307
Introduction
This appendix contains a description of the parameters you can specify in the server configuration file (server.cnf), which is located in the webMethods6\IntegrationServer\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.debug.
watt.debug.level Sets level of debugging information recorded in the servers log file. The default is 4. Specify: 0 1 2 3 4 510 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 Verbose, levels 1 through 6. The server records more levels of informational messages the higher you set the number. watt.debug.logfile If storing logging server, session, service, and error data in flat files, specifies the fully qualified path to the directory that contains the files. The default is the Integration Server_directory\logs directory. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide.
308
watt.debug2.
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.net.
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.maxRedirects Specifies the maximum number of HTTP redirects to allow before throwing an I/O exception. The default is 5. watt.net.proxyHost Specifies the host that this server should use for outbound HTTP requests. There is no default. watt.net.proxyPass Specifies the password to use for authentication with the HTTP proxy host. There is no default. watt.net.proxyPort Specifies the port number on the proxy host to use for outbound HTTP requests. There is no default. watt.net.proxySkipList Specifies a list of domain names for which the Integration Server should not use proxy servers. The default is localhost. watt.net.proxyUser Specifies the user name to use for authentication with the HTTP proxy host. There is no default.
309
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.secureProxyHost Specifies the host that this server should use for outbound HTTPS requests. There is no default. watt.net.secureProxyPass Specifies the password to use for authentication with the HTTPS proxy host. There is no default. watt.net.secureProxyPort Specifies the port number on the proxy host to use for outbound HTTPS requests. There is no default. watt.net.secureProxyUser Specifies the user name to use for authentication with the HTTPS proxy host. There is no default. 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.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, 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.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.useCookies Accept (true) or deny (false or null) cookies when communicating with Web servers. It is almost never a good idea to turn this off. Defaults to true.
310
watt.repo.
watt.repo.
watt.repo.retryWait If the repository uses a JDBC database, specifies the length of time in milliseconds the repository server is to pause between attempts to connect to the repository database. The default is 30000. watt.repo.retryCount If the repository is a JDBC database, specifies the number of times the repository server is to try connecting to the repository database. The default is 5.
watt.security.
watt.security.caCert Specifies the path and file name of the file containing the certificate of the Certificate Authority (CA) that issued the Integration Servers digital certificate. The default is config\cacert.der. watt.security.CADir Specifies the path name of a directory (relative to the server home) that contains the digital certificates of CAs that your Integration Server trusts, for example config\cas. When you indicate that you want the server to request client certificates (watt.server.requestCerts), the server automatically presents the list of certificates in this directory to the client when it submits its own certificate. There is no default. 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 servers outbound request) S/MIME signatures The default is true. If this parameter is set to false, the server trusts no certificates and no S/MIME signatures in this situation. 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.privateKey Specifies the path and file name of the file that contains the Entrust private key associated with the Integration Servers digital certificate. The default is config\privkey.der. watt.security.signedCert Specifies the path and file name of the file containing the Integration Servers digital certificate. The default is config\cert.der.
311
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 When the Integration Server Is an SSL Server on page 119.
watt.server.
watt.server.allowDirective Specifies which directives a port is allowed to use. Note: A directive is a method of accessing or invoking resources. For example, you can use the invoke directive to run services, the web directive to access JSP files, and the soap directive to run SOAP services. Directives are specified as follows:
http://host:port/directive/interface/service_name
For example:
http://localhost:5555/invoke/wm.server/ping
By default, all ports are allowed to use any of the currently supported directives: invoke, soap, web, and the default directive, which is the document handler the Integration Server uses to process DSP pages. The syntax for this property is:
watt.server.allowDirective=directive1,port-string,directive2,port-string
port-string is a comma-delimited list of port numbers such as 5555,6666. For example, suppose you want to allow the following: invoke directive on ports 5555 and 7777 web directive on ports 6666 and 7777 soap directive on port 7777 default directive on port 7777 Then you would specify the following:
watt.server.allowDirective=invoke,5555,7777,web,6666,7777,soap,7777, default,7777
312
watt.server.
Important! Once you begin using this property to control access to directives, you must be careful to specify all the ports that you want to use those directives. For example, if you use this property on a Reverse Invoke server to limit the proxy port to just invoke access, you must also specify the Reverse Invoke servers administrative port as having access to the invoke directive, otherwise it will be denied. For example, if the administrative port is 5555 and proxy port is 7777, you would specify the following:
watt.server.allowDirective=invoke,5555,7777,default,5555,soap,web
This specifies that the proxy port is allowed just the invoke directive, that the administrative port is allowed the invoke and default directives, and that no ports are allowed to use the soap and web directives. watt.server.auditDir If you are maintaining the temporary store for logging data on disk, specifies the fully qualified path to the directory that contains the temporary store file. The default is the Integration Server_directory\audit directory. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditGuaranteed Specifies whether to maintain the temporary store for logging data on disk or in memory. The default is true (disk). For complete information, see webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditLog Specifies whether to globally enable or disable service logging. The default is perSvc (enable customized logging on a service-by-service basis). For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditLog.error Specifies whether to globally enable or disable error logging. The default is true (enable). For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditLog.gd Specifies whether to globally enable or disable guaranteed delivery logging. The default is true (enable). For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditLog.session Specifies whether to globally enable or disable session logging. The default is true (enable). For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditDBSize If maintaining the temporary store on disk, specifies the space allocation, in megabytes, for the temporary store files. The default is 10. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide.
313
watt.server.auditFetchSize Specifies the number of log entries for each logging thread to pull from the temporary store and store, as a batch, in flat files or database. The default is 10. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditMaxPool Specifies the maximum number of threads to use concurrently to write logging data to the temporary store. This property also specifies the maximum number of threads to use concurrently to pull logging data from the temporary store and write it to flat files or database. The default is 10. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditMinPool Specifies the minimum number of threads to use concurrently to write logging data to the temporary store. This property also specifies the minimum number of threads to use concurrently to pull logging data from the temporary store and write it to flat files or database. The default is 1. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditRetryCount If storing logging data in a database, specifies the maximum number of times to retry writing a log entry to the database. The default is 3. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditStore Specifies whether the server is to write logging data to flat files in the file system or to a database. The default is local (flat files). For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. watt.server.auditThreshold Specifies the maximum number of log entries the temporary store can hold. The default is 100,000. For complete information, see the webMethods Integration Platform Logging and Monitoring Guide. 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 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
314
watt.server.
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.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.cache.storageThresholdKB Specifies the size (in kilobytes) of the persistent server cache threshold. There is no default. watt.server.clientTimeout Specifies the amount of time (in minutes) after which an idle user session times out. The default is 10. 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 Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide.
315
watt.server.cluster.conFactor Specifies how important open connections are for determining whether the server is busy or not. Specify a number from 0 (least important) through 1 (most important). The values you specify for watt.server.cluster.conFactor, watt.server.cluster.memFactor, watt.server.cluster.reqComplFactor, and watt.server.cluster.threadFactor must add up to 1. The default is 0.25. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.db Specifies the location of the file system repository that the server uses to store information. The default is WmRepository2. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.disableLoadBalancing Specifies whether you want the clustered servers to perform load balancing by redirecting requests. The default is false, which indicates that the servers will perform load balancing. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.hosts Used primarily with the Reverse Invoke facility. Specifies a list of hosts you want to be in a pseudo cluster. A pseudo cluster allows for failover support to the webMethods Context/TContext clients without setting up a real cluster. For clients that call the service wm.server:getClusterNodes to find out about the servers in the cluster, the server returns the list of hosts specified in the watt.server.cluster.hosts property. See Clustering in the Reverse Invoke Configuration on page 164 for more information. watt.server.cluster.maxCons Specifies the maximum number of connections to the server before it is considered busy. If the server has more than the number of open connections you specify, it redirects requests to another server in the cluster. The default is 50. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.maxThreads Specifies the maximum number of threads in use by the server before it is considered busy. If the server is using more threads than the number you specify, it redirects requests to another server in the cluster. The default is 50. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide.
316
watt.server.
watt.server.cluster.memFactor Specifies how important availability of memory is for determining whether the server is busy or not. Specify a number from 0 (least important) through 1 (most important). The values you specify for watt.server.cluster.conFactor, watt.server.cluster.memFactor, watt.server.cluster.reqComplFactor, and watt.server.cluster.threadFactor must add up to 1. The default is 0.25. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.minFreemem Specifies minimum number of bytes of memory that a server has available before it is considered busy. If the server has fewer bytes of available memory than the number of bytes you specify, it redirects requests to another server in the cluster. The default is 32768. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.password Specifies the password the Integration Server must supply when connecting to the machine where the repository database is located. The default is Cluster. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.refreshRate Specifies number of seconds the server waits between attempts to refresh its status information in the cluster object in the cluster store. The default is 25. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.reqComplFactor Specifies how important past completions of requests are for determining whether the server is busy or not. Specify a number from 0 (least important) through 1 (most important). If the percentage of completed requests is high, the server is keeping up with the rate of requests. If the percentage of completed requests is low, the server is not keeping up with the rate of requests, and potentially might have to redirect incoming requests to other servers in the cluster. The values you specify for watt.server.cluster.conFactor, watt.server.cluster.memFactor, watt.server.cluster.reqComplFactor, and watt.server.cluster.threadFactor must add up to 1. The default is 0.25. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide.
317
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 Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.threadFactor Specifies how important thread usage is for determining whether the server is busy or not. Specify a number from 0 (least important) through 1 (most important). The values you specify for watt.server.cluster.conFactor, watt.server.cluster.memFactor, watt.server.cluster.reqComplFactor, and watt.server.cluster.threadFactor must add up to 1. The default is 0.25. You must be using webMethods Integration Platform Clustering to use this setting. For more information, refer to the webMethods Integration Server Clustering Guide. watt.server.cluster.user Specifies user name the Integration Server needs to supply when connecting to the machine where the repository server is located. The default is Cluster. watt.server.compile Specifies the compiler command the Integration Server uses to compile Java services that are developed using the Developer. This compiler command is also used from the jcode utility. By default, the server uses javac -classpath {0} -d {1} {2}. 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. watt.server.control.maxPersist Specifies the capacity of the outbound document store. The 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 on success at one time. If ServiceD publishes 125 documents on success and the maximum
318
watt.server.
is 100, ServiceD will receive an exception every time it executes. The default is 50,000 documents. watt.server.cronCatchup Specifies whether the server should attempt to catch up persisted scheduled jobs upon startup. When set to true, the Server will try to run these jobs at a constant rate until they are caught up. Use this property carefully! This activity consumes significant server resources. The default is false. 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.db.blocktimeout Note: This parameter is for use with the wmDB package only. If you are using the webMethods JDBC Adapter to connect to your databases, see the documentation for that adapter instead This parameter applies only if you are using server pooling instead of session pooling, that is, you have specified server on the watt.server.db.connectionCache property. See the description of that parameter, below, for more information. 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 Note: This parameter is for use with the wmDB package only. If you are using the webMethods JDBC Adapter to connect to your databases, see the documentation for that adapter instead 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. 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
319
Alias Information screen of the Integration Server Administrator. See WmDB Users Guide for more information about configuring the server to connect to a database. watt.server.db.maintainminimum Note: This parameter is for use with the WmDB package only. If you are using the webMethods JDBC Adapter to connect to your databases, see the documentation for that adapter instead. This parameter applies only if you are using server pooling instead of session pooling, that is, you have specified server on the watt.server.db.connectionCache property. See the description of that parameter, above, for more information. 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.email.from Specifies the email address the server presents as its From address when sending emails 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.errorMail Specifies the email address of administrator to notify when the server encounters an internal fault. There is no default. 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 JVMs file.encoding property. 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 Server Administrator interface. When this parameter is set to exclude, the server denies requests from all IP addresses except those specifically allowed on the 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.illegalNSChars Specifies the characters that you cannot use when naming a package, folder or service. The default is ?`-#&@^!%*:$.\ /;,~+=)(|}{][><.
320
watt.server.
watt.server.inetaddress Specifies the IP address of the network interface card (NIC) on which the server is to listen for incoming requests. By default, on multiple IP machines, the Integration Server listens on all available IPs. To limit the machine to listen on a single IP, specify its address on this parameter. 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 servers native encoding. 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.driverList For use with wmDB. Specifies a comma-delimited list of JDBC drivers you want the server to load when it initializes. There is no default. watt.server.keepAliveTimeout Specifies a length of time that the server maintains an open HTTP connection to a client after it sends an HTTP response back to the client. The default is 15000 ms (15 seconds). watt.server.key Specifies the license key for the server. There is no default. watt.server.ldap.attr.member Specifies the name of the variable (e.g., member) from which the Integration Server is to get the group membership information for a user ID. There is no default. watt.server.ldap.attr.password Specifies the name of the variable (e.g., password) from which the Integration Server is to get the password for a user ID. This value must match the name of the attribute in which the LDAP server expects to receive passwords. There is no default. watt.server.ldap.attr.userid Specifies the name of the variable (e.g., uid) from which the Integration Server is to get the User ID. This value must match the name of the attribute in which the LDAP server expects to receive user IDs. There is no default. watt.server.ldap.directoryRoot Specifies the distinguished name (DN) that defines the top entry of your LDAP directory hierarchy (e.g., o=webMethods, c=US). watt.server.ldap.extendedProps Specifies LDAP environment properties that the Integration Server will pass directly to an LDAP implementation when initializing a JNDI context. For example, you can instruct the JNDI to follow referrals by specifying the following:
watt.server.ldap.extendedProps=java.naming.referral=follow
321
watt.server.ldap.groupFilter Specifies a filter that the Integration Server uses to narrow down the selection of groups within the group root that is specified by the watt.server.ldap.groupRoot parameter. For more information about LDAP search filters, consult RFC 2254: Search Filters for LDAP. To set a group filter, type the name of the filter, e.g., (&(objectclass=rfc822mailgroup) (objectclass=homeGrownGroup). There is no default. watt.server.ldap.groupRoot Specifies the name of the root where group entries are located, relative to the specified directory root, which is identified by the watt.server.ldap.directoryRoot parameter. Specify the name of the group root entry (e.g., ou=Groups). There is no default. watt.server.ldap.security.credential Specifies the password the Integration Server uses when submitting a request to the LDAP server. There is no default. watt.server.ldap.security.principal Specifies the distinguished name that identifies the user that the Integration Server uses when submitting a request to the LDAP server. There is no default. watt.server.ldap.server Specifies the URL of the LDAP server. Specify the complete URL for your LDAP server. There is no default. watt.server.ldap.userFilter Specifies a filter that the Integration Server uses to narrow the selection of users within the user root that is specified by the watt.server.ldap.userRoot parameter. When you specify a filter, the LDAP server searches only those user entries matching the filter criteria. For more information about LDAP search filters, refer to RFC2254: Search Filters for LDAP. To set a user filter, type the name of the filter, e.g., (objectclass=inetOrgPerson) or (uid=*). There is no default. watt.server.ldap.userRoot Specifies the name of the root where user entries are located, relative to the specified directory root, which is identified by the watt.server.ldap.directoryRoot parameter. Specify the name of the user root entry (e.g., ou=People). There is no default. watt.server.ldap.usersInGroups Specifies how the server performs group and user filtering of users in LDAP directories. When this parameter is set to false (the default) the server performs group and user filtering independently. When the parameter is set to true, only groups that meet group filtering requirements are displayed on the IS Administrator. Within those groups, only users that meet user filtering requirements are displayed. watt.server.licenses Specifies the number of licenses. The default is 1.
322
watt.server.
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 Integration Platform Logging and Monitoring Guide. watt.server.oldkey Specifies the license key that was in use prior to the current key. There is no default. 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. 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. Important! Document type synchronization might not work properly if you disable the dependency checking features. Do not set the watt.server.ns.dependencyManager property to false if your integration solution uses document types in the publish-andsubscribe model. watt.server.port Specifies the port number of the Integration Servers 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.
323
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.revInvoke.errorSvcName For reverse invoke configurations only. Fully qualified name of the service to run if the filtering service on your reverse invoke server encounters errors (folder.folder2:servicename). See Setting Up the Filtering Service on page 174. watt.server.revInvoke.filterSvcContentTypes For reverse invoke configurations only. Name of content types for which you want the filtering service on your reverse invoke server to run. If the content type specified by the client matches any in the list, the reverse invoke Integration Server runs the filtering service. You can specify multiple content types separated by commas, for example text/xml, text/html. See Setting Up the Filtering Service on page 174. watt.server.revInvoke.filterSvcName For reverse invoke configurations only. Fully qualified name of the filtering service (folder.folder2:servicename) on the reverse invoke server. See Setting Up the Filtering Service on page 174. watt.server.revInvoke.proxyMapUserCerts For reverse invoke configurations only. Specifies whether a reverse invoke server is to perform client authentication itself in addition to passing authentication information to the internal server for processing. The default is false. See Performing Client Authentication on the Reverse Invoke Server on page 181 for more information. watt.server.scheduler.maxThreads Specifies the maximum number of threads in the thread pool the server uses for the scheduler. This number controls the maximum number of jobs that can run concurrently on the server. If this maximum number is reached, the server waits until jobs complete and return threads to the pool before running more jobs. The default is 10. watt.server.securePort Specifies the port number of the Integration Servers primary secured listening port. The default is 0. watt.server.securePortList Specifies the additional port numbers on which the Integration Server listens for HTTPS requests. The list is comma delimited. There is no default. watt.server.serviceMail Specifies the email address of an administrator to notify when a service no longer binds to a target site correctly. There is no default. watt.server.smtpServer Specifies the SMTP server to use for server error logging and service error email notification. There is no default.
324
watt.server.
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 email notification. The default is 25. 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 10. 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.threadPoolMin setting. The default is 10. watt.server.txMail Specifies the email 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 the cluster job store. The default is 120. You must be using webMethods Integration Platform 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 the cluster job store. The default is 100. You must be using webMethods Integration Platform 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.
325
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.users.listWmOnly Specifies whether the server displays external users and groups on the Server Administrator. When this value is set to true, the Server Administrator displays native users and groups only. When the value is set to false (the default), the Server Administrator also displays users and groups from external directories defined to the server. watt.server.wsdl.enforceSOAPMsgPartNS Specifies whether the server allows non-namespace qualified input and output signatures to be specified as message parts for a wsdl file. When this parameter is set to true (the default), the server will throw an exception during wsdl generation if a non-namespace qualified input or output signature is selected. When set to false, the server allows nonnamespace qualified signatures. If this parameter is set to false, set the watt.server.SOAP.enforceMsgPartNS server.cnf parameter to false too so that the runtime soap services will also allow non-namespace qualified header and body parts. For interoperability with other SOAP implementations, webMethods recommends that you run your server with this parameter enabled (the default setting). This ensures that your server will not generate wsdl files that have non-namespace qualified message parts. watt.server.xref.type Specifies where key cross referencing and echo suppression information is written. Specify ("repo") to write the data to the webMethods repository, which can be stored in the file system or in a database. Specify "jdbc" to write the data to the JDBC database specified for the Key Cross Referencing and Echo Suppression functional alias on the JBDC Connection Pools page. The default is "repo." For more information about the webMethods repository, refer to the webMethods Integration Server Clustering Guide.
326
watt.tx.
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.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.
327
328
APPENDIX
329
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.
330
Wireless Network
Wireless Gateway
Internet
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.coms 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. OR Retrieves 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.
331
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, webMethods discourages using port numbers below 1024. For more information, see Configuring Ports on page 62.
Specifies the required keyword invoke, which tells the Integration Server that the URL identifies a service that is to be invoked.
332
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 the 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 Dynamic Server Pages and Output Templates Developers Guide.
333
The URL you enter in the Web browser needs to adhere to the following format:
1 2 3 4
http://localhost5555/packageName/pub/fileName 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, webMethods discourages using port numbers below 1024. For more information, see Configuring Ports on page 62.)
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 OR http://localhost:5555/Wireless/hello.wml
334
335
336
APPENDIX
337
The Integration Server Administrator provides controls that you can use to limit the server resources used for document retrieval and processing. You can use the controls to increase or decrease the memory and thread usage for retrieving and processing documents. Specifically, you can use the controls to: Increase or decrease the number of server threads used to retrieve documents from the Broker. Suspend document retrieval for all triggers. Decrease the capacity of the individual trigger queues in the trigger document store. Increase or decrease the number of server threads used to process documents (execute triggers). Decrease the number of documents that the Integration Server can process simultaneously for concurrent triggers. Suspend document processing for serial and concurrent triggers. You can use these controls 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 triggers and server thread usage. The following sections provide more information about these controls. Note: The server uses threads to execute services, retrieve documents from the Broker, and execute triggers (process documents). The server thread pool has a maximum and minimum number of threads. When the server starts, the server thread pool contains the minimum number of threads. The server adds threads to the pool as needed until it reaches the maximum allowed. If the maximum number is reached, the server waits until processes complete and return threads to the pool before beginning more processes.
338
Using the Maximum Document Retrieval Threads field on the Settings > Resources > Trigger Throttle Controls screen, you specify the percentage of the server thread pool that can be used to retrieve documents. The Integration Server uses the percentage to calculate the number of server threads that can be used to retrieve documents from the Broker. For example, suppose that the maximum size of the server thread pool is 80 threads. If you specify a Maximum Document Retrieval Threads percentage of 10%, then the Integration Server can use only 8 threads to retrieve documents at one time. By reducing the percentage of threads for retrieving documents, you can make server threads and memory available to perform other tasks, such as answering HTTP requests or processing documents. You can also increase the percentage of server threads for document retrieval. This allows more triggers to retrieve documents from the Broker at one time. Note: When you modify the value of the Maximum Document Retrieval Threads field, the Integration Server begins using the new value as soon as you save your changes. You do not need to restart the server for the change to take effect. For more information about setting the number of server threads for document retrieval, see Limiting Server Threads for Document Retrieval and Trigger Execution on page 92.
339
to perform other tasks, you can decrease the Maximum Document Retrieval Threads percentage. For more information about setting the Available Threads Warning Threshold, see Managing the Server Thread Pool on page 90.
340
retrieves 3 documents to increase the number of documents in the store to 4 (the adjusted Capacity). Tip! If you want the Integration Server to temporarily stop retrieving documents, you can reduce the Trigger Document Store Capacity Throttle to 0% (Suspend). Any server threads currently retrieving documents will execute to completion. However, the Integration Server will not dispatch any new threads to retrieve documents.
To decrease the capacity of trigger document stores 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 Trigger Throttle Controls, and then click Edit Trigger Throttle Controls. Under Trigger Document Retrieval, in the Trigger Document Store Capacity Throttle field, select the percentage of configured capacity at which you want all trigger documents stores to operate. The Integration Server automatically adjusts the refill levels by the same percentage. If you want the server to temporarily stop retrieving documents from the Broker, select 0% (Suspend). 5 Click Save Changes.
Important! The Trigger Document Store Capacity Throttle is not persisted across server restarts. When you restart the server, the value of this field is reset to 100%. Notes: Decreasing the capacity will increase the frequency with which the Integration Server retrieves documents because the Integration Server will empty the trigger document store to the adjusted Refill level more quickly. However, the amount of memory needed to retrieve documents will be less because the Integration Server retrieves fewer documents. If you suspend document retrieval or 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 Publish-Subscribe Developers Guide. If you suspend document retrieval from the Broker, but leave the trigger execution at or above 10%, the Integration Server eventually processes all of the documents in the trigger document stores.
341
If you use the Trigger Document Store 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, make sure to use webMethods Developer to set the new Capacity and Refill level values for each trigger.
342
Note: When you modify the value of the Maximum Trigger Execution Threads field, the Integration Server begins using the new value as soon as you save your changes. You do not need to restart the server for the change to take effect.
343
Prevent concurrent triggers from monopolizing the threads allotted for trigger execution. The number of server threads that the server dispatches to execute serial and concurrent triggers cannot exceed the value set by the Maximum Trigger Execution Threads. If you reduce the number of threads allowed for trigger execution, 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 Document processing trigger properties determine the maximum number of documents that the Integration Server can process for a trigger at one time. Specifically, each concurrent trigger specifies a Maximum execution threads value. This value indicates the number of threads the Integration Server can dispatch at one time for this trigger. For more information about selecting a document dispatching mode for triggers, see PublishSubscribe Developers Guide. Using the Trigger Execution Threads Throttle, you can reduce maximum concurrent execution threads for all concurrent triggers by the same percentage. For example, if you set Trigger Execution Threads Throttle to 50% of maximum, the Integration Server reduces the Maximum execution threads for all concurrent triggers by half. A concurrent trigger with a Maximum execution threads value of 6, has an adjusted Maximum execution threads value of 3. Note: Serial triggers always process only one document at a time. The Trigger Execution Threads Throttle property only affects serial triggers if you suspend all trigger execution by setting the property to zero percent (0%). If the percentage by which you reduce trigger execution threads does not evaluate 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 Trigger 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 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 Trigger 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. Tip! If you want to suspend document processing for all triggers (concurrent and serial), set the Trigger Execution Threads Throttle to 0% (Suspend). When you suspend document processing, server threads currently processing documents run to completion. The Integration Server will not dispatch any additional threads to process documents.
344
To decrease parallel execution threads for concurrent 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 Resources. Click Trigger Throttle Controls, and then click Edit Trigger Throttle Controls. Under Trigger Execution, in the Trigger Execution Threads Throttle field, select the percentage of the configured Maximum execution threads value at which you want to the server to function. The Integration Server applies this percentage to the Maximum execution threads value for all concurrent triggers. If you want to suspend document processing for all triggers (serial and concurrent), select 0% (Suspend). 5 Click Save Changes.
Important! The Trigger Execution Threads Throttle is not persisted across server restarts. When you restart the server, the value of this field is reset to 100%.
Notes:
If you suspend document processing (trigger execution) and do not suspend document retrieval, the Integration Server will fill all the trigger document stores to the adjusted capacity. Full trigger document stores consume more memory than empty trigger document stores. You can also reduce the number of concurrent execution threads for a trigger by reducing the capacity of a trigger document store below the maximum number of concurrent execution threads for the trigger. For more information about reducing document store capacity using the Trigger Document Store Capacity Throttle, see Decreasing the Capacity of Trigger Document Stores on page 340. If you use the Trigger Execution Threads Throttle as part of your capacity planning process and you determine that the configured values for Maximum execution threads need to change, make sure to use webMethods Developer to set a new Maximum execution threads values for each concurrent trigger.
345
346
Index
Index
A
Access Control Lists (ACLs) ACL used when none assigned to service 142, 146 Administrators 142 Anonymous 142 assigning to services 147 creating 143 Default 142 deleting 145 description of use 138 Developers 142 how they work with services 146 Internal 142 predefined 142 protecting use of remote server aliases 80 removing from services 148 removing protection from files 149 Replicators 142 updating 144 access file, using to control access to files 148 accessing any Web document for package 230 external user and group information 209 home page for package 230 ACLs. See Access Control Lists (ACLs) activating packages 232 activation codes from registration authority 192 adding Access Control Lists (ACLs) 143 additional ports 63 administrators 115 aliases for remote servers 80 developers 117 groups 54 packages 231 port restrictions 136, 137 services to server manually 280 subscribers to packages 243 user accounts 46 users to a group 55, 56 Administrator user account 46 administrators adding alternate administrators 18 defining 115 defining external users as 216 e-mail address for guaranteed delivery 267 password for predefined user account 17 predefined ACL, description 142 predefined group, description 53 predefined user account, description 17, 46 receiving messages, overview 17 responsibilities 16 role 16 SMTP server for e-mail address for guaranteed delivery 267 Administrators ACL 142 Administrators group 53 aliases functional 84 PKI profile, deleting 196 aliases, remote servers deleting 83 identifying 80 testing connection 82 updating 83 Allow By Default access to services through a port 180 port IP access (custom) 133 port IP access (global) 132 anonymous predefined ACL, description 142 Anonymous ACL 142 Anonymous group 53 architecture, webMethods Integration Server 20 archiving packages 235 AS/400 systems, port queue size 323
347
Index
assigning Access Control Lists (ACLs) to services 147 audit-trail logging overview 25 writing log to screen 30 authenticating basic authentication 155 client certificates 150 customizing authentication with pluggable module 156 description 150 reasons server cannot use client certificates 151 registering alternate authentication processor 159 unregistering alternate authentication processor 160 using NT Challenge/Response 184 using user names and passwords (basic) 155 using user names and passwords with NT Challenge/Response 184 when invalid password supplied 155 when invalid user name supplied 155 when it occurs 150 when user name not supplied 155 when using external directories 215 when using LDAP 215 when using NIS 215 authentication module creating 158 automatic pull facility 251 auxiliary profile for PKI profile 193 available threads warning threshold 91 Available Threads Warning Threshold property 339, 343
B
B2B services. See services blocking incoming requests to server 76 built-in services pub.pki 187, 188
C
C/C++ services, adding to server manually 280 caching service results overview 262 resetting for all services 264
resetting for single service 264 viewing statistics 264 canceling package subscriptions 258 when services scheduled to execute 291 capacity default document store 99 described 340 outbound document store 103 suspending for triggers 341 trigger document store 100 CAs. See certificate authorities (CAs) central predefined user account, description 46 certificate authorities (CAs) certificates to validate client certificates 152 requesting digital certificate from 123 Certificate Revocation List (CRL) 186, 205 when downloaded 205 certificate signing request (CSR), creating 123 Certificate Toolkit 122 certificates, digital certificates required to validate client certificates 152 description of use 120 obtaining certificate authoritys 123 reasons server cannot use to authenticate 151 requesting for server 123 trusted, for PKI profile 194 using for authentication 150 Challenge/Response (NT) activating 185 deactivating 185 using to authenticate 184 changing Access Control Lists (ACLs) 144 aliases for remote servers 83 license key 60 membership for groups 57 password for user accounts 49 passwords 48 primary port 75 when services scheduled to execute 290 checking if server is running 31
348
Index
checklists configuring server 301 deploying the server 300 implementing SSL 121, 127 installing server 300 installing services 303 security 304 setting up user accounts, groups, and ACLs 302 Clear All Duplicate or In Doubt Document Statistics link 105 client certificates certificates required to validate 152 description 150 information required to use 152 presenting multiple 127 reasons server cannot use to authenticate 151 client groups, switching 108 clients, authenticating 150 client-side queuing described 102 clustering 26 in a reverse invoke configuration 164 code subdirectory 223 command line parameters for starting server 29 starting server from 28 communications with server, securing with SSL 119 concurrent triggers document dispatching 344 maximum execution threads for 344 suspending 344 configuration settings bypass list for proxy servers 79 controlling who can set 115 descriptions 308 guaranteed delivery 267 how long to keep inactive sessions 94 how to set 41 LDAP 210 license keys 60 NIS 212 overriding when starting server 28 ports 62 proxy servers 77
server.cnf file 41 configuring additional ports 63 bypass list for proxy servers 79 checklist 301 controlling who can configure the server 115 default document stores 98 description of all settings 308 different primary port 75 guaranteed delivery 267 how long to keep inactive sessions 94 outbound document store 102 PKI system settings 189 ports 62 proxy servers 77 server 59 server resources 90 SSL 124 checklist 121 checklist for presenting multiple client certificates 127 required information 122 trigger document store 100 use of LDAP or NIS 210 user account to use 46 connection pool JDBC defining 86 controlling access to services and files 138 access to services by port 130, 135 server SSL security level by port 128 who can configure the server 115 who can develop services 117 controls for triggers 338 conventions used in this document 13 copying packages ACL used 142 group used 54 how to 246 publisher tasks 242 requesting subscriptions to packages 253 subscriber tasks 251
349
Index
to other servers 235 user account used 46 creating a release of a package 246 Access Control Lists (ACLs) 143 certificate signing request (CSR) 123 packages 231 packages distribution files 246 PKI profile aliases 194 CRL (Certificate Revocation List) 186, 205 when downloaded 205 CSR (certificate signing request), creating 123 Current Document Retrieval Threads property 339 Current Trigger Execution Threads property 343 customizing authentication 156
D
database drivers for Cross Key Referencing and Echo Suppression databases 85 for use with wmDB 321 database storage accessed through WmDB or JDBC adapter 84 DB2 UDB database URL 87 Oracle database URL 87 repository 84 SQL Server database URL 87 DB2 UDB database URL 87 debug mode of the server 29 decreasing capacity of trigger document stores 340 document processing for concurrent triggers 343 server threads for concurrent trigger execution 343 server threads for document processing 342 server threads for document retrieval 338, 339 trigger execution for concurrent triggers 343 decrypting documents 188 Default ACL 142 default document store capacity 99 configuring 98 defined 97 initial size 99
location 98 refill level 99 Default user account 46 defining Access Control Lists (ACLs) 143 administrators 115 developers 117 groups 54 packages 231 subscribers to packages 243 user accounts 45 deleting Access Control Lists (ACLs) 145 aliases for remote servers 83 groups 58 packages 234 ports 75 subscribers to packages 246 user accounts 47 Deny By Default access to services through a port 135, 179 port IP access (custom) 135 port IP access (global) 131 dependency manager, enabling and disabling 323 Developer predefined user account to use 46 privilege required to access server from 117 Developer user account 46 developers defining 117 defining external users as 217 predefined ACL, description 142 predefined group, description 53 predefined user account, description 46 Developers ACL 142 Developers group 53 digital certificates See also certificates certificates required to validate client certificates 152 client certificates for authentication 150 description of use 120 obtaining certificate authoritys 123 reasons server cannot use to authenticate 151
350
Index
requesting 123 disabling guaranteed delivery for outbound requests 270 packages 233 ports 76 users 51 displaying active sessions 32, 61 documentation for packages 230 folders 278 license key 60 licensed session limit 61 log information on screen 30 membership for groups 57 package information 227 package subscriptions 252 packages residing on your server 225 service information 278 service statistics 264 services 278 subscribers to packages 242 when services scheduled to execute 289 when system tasks execute 292 whether packages are enabled/disabled 226 whether packages are loaded/unloaded 226 distribution files for packages creating 246 sending 246 DMZ running a reverse invoke Integration Server in 161 doc subdirectory 224 document dispatching, for triggers 344 document history database, removing expired entries 105 document processing limiting threads for 92 server threads for 342 suspending 344 document retrieval limiting threads for 92 server threads for 338, 339 suspending 341
document stores default capacity 99 configuring 98 refill level 99 outbound capacity 103 configuring 102 overview 97 triggers capacity 100 configuring 100 initial size 101 location 101 reducing capacity 340 refill level 100 suspending capacity 341 documentation additional 13 conventions used 13 feedback 13 for your packages 230 documents 188 signing 188 DSA encryption algorithm 193
E
Echo Suppression database 84 e-mail address for messages when guaranteed delivery fails 267, 273 SMTP server to use for messages when guaranteed delivery fails 267, 273 e-mail ports assigning 63 Enabled icon, color descriptions 226 enabling client-side queuing 102 packages 233 ports 76 users 51 encryption algorithms 193
351
Index
encryption keys expiration 201 expiry accounts for 201 renewal accounts for 201 updating 201 Entrust encryption algorithm 193 Entrust PKI proxy installing 204 epf files creating for PKI profile 192 for storing PKI profiles 186 Event Manager 282 eventcfg.bin file 282 events running services in response to 282 Everybody group 53 executing replication services 282 services 24 services at scheduled times 283 shutdown services 281 startup services 281 expiry accounts for encryption keys 201 exporting PKI profiles 202 external directories accessing users and passwords in 156 considerations for user accounts and groups 214 granting users access to services and files 218 granting users administrator privileges 216 granting users developer privileges 217 how server authenticates 215 how server uses 208 overview 208 to stop using 213 when server accesses 209 external groups assigning administrator privileges 216 assigning developer privileges 217 assigning to ACLs 218 configuring server to use 210 how server uses 208
when server accesses 209 external user accounts assigning access to services and files 218 assigning administrator privileges 216 assigning developer privileges 217 configuring server to use 210 how server uses 208 when server accesses 209
F
factory class creating 157 files controlling access to 148 removing Access Control List (ACL) protection from 149 filtering service setting up on a reverse invoke Integration Server 174 firewall running an internal server behind 161 flat files sending and receiving via Trading Networks 22 folders assigning Access Control List (ACLs) 147 description 276 listing 278 FTP ports, assigning 63 full release of a package 237 functional aliases JDBC Connection pools 84
G
gateway. See wireless gateway group name description 52 specifying for groups 52 groups adding 54 adding users to 55, 56 administrator privileges 53 Administrators 53 Anonymous 53
352
Index
changing membership 57 considerations when using external directories 214 defining 52 deleting 58 developer privileges 53 Developers 53 externally-defined 208 group name 52 overview 44 predefined 53 privileges that can be shared 52 purpose 44 replicator privileges 54 Replicatosr 54 settings 52 specify members of 52 specify users that belong to 45 viewing membership 57 guaranteed delivery administering 271 audit-trail log for inbound transactions 269 audit-trail log for outbound transactions 270 configuring 267 description of 266 disabling outbound transactions 270 e-mail address and SMTP server for error notification 273 e-mail address for error notification 267 handling heuristic failures 268 handling restart after a failure 268 how often to cleanup inbound job store 268 inbound job store, description 267 reinitializing for inbound transactions 271 reinitializing for outbound transactions 272 requests to other servers 266 retry after server failure 268 retry wait 270 server failure 268 service threads 270 shutting down 271 SMTP server for error notification 267 specify how long transactions active 270 submitting outbound transactions 270 thread pool 270
H
Handheld Device Markup Language. See HDML (Handheld Device Markup Language) HDML (Handheld Device Markup Language) 330, 333 HDML pages accessing with wireless devices 333 heap size, increasing 98 heuristic failures, guaranteed delivery specifying how to handle 268 home page for packages 230 hosts allowing inbound requests 132, 135 denying inbound requests 132 HSM devices for storing private keys 186 library name 190 token label 193 HTTP ports assigning 63 changing to or from primary port 75 HTTP proxy server bypass list 79 configuring 77 HTTPS ports assigning 63 changing to or from primary port 75 HTTPS proxy server bypass list 79 configuring 77
I
inbound client-side queuing described 102 inbound document history overview 101 increasing server threads for document retrieval 338 threads for document retrieval 339 inner firewall running an internal server behind 161
353
Index
installing package published from another server 259 run-time classes 304 server 300 services, checklist 303 Internal ACL 142 internal server setting up in a reverse invoke configuration 176 IP access to ports customizing for individual ports 133 setting globally 131
J
Java services adding to server manually 280 JDBC connection pools defining 86 JDBC databases storing logging and status information in 84 job store for inbound guaranteed delivery transactions 267 how long outbound transactions active 270 removing expired inbound transactions 268 submitting outbound transactions 270 JVM checking version when copying a package 240
K
Key Cross Referencing Database 84 key pair used for SSL description 122 obtaining 122 keys, encryption expiration 201 PKI profile 193 updating 201
L
label HSM device token 193
LDAP accessing users and passwords in 156 assigning groups to ACLs 218 configuration settings 210 considerations for user accounts and groups 214 granting users access to services and files 218 granting users administrator privileges 216 granting users developer privileges 217 how server authenticates 215 how server uses 208 when server accesses 209 LDAP directory of PKI authority 190 library name HSM device 190 license keys changing 60 description 60 licensed sessions 61 renewal reminders 61 renewing 61 viewing 60 viewing licensed session limit 61 viewing number of active sessions 61 when session limit reached 61 listening ports overview 20 listing active sessions 32 folders 278 log information on screen 30 packages residing on your server 225 services 278 load balancing, overview 26 Loaded? icon, color descriptions 226 loading packages 232 location default document store 98 trigger document store 101 locking out users 51
354
Index
logging overview 25 writing log to screen 30 logging in PKI profile 195 logging off Server Administrator 40
M
manifest file for packages 224 Maximum Document Retrieval Threads property 92, 339 Maximum Documents to Send per Transaction property 102 maximum threads scheduler thread pool 94 Maximum Trigger Execution Threads property 92, 342 maxPersist parameter 103
N
naming services 276 NIC specifying which one server is to listen on for incoming requests 321 NIS assigning groups to ACLs 218 configuration settings 212 configuring server to use 212 considerations for user accounts and groups 214 granting users access to services and files 218 granting users administrator privileges 216 granting users developer privileges 217 how server authenticates 215 how server uses 208 when server accesses 209 ns subdirectory 224 NT Challenge/Response activating 185 deactivating 185 using to authenticate 184
configuring 102 defined 97 emptying 102 maxPersist parameter 103 setting transaction limit 102 overview audit-trail logging 25 caching service results 26, 262 external directories 208 guaranteed delivery 266 load balancing 26 package replication 235 ports 20 proxy servers 22 receiving administrator messages 17 server security 25, 114 services 276 user and groups 44 webMethods Integration Server 20
P
packages ACL for package replication 142 activating 232 archiving 235 canceling subscriptions to 258 code subdirectory 223 copying 235 copying to another server 235 creating 231 cutting 235 deleting 234 description 220 determining whether enabled/disabled 226 determining whether loaded/unloaded 226 directory structure 223 disabling 233 displaying documentation for 230 displaying subscriptions to 252 doc subdirectory 224 Enabled icon color descriptions 226 enabling 233 full vs. patch release 237
O
Oracle database URL 87 outbound document store capacity 103, 318
355
Index
group for package replication 54 guidelines for package replication 241 home page 230 information you can view 225 installing published package 259 Loaded? icon color descriptions 226 location 223 making available 233 manifest file 224 moving 235 ns subdirectory 224 pasting 235 predefined 221 prohibiting access to 233 pub subdirectory 224 publishing to other servers 246 recovering 234 release 236 reloading 232 replicating 235, 246 residing on your server 225 retrieving automatically 251 retrieving manually 251 safe delete 234 sample services 222 subscribing to 253 tasks you can perform 231 templates subdirectory 224 user account for package replication 46 viewing information about 227 web subdirectory 224 who can subscribe to 241 partial release of a package 237 passwords changing 48, 49 creating for PKI profile 192 description 45 predefined Administrator user account 17 requirements 48 rules for PKI profiles 204 specifying in user accounts 45
patch release of a package 237 PKI authority LDAP directory 190 url of 190 PKI profile aliases creating 194 deleting 196 viewing information about 196 PKI profiles 186, 193 assigning passwords 192 authorization code 198 auxiliary 193 changing location of 202 changing password 201 creating 191 creating .epf file 192 deleting 196 deleting aliases 196 determining whether logged in 197 exporting 202 key pair algorithm 193 key strength 193 location 194 password rules 204 reference number 198 viewing information about 196 WmPKI package 187 PKI proxy 186 installing 204 PKI system configuring settings 189 connecting server to 189, 195 PKIXCMP messages routing through proxy 186 pluggable module as alternate authentication processor 156 customizing authentication with 156 port queue size, lowering for AS/400 323 ports adding additional 63 Allow By Default access to services 180 changing primary 75
356
Index
configuring 62 controlling access to services through 130, 135 controlling SSL security level of 128 deleting 75 Deny By Default access to services 135, 179 disabling 76 enabling 76 overview 20 reasons to add additional 63 reasons to change primary 75 resetting access to 138 ports, listening adding additional 63 Allow By Default access to services 180 changing primary 75 configuring 62 deleting 75 Deny By Default access to services 135, 179 disabling 76 enabling 76 overview 20 reasons to change primary 75 resetting access to 138 preventing access to packages 233 hosts that can connect to server 132 use of ports 76 private keys storing on HSM devices 186 private/public key pair used for SSL description 122 obtaining 122 privileges administrator, description 115 administrator, granting 115 administrator, granting when using external directory 216 developer, description 117 developer, granting 117 developer, granting when using external directory 217 replicator 54 that groups can share 52 processing documents server threads for 342
profile aliases creating 194 profiles, PKI 186 auxiliary 193 changing 201 creating 191 location 194 program code conventions in this document 13 protocols e-mail 62 FTP 62 HTTP 62 HTTPS 62 SOCK 62, 162 SSLSOCK 62, 162 proxy port on reverse invoke Integration Server, definition 162 proxy servers bypassing 79 configuring 77 overview 22 PKI 186 installing 204 pub subdirectory 224 pub.pki services 187, 188 published documents maximum published at one time 318 publishing packages creating the distribution file 246 guidelines 241 how to 246 identifying recipients (subscribers) 243 installing published package 259 removing recipients (subscribers) 246 requesting subscriptions 253 sending the distribution file 246 sending the release 246 updating subscriber information 244 who can publish 241 who can subscribe 241
357
Index
publishing servers creating package distribution file 246 displaying subscribers 242 publishing packages 246 sending package release 246 tasks 242 who can publish 241 publishing services blocking 318 maximum published documents 318 pulling a package automatically 251 manually 251
R
receiving administrator messages 17 recovering packages 234 reducing document processing for concurrent triggers 343 trigger execution for concurrent triggers 343 refill level default document store 99 trigger document store 100 Refill level property described 340 registering alternate authentication processor 159 Registration Authority obtaining replacement activation codes from 198 supplier of certificate activation codes 191, 192 registration port on reverse invoke Integration Server, definition 162 reinitializing guaranteed delivery for inbound transactions 271 guaranteed delivery for outbound transactions 272 releases creating 246 full vs. patch 237 sending 236, 246 reloading packages 232 remote servers identifying aliases 79
Remove Expired Document History Entries link 105 removing Access Control Lists (ACLs) 145 Access Control Lists (ACLs) from services 148 groups 58 packages 234 ports 75 scheduled execution of service 291 subscribers to packages 246 user accounts 47 renewal accounts for encryption keys 201 renewing license key 61 replicating packages ACL 142 group 54 guidelines 241 how to 246 overview 235 publisher tasks 242 Replicator user account 241 Replicators ACL 241 Replicators group 241 requesting subscriptions to packages 253 subscriber tasks 251 user account 46 who can subscribe 241 replication services what they are 282 Replicator user account 46 Replicators ACL 142 Replicators group 54 resetting access to ports 138 cache for all services 264 cache for single service 264 restarting guaranteed delivery for inbound transactions 271 guaranteed delivery for outbound transactions 272 reasons for restarting server 32 server 32
358
Index
restricting access to Server Administrator 115 access to server from Developer 117 access to services and files 138 access to services by port 130, 135 hosts that can connect to server 132, 135 resuming scheduled execution of service 291 retrieving documents server threads for 339 using server threads for 338 retry guaranteed delivery 268 reverse invoke overview 161 setting up 165 setting up a filtering service 174 when clustering 164 role of administrator 16 of webMethods Integration Server 20 round robin method for selecting connection to internal server in reverse invoke configuration 162 run-time classes, installing 304
S
scheduler thread pool, sizing 94 scheduling execution of services 290 canceling scheduled user task 291 changing scheduled times 290 complex scheduling options 285 description 283 examples of complex scheduling options 286 execute one time 284 execute repeated times 284 how often to execute 284 resuming scheduled user task 291 system tasks 283 user tasks 283 viewing scheduled times 289 viewing when system tasks execute 292 Secure Sockets Layer (SSL) background information 119 certificate signing request (CSR) 123
checklist to implement 121, 127 client certificates 150 configuring server to use 124 controlling security level by port 128 how server uses 119 information required to implement 122 information required to use client certificates 152 obtaining certificate authoritys certificate 123 obtaining private/public key pair 122 private key pair 122 requesting digital certificate 123 use of certificates 120 use of digital certificates 120 security checklist 304 checklist to implement SSL 121, 127 controlling access to services and files 138 controlling access to services by port 130, 135 controlling SSL security level by port 128 controlling who can configure the server 115 controlling who can develop services 117 information required to implement SSL 122 overview 25, 114 securing server communications 119 sending distribution files 246 releases 246 sending and receiving flat files via Trading Networks 22 serial triggers document dispatching 344 suspending 344 server. See webMethods Integration Server Server Administrator controlling access to 115 description 17, 38 how to use 39 logging off 40 picture of 39 starting 38 server clustering, description 26 server resources 90 server security. See security
359
Index
server thread pool document retrieval threads 92 limiting thread usage 92 maximum threads 91 minimum threads 91 sizing 90 trigger execution threads 92 warning level 91 server threads current threads for trigger execution 343 for document processing 342 for document retrieval 338 for trigger execution 342 warning threshold 343 server.cnf description of settings 308 guaranteed delivery settings 267 how to set configuration settings 41 location 308 updating from Server Administrator 106 services ACL used when no assigned ACL 142, 146 assigning Access Control Lists (ACLs) to 147 caching results, overview 262 caching service results overview 26 canceling scheduled user task 291 changing scheduled times of execution 290 controlling access to by port 130, 135 controlling who can access 138 controlling who can develop 117 deleting its Access Control List (ACL) 145 denying access to external users 218 fully-qualified names 276 granting access to external users 218 guaranteeing delivery of requests to server 266 guaranteeing delivery of responses from services 266 guidelines for using startup/shutdown/replication 282 how Access Control Lists (ACLs) work 146 how server executes 24 how server retrieves data for 22 how to control access to 139 information to schedule user tasks 283 invoking with URLs 332
listing 278 manually adding to server 280 naming 276 overview 276 pub.pki 187, 188 removing Access Control Lists (ACLs) from 148 replication 282 resetting cache for all services 264 resetting cache for single service 264 resuming scheduled user task 291 running in response to specific events 282 samples in WmSamples 222 scheduling to execute 283 shutdown 281 startup 281 suspending scheduled user task 290 tasks you can perform 280 testing 280 user account for invoking trigger services 103 viewing information about 278 viewing scheduled times of execution 289 viewing service statistics 264 viewing when system tasks execute 292 when replication services are executed 282 when shutdown services are executed 281 when startup services are executed 281 sessions how long to keep inactive sessions 94 maximum number allowed per license 61 stopping all 31 timeout limit 94 viewing 32 sessions, licensed limit 61 viewing active 61 viewing limit 61 shutdown services guidelines for use 282 what they are 281 shutting down guaranteed delivery 271 server with restart 32 webMethods Integration Server 31
360
Index
sizing default document store 99 scheduler thread pool 94 server thread pool 90 trigger document store 100 SMTP address for messages when guaranteed delivery fails 267 SMTP server specifying for error messages generated during guaranteed delivery processing 273 SOCK protocol for unencrypted transfer in reverse invoke configuration 162 specifications viewing information about 278 SQL Server database URL 87 SSL. See Secure Sockets Layer (SSL) SSLSOCK protocol for encrypted transfer in reverse invoke configuration 162 starting command line parameters 29 guaranteed delivery for inbound transactions 271 guaranteed delivery for outbound transactions 272 Server Administrator 38 server from command line 28 server on UNIX 28 server, overriding configuration settings 28 server, process 31 startup services guidelines for use 282 what they are 281 stopping active sessions 31 server 31 server with restart 32 use of external directories 213 store location default document store 98 subscribing servers canceling subscriptions 258 displaying 242 identifying 243 installing published package 259 removing 246
requesting subscriptions 253 tasks 251 updating information for 244, 256 who can subscribe 241 subscribing to packages displaying current subscriptions 252 guidelines 241 how to 253 manually pulling current subscriptions 252 updating subscription information 256 who can subscribe 241 subscriptions canceling 258 displaying 252 installing published package 259 pulling 252 requesting from a remote server 253 suspending concurrent triggers 344 document processing 344 document retrieval 341 scheduled execution of service 290 scheduled user task 290 serial triggers 344 trigger execution 344 synchronization, and dependency manager 323 system tasks description 283 viewing when scheduled to execute 292
T
templates subdirectory 224 testing connection to remote servers 82 installation of server 306 services 280 thread pool limiting server thread usage 92 scheduler 94 server 90 warning threshold 91 thread usage for retrieving documents 338
361
Index
threshold server thread availability 91, 343 throttle controls overview 338 Trigger Document Store Capacity Throttle 340 time to live (TTL), specifying for guaranteed delivery 270 timeout limits sessions 94 token label 193 Tomcat JSP/servlet engine 222 Trading Networks, sending flat files to 22 transaction logs inbound guaranteed delivery transactions 269 outbound guaranteed delivery transactions 270 trigger document store capacity 100 reducing 340 configuring 100 defined 97 initial size 101 location 101 reducing capacity 340 refill level 100 Trigger Document Store Capacity Throttle property 340 trigger document stores suspending capacity 341 trigger execution current threads for 343 server threads for 342 Trigger Execution Threads Throttle property 343 trigger throttle controls Current Document Retrieval Threads property 339 Current Trigger Execution Threads property 343 Maximum Document Retrieval Threads 338 Maximum Trigger Execution Theads 342 overview 338 Trigger Document Store Capacity Throttle property 340 Trigger Execution Threads Throttle property 343
triggers Capacity property 340 concurrent maximum execution threads for 344 reducing execution threads 343 document dispatching 344 execution threads limiting 92 reducing execution of 343 Refill level property 340 specifying user account 103 suspending execution 344 threads for executing 342 troubleshooting information 13 trusted certificates for PKI profile 194 TTL (time to live), specifying for guaranteed delivery 270 typographical conventions in this document 13
U
unauthenticated users predefined group, description 53 UNIX starting webMethods Integration Server 28 unregistering alternate authentication processor 160 updating Access Control Lists (ACLs) 144 aliases for remote servers 83 license key 60 membership for groups 57 subscriber information 244 subscription information 256 when services scheduled to execute 290 URLs accessing the server with 332 DB2 UDB database 87 invoking services with 332 Oracle database 87 SQL Server database 87 using to access HDML or WML pages 333
362
Index
user accounts account to configure and manage server 46 account to use when connecting from Developer 46 adding 46 Administrator 17 considerations when using external directories 214 deleting 47 description 45 externally-defined 208 for invoking trigger services 103 group membership 45 overview 44 password 45 predefined 46 purpose 44 settings 45 user name 45 using to authenticate (basic) 155 using to authenticate with NT Challenge/Response 184 when client does not supply a user name 46 user name externally-defined 208 specifying in user account 45 using to authenticate (basic) 155 using to authenticate with NT Challenge/Response 184 user tasks canceling scheduled execution 291 changing when scheduled to execute 290 complex scheduling options 285 examples of complex scheduling options 286 information to schedule services 283 resuming scheduled execution 291 schedule to execute one time 284 schedule to execute repeated times 284 suspending scheduled execution 290 viewing when scheduled to execute 289 users authenticating 150 disabling 50, 51 enabling 50, 51 locking out 50
V
versions checking when a package is copied 240 viewing active sessions 32, 61 documentation for packages 230 folders 278 license key 60 licensed session limit 61 membership for groups 57 package information 227 package subscriptions 252 packages residing on your server 225 service information 278 service statistics 264 services 278 subscribers to packages 242 when services scheduled to execute 289 when system tasks execute 292 whether packages are enabled/disabled 226 whether packages are loaded/unloaded 226
W
WAP gateway. See wireless gateway warning for thread availability 343 warning threshold, server thread availabliity 91 watt.debug.level 308 watt.debug.logfile 269, 308 watt.debug2.facList 309 watt.debug2.logstringfile 309 watt.net.ftpConnTimeout 309 watt.net.maxRedirects 309 watt.net.proxyHost 309 watt.net.proxyPass 309 watt.net.proxyPort 309 watt.net.proxySkipList 309 watt.net.proxyUser 309 watt.net.retries 310 watt.net.secureProxyHost 310 watt.net.secureProxyPass 310 watt.net.secureProxyPort 310 watt.net.secureProxyUser 310
363
Index
watt.net.ssl.client.strongcipheronly 310 watt.net.ssl.server.strongcipheronly 310 watt.net.timeout 310 watt.net.useCookies 310 watt.net.userAgent 310 watt.security.caCert 311 watt.security.CADir 311 watt.security.cert.wmChainVerifier.trustByDefault 311 watt.security.fips.mode 311 watt.security.privateKey 311 watt.security.signedCert 311 watt.security.ssl.ignoreExpiredChains 312 watt.server. cronCatchup 319 watt.server.allowDirective 312 watt.server.auditDBSize 313 watt.server.auditDir 313 watt.server.auditFetchSize 314 watt.server.auditGuaranteed 313 watt.server.auditLog 313 watt.server.auditLog.error 313 watt.server.auditLog.gd 313 watt.server.auditLog.session 313 watt.server.auditMaxPool 314 watt.server.auditMinPool 314 watt.server.auditRetryCount 314 watt.server.auditStore 314 watt.server.auditThreshold 314 watt.server.broker.producer.multiclient 314 watt.server.broker.replyConsumer.fetchSize 314 watt.server.broker.replyConsumer.multiclient 315 watt.server.broker.replyConsumer.sweeperInterval 315 watt.server.cache.flushMins 315 watt.server.cache.gcMins 315 watt.server.cache.isPersistent 315 watt.server.cache.storageThresholdKB 315 watt.server.clientTimeout 315 watt.server.cluster.aware 315 watt.server.cluster.conFactor 316 watt.server.cluster.db 316 watt.server.cluster.disableLoadBalancing 316 watt.server.cluster.hosts 316 watt.server.cluster.maxCons 316 watt.server.cluster.maxThreads 316
watt.server.cluster.memFactor 317 watt.server.cluster.minFreemem 317 watt.server.cluster.password 317 watt.server.cluster.refreshRate 317 watt.server.cluster.reqComplFactor 317 watt.server.cluster.SessTimeout 318 watt.server.cluster.threadFactor 318 watt.server.cluster.user 318 watt.server.compile 318 watt.server.compile.unicode 318 watt.server.control.maxPersist 103, 318 watt.server.control.maxPublishOnSuccess 318 watt.server.dateStampFmt 319 watt.server.db.blocktimeout 319, 320 watt.server.db.connectionCache 319 watt.server.email.from 320 watt.server.errorMail 320 watt.server.fileEncoding 320 watt.server.hostAccessMode 320 watt.server.hostAllow 320 watt.server.hostDeny 320 watt.server.illegalNSChars 320 watt.server.inetaddress 321 watt.server.java.unicode 321 watt.server.jdbc.defaultDriver 321 watt.server.jdbc.driverList 321 watt.server.keepAliveTimeout 321 watt.server.key 321 watt.server.ldap.attr.member 321 watt.server.ldap.attr.password 321 watt.server.ldap.attr.userid 321 watt.server.ldap.directoryRoot 321 watt.server.ldap.extendedProps 321 watt.server.ldap.groupFilter 322 watt.server.ldap.groupRoot 322 watt.server.ldap.security.credential 322 watt.server.ldap.security.principal 322 watt.server.ldap.server 322 watt.server.ldap.userFilter 322 watt.server.ldap.userRoot 322 watt.server.ldap.usersInGroup 322 watt.server.licenses 322 watt.server.log.queued 323
364
Index
watt.server.noAccessURL 323 watt.server.noObjectURL 323 watt.server.ns.backup 323 watt.server.ns.dependencyManager 323 watt.server.oldkey 323 watt.server.port 323 watt.server.portQueue 323 watt.server.requestCerts 324 watt.server.revInvoke.errorSvcName 324 watt.server.revInvoke.filterSvcContentTypes 324 watt.server.revInvoke.filterSvcName 324 watt.server.revInvoke.proxyMapUserCert 324 watt.server.scheduler.maxThreads 324 watt.server.securePort 324 watt.server.securePortList 324 watt.server.serviceMail 324 watt.server.smtpServer 267, 324 watt.server.smtpServerPort 325 watt.server.stats.avgTime 325 watt.server.stats.logfile 325 watt.server.stats.pollTime 325 watt.server.threadPool 325 watt.server.threadPoolMin 325 watt.server.tx.cluster.lockBreakSecs 325 watt.server.tx.cluster.lockTimeoutMillis 325 watt.server.tx.heuristicFailRetry 268, 325 watt.server.tx.logfile 269 watt.server.tx.sweepTime 268, 326 watt.server.txMail 267, 325 watt.server.users.listWmOnly 326 watt.server.wsdl.enforceSOAPMsgPartNS 326 watt.server.xref.type 326 watt.tx.defaultTTLMins 270, 327 watt.tx.disabled 270, 327 watt.tx.jobThreads 270, 327 watt.tx.logfile 270 watt.tx.retryBackoff 270 watt.tx.retryBackoffTime 327 watt.tx.sweepTime 270, 327
webMethods Integration Server accessing with URLs 332 architecture 20 audit-trail logging, overview 25 clustering servers, description 26 configuration settings 308 configuring 59 debug mode 29 deploying 300 determining if running 31 how SSL is used 119 identify hosts that can connect 132, 135 installing 300 license keys 60 overview 20 preventing use of port 76 process for executing services 24 process when starting 31 recovery after hardware or software failure 33 rejecting connections from specified hosts 132 requesting digital certificate 123 restarting 32 retrieving data for services 22 role 20 security overview 25, 114 setting up aliases for remote servers 79 shutting down 31 starting from command line 28 starting on UNIX 28 testing installation 306 using with wireless gateways 330 when it authenticates clients 150 when to restart 32 wireless devices, communicating with 330 wireless devices, using with 330 widls subdirectory 224 wireless devices communicating with webMethods Integration Server 330 invoking services with URLs 332 requesting HDML or WML pages 333 using URLs to access servers 332 using with webMethods Integration Server 330
365
Index
wireless gateway role in wireless communication 330 Wireless Markup Language. See WML (Wireless Markup Language) wm.server.dispatcher deleteExpiredUUID service 105 WmDB package 222 WML (Wireless Markup Language) 330, 333 WML pages accessing with wireless devices 333 WmPartners package 222 WmPKI package for use with PKI profiles 187 WmPublic package 222 WmRoot package 222 WmSamples package 222 WmWin32 package 222
X
XML validation writing a user-defined program to run on the reverse invoke Integration Server 162
Z
zip files for packages creating 246 sending 246
366
Index
367
Index
368