18.08.2013 Views

WebSphere MQ for OS 2200 Installation, Administration, and ...

WebSphere MQ for OS 2200 Installation, Administration, and ...

WebSphere MQ for OS 2200 Installation, Administration, and ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>WebSphere</strong>® <strong>MQ</strong> Version 6 <strong>for</strong> ClearPath<br />

<strong>OS</strong> <strong>2200</strong><br />

<strong>Installation</strong>, <strong>Administration</strong>, <strong>and</strong> Programming<br />

Guide<br />

Level 6R1<br />

October 2010 3843 3744–002<br />

unisys<br />

imagine it. done.


NO WARRANTIES OF ANY NATURE ARE EXTENDED BY THIS DOCUMENT. Any product or related in<strong>for</strong>mation<br />

described herein is only furnished pursuant <strong>and</strong> subject to the terms <strong>and</strong> conditions of a duly executed agreement to<br />

purchase or lease equipment or to license software. The only warranties made by Unisys, if any, with respect to the<br />

products described in this document are set <strong>for</strong>th in such agreement. Unisys cannot accept any financial or other<br />

responsibility that may be the result of your use of the in<strong>for</strong>mation in this document or software material, including<br />

direct, special, or consequential damages.<br />

You should be very careful to ensure that the use of this in<strong>for</strong>mation <strong>and</strong>/or software material complies with the<br />

laws, rules, <strong>and</strong> regulations of the jurisdictions with respect to which it is used.<br />

The in<strong>for</strong>mation contained herein is subject to change without notice. Revisions may be issued to advise of such<br />

changes <strong>and</strong>/or additions.<br />

Notice to U.S. Government End Users: This is commercial computer software or hardware documentation developed<br />

at private expense. Use, reproduction, or disclosure by the Government is subject to the terms of Unisys st<strong>and</strong>ard<br />

commercial license <strong>for</strong> the products, <strong>and</strong> where applicable, the restricted/limited rights provisions of the contract<br />

data rights clauses.<br />

Unisys <strong>and</strong> ClearPath are registered trademarks of Unisys Corporation in the United States <strong>and</strong> other countries.<br />

IBM <strong>and</strong> <strong>WebSphere</strong> are registered trademarks of International Business Machines Corporation in the United States,<br />

or other countries, or both.<br />

All other br<strong>and</strong>s <strong>and</strong> products referenced in this document are acknowledged to be the trademarks or registered<br />

trademarks of their respective holders.


Contents<br />

Section 1. Introduction<br />

1.1. About This Guide ................................................................................. 1–1<br />

1.2. Concepts <strong>and</strong> Terminology .............................................................. 1–4<br />

1.2.1. What is Message Queuing? .................................................. 1–4<br />

1.2.2. Messages <strong>and</strong> Message Queues ........................................ 1–5<br />

1.2.3. <strong>WebSphere</strong> <strong>MQ</strong> Objects ........................................................ 1–5<br />

1.2.4. Instrumentation Events .......................................................... 1–9<br />

1.3. <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> Components<br />

<strong>and</strong> Interfaces .............................................................................. 1–13<br />

1.3.1. Message Queuing Interface (<strong>MQ</strong>I) .................................... 1–14<br />

1.3.2. <strong>WebSphere</strong> <strong>MQ</strong> Queue Manager (QM) ........................... 1–14<br />

1.3.3. Basic Mode Interface ............................................................ 1–17<br />

1.4. Hardware <strong>and</strong> Software Requirements ..................................... 1–18<br />

1.5. Security ............................................................................................... 1–19<br />

1.6. The UNX Shell Processor ............................................................... 1–20<br />

1.7. What’s Different? ............................................................................. 1–21<br />

1.7.1. Deployment Differences ...................................................... 1–21<br />

1.7.2. Administrative Differences .................................................. 1–22<br />

1.7.3. Programming Differences .................................................... 1–23<br />

1.7.4. Security ..................................................................................... 1–24<br />

Section 2. <strong>Installation</strong> <strong>and</strong> Configuration<br />

2.1. Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong> ......................................................... 2–1<br />

2.1.1. Release Media........................................................................... 2–1<br />

2.1.2. <strong>Installation</strong> <strong>and</strong> Migration Considerations ......................... 2–2<br />

2.1.3. <strong>MQ</strong> Per<strong>for</strong>mance Considerations ...................................... 2–15<br />

2.2. Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> ................... 2–16<br />

2.3. Verifying the <strong>Installation</strong> <strong>and</strong> Configuration ............................. 2–20<br />

2.4. Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters .....................2–22<br />

2.4.1. Configurable Values Summary........................................... 2–23<br />

2.4.2. Configurable Values Detail .................................................. 2–25<br />

2.5. Setting up Communications ......................................................... 2–33<br />

2.5.1. Overview ................................................................................. 2–33<br />

2.5.2. Setting up Communications between <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>and</strong> Other Systems .................................. 2–33<br />

2.5.3. Securing Your Channels with SSL ..................................... 2–37<br />

2.6. Advanced Configuration ................................................................ 2–44<br />

2.6.1. Creating <strong>and</strong> Using Exits ..................................................... 2–44<br />

2.6.2. Configuring W<strong>MQ</strong><strong>2200</strong> as a Static Resource<br />

Manager under Open Distributed Transaction<br />

Processing .......................................................................... 2–47<br />

3843 3744–002 iii


Contents<br />

2.7. Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using<br />

COMUS ......................................................................................... 2–49<br />

2.8. Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s as Static Resource<br />

Managers under Open DTP ..................................................... 2–56<br />

Section 3. <strong>Administration</strong><br />

3.1. Start Up or Shut Down W<strong>MQ</strong><strong>2200</strong> ................................................ 3–2<br />

3.1.1. Start Up ....................................................................................... 3–2<br />

3.1.2. Shut Down ................................................................................ 3–3<br />

3.2. Startup or Terminate Queue Managers ...................................... 3–3<br />

3.2.1. Starting Queue Managers ..................................................... 3–3<br />

3.2.1.1. W<strong>MQ</strong><strong>2200</strong> Daemon START Comm<strong>and</strong> ................... 3–4<br />

3.2.1.2. strmqm Comm<strong>and</strong> ........................................................ 3–4<br />

3.2.2. Terminating Queue Managers ............................................. 3–4<br />

3.3. Configure <strong>MQ</strong> .ini Files to Customize W<strong>MQ</strong><strong>2200</strong> <strong>and</strong><br />

the Queue Managers ................................................................... 3–7<br />

3.3.1. Using <strong>OS</strong> <strong>2200</strong> Editors to Modify the .ini Files ................. 3–7<br />

3.3.2. Using <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console .................................................................................. 3–7<br />

3.3.3. Using the TED Editor .............................................................. 3–8<br />

3.4. Secure Access to Queues from <strong>OS</strong> <strong>2200</strong> .................................. 3–8<br />

3.4.1. Security <strong>and</strong> the UNX Dem<strong>and</strong> Shell .................................. 3–8<br />

3.4.2. The Root User <strong>and</strong> <strong>WebSphere</strong> <strong>MQ</strong> .................................. 3–8<br />

3.4.3. <strong>WebSphere</strong> <strong>MQ</strong> Object Authority Manager .................... 3–9<br />

3.4.4. Remote Users <strong>and</strong> <strong>OS</strong> <strong>2200</strong> Users ..................................... 3–9<br />

3.4.5. The <strong>WebSphere</strong> <strong>MQ</strong> OAM Control Comm<strong>and</strong>s ............. 3–10<br />

3.4.6. <strong>WebSphere</strong> <strong>MQ</strong> OAM Authentication .............................. 3–11<br />

3.4.7. <strong>WebSphere</strong> <strong>MQ</strong> OAM <strong>and</strong> the mqm Group ................... 3–11<br />

3.4.8. The "Nobody" User <strong>and</strong> Group ............................................ 3–12<br />

3.4.9. Default Groups on the <strong>OS</strong> <strong>2200</strong> QProcessor .................. 3–12<br />

3.4.10. Adding a Group on the <strong>OS</strong> <strong>2200</strong> QProcessor ................. 3–12<br />

3.4.11. The <strong>OS</strong> <strong>2200</strong> QProcessor User Mappings ....................... 3–13<br />

3.5. Manage Queue Manager Log Files ............................................. 3–16<br />

3.5.1. Overview .................................................................................. 3–17<br />

3.5.2. If You Use the UNX Shell to Administer<br />

W<strong>MQ</strong><strong>2200</strong> ........................................................................... 3–17<br />

3.5.3. If You Administer W<strong>MQ</strong><strong>2200</strong> Using <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console............................ 3–18<br />

3.6. Backup of Queue Manager Data .................................................. 3–18<br />

3.7. W<strong>MQ</strong><strong>2200</strong> Administrative Tools <strong>and</strong> Sample<br />

Programs ....................................................................................... 3–19<br />

3.8. Remote <strong>Administration</strong> Using <strong>WebSphere</strong> <strong>MQ</strong><br />

Explorer ......................................................................................... 3–20<br />

3.8.1. Preparing W<strong>MQ</strong><strong>2200</strong> <strong>for</strong> Remote<br />

<strong>Administration</strong> ................................................................... 3–20<br />

3.8.2. Connecting or Disconnecting to W<strong>MQ</strong><strong>2200</strong><br />

from the <strong>WebSphere</strong> <strong>MQ</strong> Explorer .............................. 3–21<br />

3.8.3. Restrictions .............................................................................. 3–21<br />

iv 3843 3744–002


Section 4. Application Development<br />

Contents<br />

4.1. Exits ....................................................................................................... 4–1<br />

4.1.1. Data Conversion Exits ............................................................. 4–1<br />

4.1.2. Channel Exits ............................................................................ 4–2<br />

4.1.3. Creating <strong>and</strong> Using Exits ....................................................... 4–3<br />

4.2. Triggers ................................................................................................ 4–4<br />

4.2.1. Configuring a Local Queue <strong>for</strong> Triggering......................... 4–5<br />

4.2.2. Creating a User-Defined Trigger Monitor ......................... 4–9<br />

4.2.3. Trigger Monitor Processing ................................................. 4–10<br />

4.2.4. Configuration Examples ....................................................... 4–11<br />

4.2.5. Starting the Trigger Monitors ............................................. 4–12<br />

4.2.6. Terminating a Trigger Monitor ............................................ 4–12<br />

4.3. Using Binary Data in the Message Area .................................... 4–13<br />

4.3.1. The <strong>OS</strong><strong>2200</strong> Architecture ..................................................... 4–13<br />

4.3.2. The <strong>OS</strong> <strong>2200</strong> QProcessor Architecture ............................ 4–13<br />

4.3.3. Data Transmission <strong>and</strong> Conversion Challenges ............. 4–13<br />

4.3.4. <strong>WebSphere</strong> <strong>MQ</strong> Encodings ................................................ 4–14<br />

4.3.5. Message Formats: Built-In versus User-Defined ......... 4–14<br />

4.3.6. Built-In Message Format Conversion .............................. 4–14<br />

4.3.7. Special <strong>MQ</strong>MDE Considerations ........................................ 4–15<br />

4.3.8. Special <strong>MQ</strong>GMO_CONVERT Considerations .................. 4–16<br />

4.3.9. Chained Message Headers .................................................. 4–16<br />

4.3.10. User-Defined Message Format Conversion ................... 4–17<br />

4.3.11. User Application Development<br />

Recommendations ............................................................ 4–17<br />

4.4. Compiling <strong>and</strong> Linking W<strong>MQ</strong><strong>2200</strong> Application<br />

Programs ....................................................................................... 4–17<br />

4.4.1. C Programs ..............................................................................4–18<br />

4.4.2. COBOL Programs .................................................................. 4–20<br />

4.5. Sticking Transactions ..................................................................... 4–20<br />

Section 5. <strong>MQ</strong>I Client Connections<br />

5.1. <strong>WebSphere</strong> <strong>MQ</strong> Client Applications ............................................. 5–1<br />

5.2. Preparing W<strong>MQ</strong><strong>2200</strong> to Accept Client Connections ................ 5–1<br />

5.3. Scaling Considerations ...................................................................... 5–2<br />

5.3.1. MaxActiveChannels Attribute ............................................... 5–2<br />

5.3.2. Listener Backlog Option ......................................................... 5–2<br />

5.4. Restrictions ..........................................................................................5–3<br />

Section 6. High Availability<br />

6.1. Introduction .......................................................................................... 6–1<br />

6.2. W<strong>MQ</strong><strong>2200</strong> Specific Changes to Support HA .............................. 6–1<br />

6.3. Recommendations ............................................................................. 6–2<br />

3843 3744–002 v


Contents<br />

Section 7. Troubleshooting<br />

7.1. Gather System <strong>and</strong> Queue Manager Status<br />

In<strong>for</strong>mation ...................................................................................... 7–1<br />

7.1.1. Gather System Status ............................................................. 7–2<br />

7.1.2. Gather Queue Manager Status ............................................. 7–3<br />

7.1.3. Gather Queue Manager Configuration<br />

In<strong>for</strong>mation ........................................................................... 7–4<br />

7.2. Obtaining Error In<strong>for</strong>mation ............................................................ 7–4<br />

7.3. Obtain Queue Manager Traces ...................................................... 7–5<br />

7.3.1. <strong>MQ</strong>S Traces ............................................................................... 7–5<br />

7.3.2. Using <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console to Gather Trace In<strong>for</strong>mation ............................ 7–6<br />

7.3.3. UNX Shell Traces ...................................................................... 7–6<br />

7.4. Core Dump ........................................................................................... 7–7<br />

7.5. The W<strong>MQ</strong><strong>2200</strong> Daemon Background Run .................................. 7–7<br />

7.5.1. Starting Daemon Keyin ........................................................... 7–7<br />

7.5.2. Background Process Output File .........................................7–8<br />

7.5.3. Using Daemon Keyin ...............................................................7–8<br />

7.6. Diagnostic Gathering ......................................................................... 7–9<br />

7.6.1. Check UNX Shell Processor Availability ............................. 7–9<br />

7.6.2. Diagnostic Gathering Utility (DIAGN/RUN) ....................... 7–10<br />

7.6.3. Gathering Usysreport Diagnostics .................................... 7–11<br />

7.6.4. List of Files to RSS to Engineering .................................... 7–11<br />

7.6.5. Running the CAT/ERRORS Addstream Manually ........... 7–12<br />

7.7. Real-Time Run Priorities ................................................................. 7–14<br />

7.8. Recover an Unstable W<strong>MQ</strong><strong>2200</strong> System .................................. 7–15<br />

7.8.1. Deactivating W<strong>MQ</strong><strong>2200</strong> Subsystems............................... 7–15<br />

7.8.2. Reinitializing the <strong>OS</strong> <strong>2200</strong> QProcessor System ............. 7–15<br />

Section 8. Message Recovery Procedures<br />

8.1. <strong>WebSphere</strong> <strong>MQ</strong> Recovery Capabilities ........................................ 8–1<br />

8.1.1. Differences with <strong>MQ</strong>S<strong>2200</strong> ...................................................8–2<br />

8.1.2. Media Recovery ........................................................................8–2<br />

8.1.3. Point-in-time Message Recovery ....................................... 8–4<br />

8.1.4. <strong>OS</strong> <strong>2200</strong> Database Synchronization .................................... 8–5<br />

8.1.5. Open DTP Subsystem Abort <strong>and</strong> Deactivation ............... 8–5<br />

8.1.6. <strong>OS</strong> <strong>2200</strong> Application Group Abort ...................................... 8–5<br />

8.1.7. <strong>OS</strong> <strong>2200</strong> Daemon Abort ........................................................ 8–5<br />

8.1.8. <strong>OS</strong> <strong>2200</strong> System Stop ............................................................ 8–5<br />

8.1.9. <strong>OS</strong> <strong>2200</strong> QProcessor Stop .................................................... 8–6<br />

8.1.10. <strong>OS</strong> <strong>2200</strong> QProcessor Disk Failure ....................................... 8–6<br />

8.1.11. W<strong>MQ</strong><strong>2200</strong> Subsystem Abort <strong>and</strong> Deactivation ...............8–7<br />

8.2. Manually Resolving Incomplete Global Transactions ...............8–7<br />

Appendix A. Data Formatting Between Multiple Plat<strong>for</strong>ms<br />

A.1. Library hton/o ..................................................................................... A–1<br />

A.1.1. Host-to-Network Functions .................................................. A–1<br />

A.1.2. Network-to-Host Functions .................................................. A–3<br />

vi 3843 3744–002


Contents<br />

A.2. Library htondb/o ................................................................................ A–5<br />

A.3. Library hton-ucob/o .......................................................................... A–5<br />

A.3.1. Host-to-Network Functions .................................................. A–5<br />

A.3.2. Network-to-Host Functions .................................................. A–7<br />

A.4. Library htondb-ucob/o ...................................................................... A–8<br />

A.5. Library h9ton8/o ................................................................................ A–9<br />

A.5.1. Host-to-Network Function .................................................... A–9<br />

A.5.2. Network-to-Host Function .................................................. A–10<br />

Appendix B. Sample TX/W<strong>MQ</strong><strong>2200</strong> API Scenarios <strong>and</strong><br />

Recommendations<br />

Appendix C. Editing W<strong>MQ</strong><strong>2200</strong> QProcessor Files<br />

Appendix D. Restrictions <strong>and</strong> Known Limitations<br />

Appendix E. W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

Appendix F. UNX Shell<br />

E.1. The Daemon Administrative Utility ................................................ E–1<br />

E.1.1. Starting the Daemon Utility ................................................... E–1<br />

E.1.2. Using the Daemon Keyin ........................................................ E–1<br />

F.1. Using the UNX Shell ........................................................................... F–1<br />

F.2. Using the Asterisk in the UNX Shell .............................................. F–1<br />

F.3. Special Character H<strong>and</strong>ling .............................................................. F–2<br />

F.4. Terminating Input to the runmqdlq Control Comm<strong>and</strong> ............ F–2<br />

F.5. Using the Paging Function in the UNX Processor ..................... F–2<br />

F.6. UNX Comm<strong>and</strong>s ................................................................................. F–4<br />

F.6.1. Linux Type Shell Comm<strong>and</strong>s ................................................. F–4<br />

F.6.2. <strong>MQ</strong> Series Comm<strong>and</strong>s ............................................................ F–7<br />

F.6.3. UNX Utilities ............................................................................... F–9<br />

F.7. UNX Utility Comm<strong>and</strong> Reference ................................................ F–10<br />

Appendix G. <strong>OS</strong> <strong>2200</strong> QProcessor Administrative Console<br />

G.1. About the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console ............................................................................................G–1<br />

G.2. Accessing the <strong>Administration</strong> Console ....................................... G–2<br />

Index ..................................................................................................... 1<br />

3843 3744–002 vii


Contents<br />

viii 3843 3744–002


Figures<br />

1–1. Components <strong>and</strong> Interfaces in W<strong>MQ</strong><strong>2200</strong> .............................................................. 1–13<br />

1–2. Open Distributed Transaction Processing Integration ......................................... 1–16<br />

2–1. Communication Path Between Queue Managers ................................................ 2–34<br />

3843 3744–002 ix


Figures<br />

x 3843 3744–002


Tables<br />

C–1. TED Comm<strong>and</strong>s ............................................................................................................... C–3<br />

F–1. Common Pager Comm<strong>and</strong>s .......................................................................................... F–3<br />

F–2. Linux Type Shell Comm<strong>and</strong>s ......................................................................................... F–4<br />

F–3. <strong>MQ</strong> Series Comm<strong>and</strong>s .................................................................................................... F–7<br />

F–4. UNX Utilities ....................................................................................................................... F–9<br />

F–5. Shared Memory Segments......................................................................................... F–29<br />

F–6. IPC Message Queues ................................................................................................... F–30<br />

F–7. Semaphore Arrays ......................................................................................................... F–31<br />

3843 3744–002 xi


Tables<br />

xii 3843 3744–002


Section 1<br />

Introduction<br />

<strong>WebSphere</strong>® <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> product (hereafter referred to as W<strong>MQ</strong><strong>2200</strong>)<br />

allows TIP/HVTIP or batch programs on ClearPath <strong>OS</strong> <strong>2200</strong> servers to participate in<br />

message-oriented processing applications. W<strong>MQ</strong><strong>2200</strong> is based on IBM®<strong>WebSphere</strong>®<br />

<strong>MQ</strong> Version 6.0 <strong>and</strong> can communicate with any plat<strong>for</strong>m on which a compatible<br />

version of <strong>WebSphere</strong> <strong>MQ</strong> is available.<br />

1.1. About This Guide<br />

Purpose<br />

Audience<br />

Prerequisites<br />

This guide describes the <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> product, which allows<br />

TIP/HVTIP or batch programs on ClearPath Dorado 300, 700, <strong>and</strong> 4000 Series servers to<br />

participate in message oriented processing applications. It explains how to install,<br />

configure, <strong>and</strong> administer W<strong>MQ</strong><strong>2200</strong>, <strong>and</strong> how to create applications that make use of<br />

the Message Queuing Interface (<strong>MQ</strong>I).<br />

This guide is <strong>for</strong> site administrators <strong>and</strong> application programmers who intend to<br />

• Install <strong>and</strong> configure W<strong>MQ</strong><strong>2200</strong>.<br />

• Per<strong>for</strong>m administrative tasks <strong>for</strong> W<strong>MQ</strong><strong>2200</strong>.<br />

• Design <strong>and</strong> write message oriented processing applications.<br />

This guide assumes the reader is familiar with general <strong>OS</strong> <strong>2200</strong> concepts such as<br />

subsystems, <strong>and</strong> application development concepts such as C, COBOL, <strong>and</strong> LINK.<br />

Readers must also be familiar with communications software such as<br />

Communications Application Program Interface (previously known as COMAPI) <strong>and</strong> the<br />

concept of message queuing.<br />

For systems where W<strong>MQ</strong><strong>2200</strong> is used as a resource manager, knowledge of Open<br />

Distributed Transaction Processing software (previously called Open/OLTP Transaction<br />

Manager or OLTP-TM<strong>2200</strong>) is useful.<br />

3843 3744–002 1–1


About This Guide<br />

The following IBM documents are highly recommended as preliminary reading:<br />

• <strong>MQ</strong> Series: An Introduction to Messaging <strong>and</strong> Queuing<br />

• <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> Linux Version 6.0 Quick Beginnings<br />

• <strong>WebSphere</strong> <strong>MQ</strong> System <strong>Administration</strong> Guide Version 6.0<br />

This document describes many <strong>WebSphere</strong> <strong>MQ</strong> administration concepts that this<br />

guide explains <strong>for</strong> the <strong>OS</strong> <strong>2200</strong> environment.<br />

You can download <strong>WebSphere</strong> <strong>MQ</strong> documentation from the following location:<br />

http://www-01.ibm.com/software/integration/wmq/library/library60.html<br />

Note: W<strong>MQ</strong><strong>2200</strong> is based on version 6.0 of <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> Linux. Ensure that<br />

you download versions that are applicable to that level.<br />

You can also refer to the following documents which provide in<strong>for</strong>mation that is<br />

related to the subject of this guide.<br />

• ClearPath Specialty Engine <strong>for</strong> <strong>OS</strong> <strong>2200</strong> <strong>Installation</strong> <strong>and</strong> Servicing Guide<br />

• ClearPath Specialty Engine <strong>for</strong> <strong>OS</strong> <strong>2200</strong> Configuration Guide<br />

• ClearPath <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console Help<br />

How to Use This Guide<br />

Use the following table as a key to navigating this guide.<br />

For this in<strong>for</strong>mation … Go to …<br />

An overview of message queuing concepts 1.2<br />

W<strong>MQ</strong><strong>2200</strong> capabilities overview 1.3<br />

Hardware <strong>and</strong> software requirements 1.4<br />

Security 1.5<br />

UNX shell processor 1.6<br />

What's Different? 1.7<br />

<strong>Installation</strong> <strong>and</strong> configuration, including migration<br />

considerations <strong>and</strong> per<strong>for</strong>mance tuning<br />

Section 2<br />

Administrative tasks Section 3<br />

Creating applications Section 4<br />

<strong>MQ</strong>I client connections Section 5<br />

High Availability Section 6<br />

Troubleshooting Section 7<br />

Message Recovery procedures Section 8<br />

1–2 3843 3744–002


For this in<strong>for</strong>mation … Go to …<br />

About This Guide<br />

Data <strong>for</strong>matting between multiple plat<strong>for</strong>ms Appendix A<br />

TX/W<strong>MQ</strong><strong>2200</strong> API scenario recommendations Appendix B<br />

Editing W<strong>MQ</strong><strong>2200</strong> QProcessor Files Appendix C<br />

Restrictions <strong>and</strong> known limitations Appendix D<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative utility Appendix E<br />

UNX Shell Appendix F<br />

<strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console Appendix G<br />

Notation Conventions<br />

This guide uses the following notation conventions:<br />

bold<br />

italic<br />

User input appears in bold.<br />

Names of variables to which values must be assigned (such as password) appear<br />

in italics.<br />

constant width<br />

[ ]<br />

><br />

< ><br />

Examples <strong>and</strong> system output, such as prompt signs <strong>and</strong> responses to comm<strong>and</strong>s,<br />

appear in constant width.<br />

Brackets enclose optional fields or subfields.<br />

Screen examples often use one greater than (>) symbol to generically represent<br />

any kind of comm<strong>and</strong> line prompt.<br />

A value shown between the less than () symbols in screen<br />

examples indicates the default value.<br />

3843 3744–002 1–3


Concepts <strong>and</strong> Terminology<br />

Documentation Updates<br />

This document contains all the in<strong>for</strong>mation that was available at the time of<br />

publication. Changes identified after release of this document are included in problem<br />

list entry (PLE) 18759136. To obtain a copy of the PLE, contact your Unisys<br />

representative or access the current PLE from the Unisys Product Support Web site:<br />

http://www.support.unisys.com/all/ple/18759136<br />

Note: If you are not logged into the Product Support site, you will be asked to do<br />

so.<br />

1.2. Concepts <strong>and</strong> Terminology<br />

This subsection is extracted from the IBM <strong>WebSphere</strong> <strong>MQ</strong> Application Programming<br />

Guide Version 6.0 <strong>and</strong> the IBM document titled Monitoring <strong>WebSphere</strong> <strong>MQ</strong>. It<br />

introduces <strong>WebSphere</strong> <strong>MQ</strong> <strong>and</strong> contains explanations of the following topics:<br />

• Message Queuing<br />

• Messages <strong>and</strong> Message queues<br />

• <strong>WebSphere</strong> <strong>MQ</strong> objects<br />

• Instrumentation events<br />

1.2.1. What is Message Queuing?<br />

Message queuing has been used in data processing <strong>for</strong> many years <strong>and</strong> is most<br />

commonly used today in electronic mail. Without queuing, sending an electronic<br />

message over long distance requires every node on the route to be available <strong>for</strong><br />

<strong>for</strong>warding messages. The addressees need to be logged <strong>and</strong> you need to be<br />

conscious of the fact that you are trying to send a message to the selected address. In<br />

a queuing system, messages are stored at intermediate nodes until the system is<br />

ready to <strong>for</strong>ward them. At the final destination messages are stored in an electronic<br />

mailbox until the addressee is ready to read them.<br />

Even so, many complex business transactions are processed today without queuing.<br />

In a large network, the system might maintain many thous<strong>and</strong>s of connections in a<br />

ready-to-use state. If one part of the system suffers a problem, many parts of the<br />

system become unusable.<br />

You can think of message queuing as being electronic mail <strong>for</strong> programs. In a message<br />

queuing environment, each program from the set that makes up an application suite is<br />

designed to per<strong>for</strong>m a well-defined, self-contained function in response to a specific<br />

request. To communicate with another program, a program must put a message on a<br />

predefined queue. The other program retrieves the message from the queue, <strong>and</strong><br />

processes the requests <strong>and</strong> in<strong>for</strong>mation contained in the message. Message queuing<br />

is a style of program-to-program communication.<br />

1–4 3843 3744–002


Concepts <strong>and</strong> Terminology<br />

Queuing is the mechanism by which messages are held until an application is ready to<br />

process them. Queuing allows you to<br />

• Communicate between programs (that might each be running in different<br />

environments) without having to write the communication code.<br />

• Select the order in which a program processes messages.<br />

• Balance loads on a system by arranging <strong>for</strong> more than one program to service a<br />

queue when the number of messages exceeds a threshold.<br />

• Increase the availability of your applications by arranging <strong>for</strong> an alternative system<br />

to service the queues if your primary system is unavailable.<br />

1.2.2. Messages <strong>and</strong> Message Queues<br />

What Is a Message?<br />

In message queuing, a message is a collection of data sent by one program <strong>and</strong><br />

intended <strong>for</strong> another program. <strong>WebSphere</strong> <strong>MQ</strong> defines four types of messages:<br />

• Datagram: A simple message <strong>for</strong> which no reply is expected<br />

• Request: A message <strong>for</strong> which a reply is expected<br />

• Reply: A reply to a request message<br />

• Report: A message about another message<br />

What Is a Message Queue?<br />

A message queue, known simply as a queue, is a named destination to which<br />

messages can be sent. Messages accumulate on queues until they are retrieved by<br />

programs that service those queues.<br />

Queues reside in, <strong>and</strong> are managed by, a queue manager. A queue can either be a<br />

volatile buffer area in the memory of a computer, or a data set on a permanent<br />

storage device (such as a disk). The physical management of queues is the<br />

responsibility of the queue manager <strong>and</strong> is not made apparent to the participating<br />

application programs.<br />

Programs access queues only through the external services of the queue manager.<br />

Programs can open a queue, put messages on it, get messages from it, <strong>and</strong> close the<br />

queue. In addition, programs can also set, <strong>and</strong> inquire about, the attributes of queues.<br />

1.2.3. <strong>WebSphere</strong> <strong>MQ</strong> Objects<br />

The <strong>WebSphere</strong> <strong>MQ</strong> objects are<br />

• Queue managers<br />

• Queues<br />

• Namelists<br />

• Process definitions<br />

3843 3744–002 1–5


Concepts <strong>and</strong> Terminology<br />

• Authentication in<strong>for</strong>mation objects<br />

• Channels<br />

• Listeners<br />

• Services<br />

Queue Managers<br />

Queues<br />

A queue manager is a system program that provides queuing services to applications.<br />

It provides an application programming interface so that programs can put messages<br />

on, <strong>and</strong> get messages from, queues. A queue manager provides additional functions<br />

so that administrators can create new queues, alter the properties of existing queues,<br />

<strong>and</strong> control the operation of the queue manager.<br />

For <strong>WebSphere</strong> <strong>MQ</strong> message queuing services to be available on a system, a queue<br />

manager must be a running. You can have multiple queue managers running on a<br />

single system (<strong>for</strong> example, to separate a test system from a live system). To an<br />

application, each queue manager is identified by a connection h<strong>and</strong>le (Hconn).<br />

Many different applications that are completely unrelated can use the services of a<br />

queue manager simultaneously. For a program to use the services of a queue<br />

manager, it must establish a connection to that queue manager.<br />

For applications to send messages to applications that are connected to other queue<br />

managers, the queue managers must be able to communicate among themselves.<br />

<strong>WebSphere</strong> <strong>MQ</strong> implements a store-<strong>and</strong>-<strong>for</strong>ward protocol to ensure the safe delivery<br />

of messages between such applications.<br />

A <strong>WebSphere</strong> <strong>MQ</strong> queue is a named object on which applications can put messages,<br />

<strong>and</strong> from which applications can get messages. Messages are stored on a queue, so<br />

that if the putting application is expecting a reply to its message, it is free to do other<br />

work while waiting <strong>for</strong> that reply. Applications use the Message Queue Interface<br />

(<strong>MQ</strong>I) to access a queue.<br />

Be<strong>for</strong>e a message can be put on a queue, you need to ensure that the queue is<br />

created. A queue is owned by a queue manager, <strong>and</strong> that queue manager can own<br />

many queues. However, each queue must have a name that is unique within that<br />

queue manager. A queue is maintained through a queue manager. In most cases, each<br />

queue is physically managed by its queue manager but this is transparent to an<br />

application program.<br />

To create a queue use the <strong>WebSphere</strong> <strong>MQ</strong> comm<strong>and</strong>s (<strong>MQ</strong>SC) or Programmable<br />

comm<strong>and</strong> <strong>for</strong>mat (PCF) comm<strong>and</strong>s. You can create local queues <strong>for</strong> temporary jobs<br />

dynamically from your application. For example, you can create reply-to queues (that<br />

are not needed after an application ends).<br />

1–6 3843 3744–002


Namelists<br />

Concepts <strong>and</strong> Terminology<br />

Be<strong>for</strong>e using a queue, you must open the queue, specifying what you want to do with<br />

it. For example, you can open a queue <strong>for</strong>:<br />

• Browsing messages only (not retrieving them)<br />

• Retrieving messages (<strong>and</strong> either sharing the access with other programs, or with<br />

exclusive access)<br />

• Putting messages on the queue<br />

• Inquiring about the attributes of the queue<br />

• Setting the attributes of the queue<br />

A namelist is a <strong>WebSphere</strong> <strong>MQ</strong> object that contains a list of cluster names, queue<br />

names or authentication in<strong>for</strong>mation object names. In a cluster, namelists can be used<br />

to identify a list of clusters <strong>for</strong> which the queue manager holds the repositories.<br />

You can define <strong>and</strong> modify namelists only using <strong>MQ</strong>SC comm<strong>and</strong>s.<br />

Programs can use the <strong>MQ</strong>I to find out which queues are included in these namelists.<br />

The organization of the namelists is the responsibility of the application designer <strong>and</strong><br />

system administrator.<br />

Process Definitions<br />

To allow an application to start without the need <strong>for</strong> operator intervention, the queue<br />

manager must know the attributes of the application. These attributes are defined in a<br />

process definition object.<br />

The ProcessName attribute is fixed when the object is created; you can change the<br />

other attributes using the <strong>WebSphere</strong> <strong>MQ</strong> comm<strong>and</strong>s.<br />

Authentication in<strong>for</strong>mation objects<br />

Channels<br />

An authentication in<strong>for</strong>mation object contains authentication in<strong>for</strong>mation used in<br />

Secure Sockets Layer (SSL) encrypted transport of in<strong>for</strong>mation. An authentication<br />

in<strong>for</strong>mation object of AUTHTYPE CRLLDAP provides the definitions required to<br />

per<strong>for</strong>m Certificate Revocation List (CRL) checking using LDAP servers. CRLs allow<br />

Certification Authorities to revoke certificates that can no longer be trusted.<br />

A channel is a communication link used by distributed queue managers. There are two<br />

categories of channels in <strong>WebSphere</strong> <strong>MQ</strong>:<br />

• Message channels, which are unidirectional, transfer messages from one queue<br />

manager to another.<br />

• <strong>MQ</strong>I channels, which are bidirectional, transfer <strong>MQ</strong>I calls from a <strong>WebSphere</strong> <strong>MQ</strong><br />

client to a queue manager, <strong>and</strong> responses from a queue manager to a <strong>WebSphere</strong><br />

<strong>MQ</strong> client.<br />

3843 3744–002 1–7


Concepts <strong>and</strong> Terminology<br />

Listeners<br />

Services<br />

You need to consider these categories when designing your application, but programs<br />

are unaware of <strong>WebSphere</strong> <strong>MQ</strong> channel objects.<br />

Listeners are processes that accept network requests from other queue managers, or<br />

client applications, <strong>and</strong> start associated channels. The runmqlsr control comm<strong>and</strong><br />

starts the Listener process.<br />

Listener objects are <strong>WebSphere</strong> <strong>MQ</strong> objects that allow you to manage the starting<br />

<strong>and</strong> stopping of listener processes from within the scope of a queue manager. By<br />

defining attributes of a listener object you do the following:<br />

• Configure the listener process.<br />

• Specify whether the listener process automatically starts <strong>and</strong> stops when the<br />

queue manager starts <strong>and</strong> stops.<br />

Service objects are a way of defining programs to be executed when a queue<br />

manager starts or stops. The programs can be split into the following types:<br />

Servers<br />

A server is a service object that has the parameter SERVTYPE specified as SERVER. A<br />

server service object is the definition of a program that is executed when a specified<br />

queue manager is started. Only one instance of a server process can be executed<br />

concurrently. While running, the status of a server process can be monitored using the<br />

<strong>MQ</strong>SC comm<strong>and</strong>, DISPLAY SVSTATUS. Typically, the server service objects are<br />

definitions of programs such as dead letter h<strong>and</strong>lers or trigger monitors; however the<br />

programs that can run are not limited to those supplied with <strong>WebSphere</strong> <strong>MQ</strong>.<br />

Additionally, a server service object can be defined to include a comm<strong>and</strong> that runs<br />

when the specified queue manager is shutdown to end the program.<br />

Comm<strong>and</strong>s<br />

A comm<strong>and</strong> is a service object that has the parameter SERVTYPE specified as<br />

COMMAND. A comm<strong>and</strong> service object is the definition of a program that is executed<br />

when a specified queue manager is started or stopped. Multiple instances of a<br />

comm<strong>and</strong> process can be executed concurrently. Comm<strong>and</strong> service objects differ<br />

from server service objects in that once the program is executed the queue manager<br />

will not monitor the program. Typically, the comm<strong>and</strong> service objects are definitions of<br />

programs that are short lived <strong>and</strong> per<strong>for</strong>m a specific task such as starting one, or<br />

more, other tasks.<br />

1–8 3843 3744–002


1.2.4. Instrumentation Events<br />

Concepts <strong>and</strong> Terminology<br />

In <strong>WebSphere</strong> <strong>MQ</strong>, an instrumentation event is a logical combination of conditions that<br />

is detected by a queue manager or channel instance. Such an event causes the queue<br />

manager or channel instance to put a special message, call an event message, on an<br />

event queue.<br />

<strong>WebSphere</strong> <strong>MQ</strong> instrumentation events provide in<strong>for</strong>mation about errors, warnings,<br />

<strong>and</strong> other significant occurrences in a queue manager. You can use these events to<br />

monitor the operation of queue managers.<br />

Queue Manager Events<br />

Queue manager events are related to the use of resources within queue managers,<br />

such as an application trying to put a message on a queue that does not exist. The<br />

event messages <strong>for</strong> queue manager events are put on the<br />

SYSTEM.ADMIN.QMGR.EVENT queue. The following queue manager event types are<br />

supported:<br />

• Authority<br />

• Inhibit<br />

• Local<br />

• Remote<br />

• Start <strong>and</strong> stop<br />

For each event type in this list, there is a queue manager attribute that enables or<br />

disables the event type.<br />

Authority events<br />

Authority events report an authorization, such as an application trying to open a queue<br />

<strong>for</strong> which it does not have the required authority, or a comm<strong>and</strong>.<br />

Inhibit events<br />

Inhibit events indicate that an <strong>MQ</strong>PUT or <strong>MQ</strong>GET operation has been attempted<br />

against a queue, where the queue is inhibited <strong>for</strong> puts or gets.<br />

Local events<br />

Local events indicate that an application (or the queue manager) has not been able to<br />

access a local queue or other local object. For example, an application might try to<br />

access an object that has not been defined.<br />

Remote events<br />

Remote events indicate that an application (or the queue manager) cannot access a<br />

(remote) queue on another queue manager. For example, the transmission queue to<br />

be used might not be correctly defined.<br />

3843 3744–002 1–9


Concepts <strong>and</strong> Terminology<br />

Per<strong>for</strong>mance Events<br />

These events are notifications that a threshold condition has been reached by a<br />

resource. For example, a queue depth limit has been reached or, following an <strong>MQ</strong>GET<br />

request, a queue has not been serviced within a predefined time.<br />

For each event type in this list, there is a queue manager attribute that enables or<br />

disables the event type.<br />

Channel Events<br />

Channels report events because of conditions detected during their operation. For<br />

example, a channel event is generated when a channel instance is stopped.<br />

Start <strong>and</strong> stop events<br />

Start <strong>and</strong> stop events indicate that a queue manager has been started or has been<br />

requested to stop or quiescent. Stop events are not recorded unless the default<br />

message-persistence of the SYSTEM.ADMIN.QMGR.EVENT queue is defined as<br />

persistent.<br />

Channel <strong>and</strong> Bridge Events<br />

Channel events are reported by channels as a result of conditions detected during<br />

their operation, such as when a channel instance is stopped. The event messages <strong>for</strong><br />

channel <strong>and</strong> bridge events are put on the SYSTEM.ADMIN.CHANNEL.EVENT queue.<br />

Channel events are generated<br />

• By a comm<strong>and</strong> to start or stop a channel.<br />

• When a channel instance starts or stops.<br />

• When a channel receives a conversion error warning when getting a message.<br />

• When an attempt is made to create a channel automatically; the event is<br />

generated whether the attempt succeeds or fails.<br />

Note: Client connections do not cause Channel Started or Channel Stopped events.<br />

When a comm<strong>and</strong> is used to start a channel, an event is generated. Another event is<br />

generated when the channel instance starts. However, starting a channel by a listener,<br />

runmqchl, or a queue manager trigger message does not generate an event; in this<br />

case the only event generated is when the channel instance starts.<br />

A successful start or stop channel comm<strong>and</strong> generates at least two events. These<br />

events are generated <strong>for</strong> both queue managers connected by the channel (provided<br />

that the channel support events).<br />

If a channel event is put on to an event queue, an error condition causes the queue<br />

manager to create an event as usual.<br />

1–10 3843 3744–002


Per<strong>for</strong>mance Events<br />

Concepts <strong>and</strong> Terminology<br />

Per<strong>for</strong>mance events report that a resource has reached a threshold condition. For<br />

example, a queue depth limit might have been reached. The event messages <strong>for</strong><br />

per<strong>for</strong>mance events are put on the SYSTEM.ADMIN.PERFM.EVENT queue.<br />

Per<strong>for</strong>mance events relate to conditions that can affect the per<strong>for</strong>mance of<br />

applications that use a specified queue; they are not generated <strong>for</strong> the event queues<br />

themselves.<br />

The event type is returned in the comm<strong>and</strong> identifier field in the message data.<br />

If a queue manager tries to put a queue manager event or per<strong>for</strong>mance event<br />

message on an event queue <strong>and</strong> an error that would normally create an event is<br />

detected, another event is not created <strong>and</strong> no action is taken.<br />

<strong>MQ</strong>GET <strong>and</strong> <strong>MQ</strong>PUT calls within a unit of work can generate per<strong>for</strong>mance events<br />

regardless of whether the unit of work is committed or backed out.<br />

There are two types of per<strong>for</strong>mance events:<br />

Queue depth events<br />

Queue depth events relate to the number of messages on a queue; that is how full, or<br />

empty the queue is. These events are supported <strong>for</strong> shared queues.<br />

Queue service interval events<br />

Queue service interval events relate to whether messages are processed within a<br />

user-specified time interval. These events are not supported <strong>for</strong> shared queues.<br />

Configuration Events<br />

Configuration events are reported when objects are created or modified. A<br />

configuration event message contains in<strong>for</strong>mation about the attributes of an object.<br />

For example, a configuration event message is generated if a namelist object is<br />

created, <strong>and</strong> contains in<strong>for</strong>mation about the attributes of the namelist object. The<br />

event messages <strong>for</strong> configuration events are put on the<br />

SYSTEM.ADMIN.CONFIG.EVENT queue.<br />

There are four types of configuration events:<br />

Create object events<br />

Create object events are generated when an object is created.<br />

Change object events<br />

Change object events are generated when an object is changed.<br />

Delete object events<br />

Delete object events are generated when an object is deleted.<br />

3843 3744–002 1–11


Concepts <strong>and</strong> Terminology<br />

Refresh object events<br />

Refresh object events are generated by an explicit request to refresh.<br />

Comm<strong>and</strong> events<br />

Logger events<br />

A comm<strong>and</strong> event is reported when an <strong>MQ</strong>SC or PCF comm<strong>and</strong> is executed<br />

successfully. For example, a comm<strong>and</strong> event message is generated if the <strong>MQ</strong>SC<br />

comm<strong>and</strong>, ALTER QLOCAL, is executed successfully. A comm<strong>and</strong> event message<br />

contains in<strong>for</strong>mation about the origin, context, <strong>and</strong> content of a comm<strong>and</strong>. The event<br />

messages <strong>for</strong> comm<strong>and</strong> events are put on the SYSTEM.ADMIN.COMMAND.EVENT<br />

queue.<br />

A logger event is reported when a queue manager that employs linear logging starts<br />

writing log records to a new log extent. A logger event message contains in<strong>for</strong>mation<br />

specifying the log extents required by the queue manager <strong>for</strong> queue manager restart<br />

or media recovery. The event messages <strong>for</strong> logger events are put on the<br />

SYSTEM.ADMIN.LOGGER.EVENT queue.<br />

1–12 3843 3744–002


<strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> Components <strong>and</strong> Interfaces<br />

1.3. <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong><br />

Components <strong>and</strong> Interfaces<br />

Figure 1-1 illustrates the components <strong>and</strong> interfaces in W<strong>MQ</strong><strong>2200</strong>.<br />

Figure 1–1. Components <strong>and</strong> Interfaces in W<strong>MQ</strong><strong>2200</strong><br />

3843 3744–002 1–13


<strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> Components <strong>and</strong> Interfaces<br />

1.3.1. Message Queuing Interface (<strong>MQ</strong>I)<br />

The application program interface to W<strong>MQ</strong><strong>2200</strong> is called the Message Queuing<br />

Interface (<strong>MQ</strong>I). The <strong>MQ</strong>I is a set of function names that are entry points into the<br />

W<strong>MQ</strong><strong>2200</strong> subsystem. These functions are supported in the following languages:<br />

• C (sometimes referred to as C Compiler, <strong>and</strong> previously called Universal Compiling<br />

System [UCS C])<br />

• COBOL (sometimes referred to as COBOL Compiler, <strong>and</strong> previously called<br />

Universal Compiling System [UCS COBOL])<br />

The <strong>MQ</strong>I functions <strong>MQ</strong>CONN, <strong>MQ</strong>CONNX, <strong>MQ</strong>OPEN, <strong>MQ</strong>GET, <strong>MQ</strong>PUT, <strong>MQ</strong>PUT1,<br />

<strong>MQ</strong>CMIT, <strong>MQ</strong>BACK, <strong>MQ</strong>CL<strong>OS</strong>E, <strong>and</strong> <strong>MQ</strong>DISC are supported by W<strong>MQ</strong><strong>2200</strong>.<br />

The <strong>MQ</strong>I is described in detail in the IBM <strong>WebSphere</strong> <strong>MQ</strong> Application Programming<br />

Reference manual.<br />

W<strong>MQ</strong><strong>2200</strong> provides access to the <strong>MQ</strong>I <strong>for</strong> new applications as well as the existing<br />

<strong>MQ</strong>Series <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> (hereafter referred to as <strong>MQ</strong>S<strong>2200</strong>) applications.<br />

Existing <strong>MQ</strong>S<strong>2200</strong> applications can use W<strong>MQ</strong><strong>2200</strong> without relinking provided you are<br />

using the same <strong>MQ</strong>S subsystem gate bank BDI (Bank Descriptor Index). The default<br />

<strong>MQ</strong>S subsystem BDI <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> is the same as the one used <strong>for</strong> <strong>MQ</strong>S<strong>2200</strong>. There<br />

are some exceptions to this general relinking rule. Refer to Section 4, "Application<br />

Development," <strong>for</strong> more in<strong>for</strong>mation on multibyte data.<br />

1.3.2. <strong>WebSphere</strong> <strong>MQ</strong> Queue Manager (QM)<br />

The <strong>WebSphere</strong> <strong>MQ</strong> Queue Manager (QM) provides queuing services to applications<br />

<strong>and</strong> manages the execution environment of the <strong>MQ</strong>I. The W<strong>MQ</strong><strong>2200</strong> Queue Manager<br />

includes the following st<strong>and</strong>ard or equivalent features:<br />

• Syncpoint (data assurance)<br />

<strong>WebSphere</strong> <strong>MQ</strong> Syncpoint coordination is the process by which units of work are<br />

either committed or backed out with data integrity.<br />

W<strong>MQ</strong><strong>2200</strong> supports, as a single unit of work, coordination of actions resulting<br />

from multiple <strong>MQ</strong>I calls made under Syncpoint within an application using the<br />

<strong>MQ</strong>CMIT <strong>and</strong> <strong>MQ</strong>BACK <strong>MQ</strong>I calls.<br />

Where the actions of more than one resource manager need to be synchronized,<br />

W<strong>MQ</strong><strong>2200</strong> requires the services of an external transaction manager. In this case,<br />

W<strong>MQ</strong><strong>2200</strong> acts as a resource manager <strong>and</strong> Open Distributed Transaction<br />

Processing software provides the transactional coordination.<br />

This provides XA-compliant transactional coordination.<br />

• Logging<br />

The <strong>WebSphere</strong> <strong>MQ</strong> Log Manager maintains a sequential record of all persistent<br />

changes made to the Queue Manager <strong>for</strong> purposes of recovery. By default, log<br />

files are placed on a set of mirrored disks on the <strong>OS</strong> <strong>2200</strong> QProcessor system <strong>for</strong><br />

greater reliability. <strong>WebSphere</strong> <strong>MQ</strong> logs can be archived using a variety of tools.<br />

1–14 3843 3744–002


• Triggers<br />

<strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> Components <strong>and</strong> Interfaces<br />

A trigger event is an event that causes a trigger message to be generated by the<br />

queue manager <strong>and</strong> sent to an initiation queue. A trigger monitor application<br />

processes the initiation queue. W<strong>MQ</strong><strong>2200</strong> provides a default, system-supplied<br />

trigger monitor <strong>and</strong> allows a user-developed application as a trigger monitor.<br />

Additionally, W<strong>MQ</strong><strong>2200</strong> provides trigger functions to per<strong>for</strong>m an Open Distributed<br />

Transaction Processing service, execute an <strong>OS</strong> <strong>2200</strong> batch runstream, or schedule<br />

a TIP transaction.<br />

• Exits<br />

Applications can specify exit points during channel processing that allow<br />

customized requirements to be included. W<strong>MQ</strong><strong>2200</strong> supports the st<strong>and</strong>ard exit<br />

points <strong>for</strong> Message Retry, Message Channel, Data Conversion, <strong>and</strong> Transmission<br />

Program.<br />

• Security<br />

W<strong>MQ</strong><strong>2200</strong> provides support <strong>for</strong> user-provided node authentication through<br />

transmission program exits.<br />

You can use the IBM <strong>WebSphere</strong> <strong>MQ</strong> Object Authority Manager (OAM) <strong>for</strong> user<br />

authentication to access the queue manager based on user-defined group<br />

permissions <strong>for</strong> operations <strong>and</strong> access to resources. Refer to the IBM <strong>WebSphere</strong><br />

<strong>MQ</strong> System <strong>Administration</strong> Guide <strong>for</strong> details on how user <strong>and</strong> groups are used by<br />

OAM. Refer to Section 3, "<strong>Administration</strong>," <strong>for</strong> specific in<strong>for</strong>mation on how users<br />

<strong>and</strong> groups work in the ClearPath <strong>OS</strong> <strong>2200</strong> QProcessor environment.<br />

• Distribution lists<br />

The Queue Manager allows you to put multiple messages on the same queue<br />

through the sequence of <strong>MQ</strong>OPEN … <strong>MQ</strong>PUT … <strong>MQ</strong>PUT … <strong>MQ</strong>CL<strong>OS</strong>E.<br />

Distribution lists allow you to send a message to multiple destinations. <strong>MQ</strong>OPEN<br />

opens a distribution list <strong>and</strong> a single <strong>MQ</strong>PUT sends the message.<br />

• Backup <strong>and</strong> restore<br />

The mqsave <strong>and</strong> mqload UNX shell comm<strong>and</strong>s, developed by Unisys, are provided<br />

<strong>for</strong> backup <strong>and</strong> restore of Queue Manager files <strong>and</strong> data to the <strong>OS</strong> <strong>2200</strong>. Backup<br />

<strong>and</strong> restore of the <strong>OS</strong> <strong>2200</strong> QProcessor configuration <strong>and</strong> data can be also<br />

accomplished using the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

• Instrumentation<br />

W<strong>MQ</strong><strong>2200</strong> supports <strong>WebSphere</strong> <strong>MQ</strong> instrumentation events necessary to<br />

monitor the operation of the queue manager.<br />

• Diagnostics<br />

W<strong>MQ</strong><strong>2200</strong> supports <strong>WebSphere</strong> <strong>MQ</strong> diagnostics, such as tracing, as described in<br />

the IBM <strong>WebSphere</strong> <strong>MQ</strong> System <strong>Administration</strong> Guide. Refer to Section 7,<br />

"Troubleshooting," of this document <strong>for</strong> more in<strong>for</strong>mation. Several diagnostic<br />

utilities are provided with the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console that<br />

enables you to monitor disks (System Health), collect W<strong>MQ</strong><strong>2200</strong> traces <strong>and</strong><br />

dumps, <strong>and</strong> view system <strong>and</strong> message queue error logs. All W<strong>MQ</strong><strong>2200</strong> errors are<br />

optionally written to the Server Sentinel console if configured on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

3843 3744–002 1–15


<strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> Components <strong>and</strong> Interfaces<br />

In addition, ICLogLevel <strong>and</strong> <strong>MQ</strong>LogLevel are provided <strong>for</strong> <strong>OS</strong> <strong>2200</strong> <strong>and</strong> <strong>OS</strong> <strong>2200</strong><br />

QProcessor tracing. Refer to Section 2, "<strong>Installation</strong> <strong>and</strong> Configuration", <strong>for</strong> more<br />

in<strong>for</strong>mation.<br />

Open Distributed Transaction Processing Integration<br />

Transactional support is provided with W<strong>MQ</strong><strong>2200</strong> acting as a XA-compliant resource<br />

manager (RM) under Open Distributed Transaction Processing.<br />

Open Distributed Transaction Processing global units of work allow access to<br />

W<strong>MQ</strong><strong>2200</strong> as a static resource manager in conjunction with the following resource<br />

managers:<br />

• File control superstructure (FCSS)<br />

• Universal Database Control (previously called Universal Data System [UDS]<br />

Control)<br />

• Message Control Bank (MCB)<br />

Figure 1-2 illustrates Open Distributed Transaction Processing integration.<br />

Figure 1–2. Open Distributed Transaction Processing Integration<br />

1–16 3843 3744–002


<strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> Components <strong>and</strong> Interfaces<br />

W<strong>MQ</strong><strong>2200</strong> as a Resource Manager<br />

To coordinate either persistent or nonpersistent message type updates within a global<br />

transaction, you must use the <strong>WebSphere</strong> <strong>MQ</strong> Syncpoint option on the message put<br />

or get when Open Distributed Transaction Processing is acting as the transaction<br />

manager. This global transaction might not involve other resource managers.<br />

This coordination is achieved by an Open Distributed Transaction Processing client or<br />

server that<br />

• Has its ap$name configured with the <strong>WebSphere</strong> <strong>MQ</strong> resource manager GROUP<br />

name in tmsconfig.<br />

• Uses the tx_* application interface verbs.<br />

• Uses the <strong>WebSphere</strong> <strong>MQ</strong> Syncpoint option on put <strong>and</strong> get comm<strong>and</strong>s.<br />

• Can invoke servers configured to do work in other resource managers.<br />

• If using a nondefault queue manager, has the queue manager name in the<br />

OPENINFO statement of a <strong>WebSphere</strong> <strong>MQ</strong> resource manager GROUP entry in<br />

tmsconfig.<br />

<strong>WebSphere</strong> <strong>MQ</strong> message integrity is assured when a message is persistent.<br />

Persistence is determined by the DefPersistence attribute of the queue specified in<br />

the <strong>MQ</strong>OPEN comm<strong>and</strong>, or by the Persistence field of the <strong>MQ</strong>MD structure <strong>for</strong> the<br />

message.<br />

The <strong>WebSphere</strong> <strong>MQ</strong> Syncpoint capability is not bound with <strong>OS</strong> <strong>2200</strong> integrated<br />

recovery <strong>and</strong> <strong>WebSphere</strong> <strong>MQ</strong> message queues are not tied to an application group.<br />

However, messages on the <strong>WebSphere</strong> <strong>MQ</strong> queues are assured recoverable across<br />

system <strong>and</strong> subsystem crashes by the internal <strong>WebSphere</strong> <strong>MQ</strong> recovery mechanism<br />

when persistent messages or persistent Syncpoint is used.<br />

1.3.3. Basic Mode Interface<br />

The purpose of the basic mode interface (BMI) is to allow the Business In<strong>for</strong>mation<br />

Server <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> product access to the <strong>WebSphere</strong> <strong>MQ</strong> <strong>MQ</strong>I. The BMI is<br />

a subsystem that consists of two installed files, wmq$*mqs$bmcommon <strong>and</strong><br />

wmq$*mqs$bmlib. The Business In<strong>for</strong>mation Server product provides its users the<br />

capability to<br />

• Connect to any number of queue managers<br />

• Open a queue<br />

• Put a message on a queue<br />

• Get a message from a queue<br />

• Inquire about the properties of a queue<br />

• Close a queue<br />

• Disconnect from a queue manager<br />

The Basic Mode Interface is optional <strong>and</strong> is not part of a default installation.<br />

3843 3744–002 1–17


Hardware <strong>and</strong> Software Requirements<br />

Refer to the Business In<strong>for</strong>mation Server <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> <strong>Installation</strong> <strong>and</strong><br />

Systems Analysis Guide <strong>for</strong> more in<strong>for</strong>mation.<br />

1.4. Hardware <strong>and</strong> Software Requirements<br />

Hardware Requirements<br />

You can run W<strong>MQ</strong><strong>2200</strong> on a ClearPath Dorado 300, 700, or 4000 Series server paired<br />

with the ClearPath <strong>OS</strong> <strong>2200</strong> QProcessor (hereafter referred to as <strong>OS</strong> <strong>2200</strong><br />

QProcessor). A separate <strong>OS</strong> <strong>2200</strong> QProcessor is required <strong>for</strong> each installation of<br />

W<strong>MQ</strong><strong>2200</strong>.<br />

Software Requirements<br />

For the <strong>OS</strong> <strong>2200</strong> operating environment <strong>and</strong> <strong>for</strong> most software products, W<strong>MQ</strong><strong>2200</strong><br />

level 6R1 requires ClearPath <strong>OS</strong> <strong>2200</strong> release 11.3, ClearPath <strong>OS</strong> <strong>2200</strong> release 12.0 or<br />

later. The following is also required:<br />

• IC<strong>2200</strong><br />

The Interconnect (referred to as IC<strong>2200</strong> in this document) allows W<strong>MQ</strong><strong>2200</strong><br />

applications (including existing <strong>MQ</strong>S<strong>2200</strong> applications) to execute requests on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor.<br />

In addition, the following may be required:<br />

• To have W<strong>MQ</strong><strong>2200</strong> function as a resource manager under Open Distributed<br />

Transaction Processing, you must have Open Distributed Transaction Processing<br />

(OLTP-TM<strong>2200</strong>) release 8R1 or later. You must also apply resolutions provided <strong>for</strong><br />

your Open Distributed Transaction Processing release in OLTP-TM<strong>2200</strong> PLEs that<br />

have a keyword of <strong>MQ</strong>S<strong>2200</strong>.<br />

Install Open Distributed Transaction Processing following the st<strong>and</strong>ard installation<br />

procedures in the Open Distributed Transaction Processing <strong>Administration</strong> Guide<br />

volume 1.<br />

• The Business In<strong>for</strong>mation Server <strong>for</strong> the ClearPath <strong>OS</strong> <strong>2200</strong> product has<br />

introduced a basic mode interface to W<strong>MQ</strong><strong>2200</strong>. This optional interface is<br />

packaged on the W<strong>MQ</strong><strong>2200</strong> release tape. It permits the Business In<strong>for</strong>mation<br />

Server product to utilize the W<strong>MQ</strong><strong>2200</strong> <strong>MQ</strong>I. To install the basic mode interface,<br />

you must install mode W<strong>MQ</strong>$B of the W<strong>MQ</strong><strong>2200</strong> product. In addition to the<br />

st<strong>and</strong>ard set of files installed with default mode W<strong>MQ</strong>$A, two other files,<br />

W<strong>MQ</strong>$*<strong>MQ</strong>S$BMCOMMON <strong>and</strong> W<strong>MQ</strong>$*<strong>MQ</strong>S$BMLIB, are also installed.<br />

1–18 3843 3744–002


1.5. Security<br />

Security<br />

W<strong>MQ</strong><strong>2200</strong> is supported in a Fundamental Security, Security Option 1, Security Option<br />

2, or Security Option 3 environment. Depending on the environment, specific<br />

requirements must be met <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> API daemon to start properly.<br />

In a SecOpt Security environment, the owner of the W<strong>MQ</strong><strong>2200</strong> subsystem (the owner<br />

of the <strong>MQ</strong>S$COMMON file which is usually –<strong>MQ</strong>S–) must meet the following criteria:<br />

• Have BATCH privilege<br />

• Have access to the account number of the user who runs the <strong>MQ</strong>S$EXE.STARTUP<br />

program to invoke the daemon if the QUOTA_ENFORCEMENT_BY_USERID is<br />

TRUE.<br />

• Be mapped as the root user <strong>and</strong> group on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

• Have ER KEYIN$ privilege<br />

In a Fundamental Security environment, the <strong>OS</strong> <strong>2200</strong> user ID that starts the W<strong>MQ</strong><strong>2200</strong><br />

daemon through the <strong>MQ</strong>S$EXE.STARTUP comm<strong>and</strong> must:<br />

• Have BATCH privilege<br />

• Have ER KEYIN$ privilege<br />

• Be mapped as the root user <strong>and</strong> group on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

User ID Requirements <strong>for</strong> the Owner of the W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON<br />

Subsystem <strong>and</strong> the W<strong>MQ</strong>$*<strong>MQ</strong>S$BMCOMMON Subsystem Files<br />

Access to a subsystem is granted by a combination of two conditions:<br />

• Execute access to the subsystem file<br />

• Execute access to the user ID record that owns the subsystem file.<br />

The first condition is met because the two subsystem files are installed as public files.<br />

The second condition requires the creation of a user ID that owns the subsystem files<br />

<strong>and</strong> has the following attributes, depending on your security requirements. If you use<br />

access control records (ACRs), this user ID must allow public execute access through<br />

an ACR attached to the subsystem files. You must also set up a list of users who can<br />

deactivate the subsystem (DELETE argument).<br />

Set this parameter … To...<br />

Processor Privilege Can Only Read Executive GRS<br />

Access Privilege Trusted<br />

Subsystem Sharing Level Application<br />

General Access Permission Privilege True (set)<br />

Refer to the Software Products <strong>Installation</strong> Guide <strong>for</strong> more in<strong>for</strong>mation regarding<br />

user ID requirements.<br />

3843 3744–002 1–19


The UNX Shell Processor<br />

Unisys recommends that you verify that the user ID of the owner of the W<strong>MQ</strong><strong>2200</strong><br />

subsystem has the ER CALLs privilege, DUMP$SUBSYS. This ensures that W<strong>MQ</strong><strong>2200</strong><br />

banks are included in Exec dumps.<br />

User ID –<strong>MQ</strong>S- should be set up <strong>and</strong> provided by the <strong>OS</strong> <strong>2200</strong> operating system, <strong>and</strong><br />

this user ID must then be owner of both the <strong>MQ</strong>S$COMMON <strong>and</strong> the<br />

<strong>MQ</strong>S$BMCOMMON subsystem files.<br />

init User ID Requirements<br />

The user ID that starts the init or init-migrate script in the W<strong>MQ</strong><strong>2200</strong> Dem<strong>and</strong> Shell<br />

must have root authority on the <strong>OS</strong> <strong>2200</strong> QProcessor. This means the <strong>OS</strong> <strong>2200</strong> user<br />

running the init script must be mapped as root on the <strong>OS</strong> <strong>2200</strong> QProcessor. <strong>OS</strong> <strong>2200</strong><br />

users can be added to the <strong>OS</strong> <strong>2200</strong> QProcessor mappings as root through the <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console. Refer to Section 3, "<strong>Administration</strong>," <strong>for</strong> more<br />

in<strong>for</strong>mation.<br />

W<strong>MQ</strong><strong>2200</strong> Administrative Comm<strong>and</strong>s User ID Requirements<br />

After you have installed the product <strong>and</strong> prepared the W<strong>MQ</strong><strong>2200</strong> system, you must<br />

add users who are to run the W<strong>MQ</strong><strong>2200</strong> comm<strong>and</strong>s, <strong>for</strong> example crtmqm or strmqm,<br />

to the Interconnect User Map file. This user map file determines the authority an<br />

<strong>OS</strong> <strong>2200</strong> user ID has on the <strong>OS</strong> <strong>2200</strong> QProcessor. To execute <strong>WebSphere</strong> <strong>MQ</strong><br />

administrative comm<strong>and</strong>s, a user must be a member of the ‘mqm’ group on the<br />

QProcessor. Refer to Section 3, "<strong>Administration</strong>," <strong>for</strong> more in<strong>for</strong>mation on mapping<br />

users.<br />

1.6. The UNX Shell Processor<br />

Throughout this guide, you will notice references to the UNX shell processor or UNX<br />

shell. This processor is a shell interface <strong>for</strong> executing various <strong>WebSphere</strong> <strong>MQ</strong><br />

comm<strong>and</strong>s such as crtmqm, dspmqlog, <strong>and</strong> so on. The UNX shell processor also<br />

provides<br />

• A set of UNIX-like comm<strong>and</strong>s <strong>for</strong> accessing the file system <strong>and</strong> processes<br />

• A set of utility comm<strong>and</strong>s<br />

Format<br />

>@wmq$*mqs$exe.unx<br />

The UNX shell processor responds with output similar to the following:<br />

>@wmq$*mqs$exe.unx<br />

>Unx - 6R1 - 2010 Jun 29 Mon 08:14:30<br />

>28140><br />

The number within the prompt is the process-id, or pid, of the UNX shell session<br />

within your W<strong>MQ</strong><strong>2200</strong> system. Type a single question mark to display a list of<br />

available <strong>WebSphere</strong> <strong>MQ</strong> <strong>and</strong> utility comm<strong>and</strong>s. To get help on a specific UNIX-like or<br />

utility comm<strong>and</strong>, type a question mark followed by the comm<strong>and</strong> name.<br />

1–20 3843 3744–002


What’s Different?<br />

Use the backslash character ( \ ) to continue a UNX comm<strong>and</strong> input line to the next<br />

line. Each entered input can be a maximum of 80 characters in length. You do not need<br />

to place any spaces between the end of a line <strong>and</strong> the continuation character; all<br />

characters prior to the continuation character are considered significant.<br />

If you need to enter the "*" character in an UNX shell session, it must be preceded with<br />

the “\” (escape) character as follows:<br />

>dspmqfls –t \*<br />

To exit the UNX shell processor, use the exit comm<strong>and</strong>.<br />

Comm<strong>and</strong>s that output multiple screens require the user to enter ‘q’ to quit the<br />

comm<strong>and</strong> session. After displaying the last screen, the user is presented the following<br />

prompt:<br />

>(END)><br />

To exit the comm<strong>and</strong> session, enter comm<strong>and</strong> ‘q’ in response to the END prompt.<br />

Note: The API daemon background run does not need to be active to use the UNX<br />

dem<strong>and</strong> shell. Only the IC launcher daemon on the <strong>OS</strong> <strong>2200</strong> QProcessor needs to be<br />

running to use the UNX dem<strong>and</strong> shell.<br />

1.7. What’s Different?<br />

This list describes the programming <strong>and</strong> operational differences between <strong>MQ</strong>S<strong>2200</strong><br />

<strong>and</strong> W<strong>MQ</strong><strong>2200</strong>. If you were an <strong>MQ</strong>S<strong>2200</strong> user, read through this section to make sure<br />

you are aware of changes that affect your deployment <strong>and</strong> administration of the new<br />

product.<br />

1.7.1. Deployment Differences<br />

• The installation process has changed. The Solar install <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> must install<br />

additional software on the <strong>OS</strong> <strong>2200</strong> QProcessor. Refer to Section 2, "<strong>Installation</strong><br />

<strong>and</strong> Configuration," to become familiar with the W<strong>MQ</strong><strong>2200</strong> installation process.<br />

• The Solar product installation installs files on both the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. This requires that an <strong>OS</strong> <strong>2200</strong> user be mapped to root to allow the<br />

installation on the <strong>OS</strong> <strong>2200</strong> QProcessor to succeed. Use the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console to manage user mappings.<br />

• The installation process now uses different SOLAR installation modes to install<br />

either to the <strong>OS</strong> <strong>2200</strong> or a <strong>OS</strong> <strong>2200</strong> QProcessor. The default mode, W<strong>MQ</strong>$A is<br />

used to install to the <strong>OS</strong> <strong>2200</strong> only. Modes Q$1 through Q$8 are used to install to<br />

the eight possible <strong>OS</strong> <strong>2200</strong> QProcessors. Multiple modes can be selected to install<br />

the software on both the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessors.<br />

3843 3744–002 1–21


What’s Different?<br />

• Migration is no longer done with the *mqs$run.init/run addstream. Several<br />

migration scenarios are documented in section 2.<br />

• Although you can still generate alternate installations using COMUS, some of the<br />

in<strong>for</strong>mation solicited by COMUS during the generation of the build runstream has<br />

changed. Refer to "2.7 Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS"<br />

<strong>for</strong> more in<strong>for</strong>mation.<br />

• If you plan to install an additional W<strong>MQ</strong><strong>2200</strong> product with <strong>OS</strong> <strong>2200</strong> QProcessor on<br />

your system, there is some configuration required. Refer to the ClearPath<br />

Specialty Engine <strong>for</strong> <strong>OS</strong> <strong>2200</strong> Configuration Guide <strong>for</strong> in<strong>for</strong>mation on how to do<br />

this.<br />

• For user programs to begin using <strong>MQ</strong>I, the background daemon must first be<br />

running <strong>and</strong> connected to the <strong>OS</strong> <strong>2200</strong> QProcessor. See the administration section<br />

<strong>for</strong> directions on how to start <strong>and</strong> terminate the daemon run.<br />

• The background daemon run accepts console keyins to control the W<strong>MQ</strong><strong>2200</strong><br />

subsystem <strong>and</strong> API connection. The <strong>MQ</strong>ADMIN interface is integrated into the<br />

background daemon.<br />

• You no longer need the Exec configuration parameter HVTIPMACT set to true<br />

when running HVTIP transactions that invoke <strong>MQ</strong>I.<br />

• Use the mqs$entry object module from the *mqs$lib file as the element<br />

name of W<strong>MQ</strong><strong>2200</strong> RM XA gate bank object module in the Open DTP rminstall run<br />

stream. This replaces the <strong>MQ</strong>S<strong>2200</strong> UNX-gates object module in the new<br />

environment.<br />

• There is a new <strong>and</strong> convenient web-based administrator interface used <strong>for</strong><br />

deployment <strong>and</strong> administration called the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console. Refer to Appendix G <strong>for</strong> more in<strong>for</strong>mation on how to use this console.<br />

• The W<strong>MQ</strong><strong>2200</strong> product has not been validated <strong>for</strong> message recovery in an XTC<br />

environment on a remote or alternate host.<br />

• You no longer need to have the Exec configuration parameter NPECTRL set to<br />

TRUE.<br />

1.7.2. Administrative Differences<br />

• The UNX shell communicates directly with the <strong>OS</strong> <strong>2200</strong> QProcessor operating<br />

system. As a result, UNX help comm<strong>and</strong> operations are different. See Appendix F,<br />

"UNX Shell," <strong>for</strong> more details.<br />

• There are some new configuration tags to be aware of: Convert<strong>MQ</strong>MDE,<br />

DaemonKeyId, LinuxIP, LinuxPort, ICLogLevel, <strong>MQ</strong>LogLevel, MonitorInterval,<br />

TermWaitTime, AffinitizeWaitTime, HighOffloadCount, LowOffloadCount,<br />

MaxOffloads, Log<strong>MQ</strong>AuthorityErrors, PrintConnectionDownWarnings. These are<br />

described in Section 2,"<strong>Installation</strong> <strong>and</strong> Configuration."<br />

• Since <strong>WebSphere</strong> <strong>MQ</strong> queue managers run on the <strong>OS</strong> <strong>2200</strong> QProcessor, START<br />

<strong>and</strong> FIN messages <strong>for</strong> <strong>WebSphere</strong> <strong>MQ</strong> programs are no longer printed to the <strong>OS</strong><br />

<strong>2200</strong> console.<br />

• The daemon background run print files are now cycled <strong>and</strong> named<br />

*daemon$out.<br />

1–22 3843 3744–002


What’s Different?<br />

• Since the <strong>WebSphere</strong> <strong>MQ</strong> queue manager objects, queue files, <strong>and</strong> log files now<br />

reside on the <strong>OS</strong> <strong>2200</strong> QProcessor, there are no TIP file system writes to be<br />

audited on the <strong>OS</strong> <strong>2200</strong> <strong>for</strong> purposes of <strong>OS</strong> <strong>2200</strong> Integrated Recovery. See the<br />

section on Recovery Procedures <strong>for</strong> in<strong>for</strong>mation on recovery under W<strong>MQ</strong><strong>2200</strong>.<br />

• The <strong>OS</strong> <strong>2200</strong> background daemon run does not set the run condition word.<br />

• Configuration tags ICLogLevel <strong>and</strong> <strong>MQ</strong>LogLevel are provided to enable different<br />

levels of W<strong>MQ</strong><strong>2200</strong>, <strong>OS</strong> <strong>2200</strong> (<strong>and</strong> <strong>OS</strong> <strong>2200</strong> QProcessor) tracing <strong>and</strong> logging. The<br />

<strong>OS</strong> <strong>2200</strong> traces are collected through the DDP trace facility. You can use the<br />

ICADMIN processor to collect current traces (done by the diagn/run) or there are<br />

DDP trace add streams in the *mqstools file that allow you to select a specific<br />

DDP trace or log file. Use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console<br />

interface to collect the generated <strong>OS</strong> <strong>2200</strong> QProcessor traces.<br />

• The TED editor comm<strong>and</strong>s have changed. See Appendix C, "Editing W<strong>MQ</strong><strong>2200</strong><br />

QProcessor Files," <strong>for</strong> comm<strong>and</strong>s that can be used.<br />

• The <strong>OS</strong> <strong>2200</strong> QProcessor provides a clustering capability <strong>for</strong> High Availability (HA).<br />

Refer to Section 6, "High Availability," <strong>for</strong> more in<strong>for</strong>mation.<br />

• Websphere <strong>MQ</strong> listeners started with the runmqlsr comm<strong>and</strong> do not terminate<br />

when the queue manager ends. You must end listeners with the endmqlsr<br />

comm<strong>and</strong> manually. Optionally, you can define <strong>and</strong> start listeners with the <strong>MQ</strong>SC<br />

DEFINE LISTENER comm<strong>and</strong> or use the queue manager’s start <strong>and</strong> stop scripts<br />

provided by the W<strong>MQ</strong><strong>2200</strong>.SERVICE object to start <strong>and</strong> stop listeners.<br />

1.7.3. Programming Differences<br />

• If you are linking new COBOL applications, you must include object module<br />

*mqs$lib.cbl$entry in your program links. This object module replaces<br />

the mqs$entry object module used by <strong>MQ</strong>S<strong>2200</strong>. Your current <strong>MQ</strong>S<strong>2200</strong> COBOL<br />

(<strong>and</strong> UC) applications should continue to work without relinking; if you have<br />

installed the new W<strong>MQ</strong><strong>2200</strong> at the same BDIs as your previous <strong>MQ</strong>S<strong>2200</strong><br />

installation.<br />

• A user-written <strong>MQ</strong>S<strong>2200</strong> trigger monitor does not work correctly without<br />

updating <strong>and</strong> relinking it under W<strong>MQ</strong><strong>2200</strong>.The <strong>MQ</strong>GMO_CONVERT option must be<br />

set <strong>for</strong> the <strong>MQ</strong>GET from the initiation queue.<br />

• <strong>MQ</strong>CONNX per<strong>for</strong>ms the same function as <strong>MQ</strong>CONN (connect to a queue<br />

manager) but it accepts extra parameters that allows the user to specify extra<br />

connection options with special settings <strong>and</strong> attributes set. <strong>MQ</strong>CONNX is now<br />

supported with the following limitations:<br />

− <strong>MQ</strong>CNO (Connect Options structure) must be a Version 1 <strong>for</strong>mat structure.<br />

− The <strong>MQ</strong>CNO_HANDLE_SHARE_BLOCK, <strong>MQ</strong>CNO_SHARE_NO_BLOCK, <strong>and</strong><br />

<strong>MQ</strong>CNO_FASTPATH_BINDING Options values are accepted but ignored.<br />

• Object module mqs$entryst is no longer needed in the link of programs that want<br />

to stick. For sticking UC programs, include mqs$entry object module; <strong>for</strong> sticking<br />

COBOL programs include cbl$entry object module.<br />

• Sticking is no longer restricted <strong>for</strong> TIP/HVTIP OLTP servers.<br />

3843 3744–002 1–23


What’s Different?<br />

1.7.4. Security<br />

In previous implementations of <strong>MQ</strong>Series <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> (<strong>MQ</strong>S<strong>2200</strong>), it was<br />

possible that a message would never physically leave the <strong>OS</strong> <strong>2200</strong> operating<br />

environment. An example of this is a message that is created <strong>and</strong> consumed on the<br />

same <strong>OS</strong> <strong>2200</strong> as it flows through its normal business logic. This meant that the<br />

well-known security attributes of the <strong>OS</strong> <strong>2200</strong> environment would apply at all times to<br />

messages being h<strong>and</strong>led by <strong>MQ</strong>S<strong>2200</strong>. With the use of the Specialty Engine <strong>and</strong> the<br />

new version of <strong>MQ</strong>Series <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> (W<strong>MQ</strong><strong>2200</strong>), messages are now<br />

stored on a separate system that has its own rules with regard to system access. A<br />

W<strong>MQ</strong><strong>2200</strong> user must review the message content <strong>for</strong> security purposes <strong>and</strong> decide<br />

whether the message content must be encrypted at the application layer.<br />

In addition, <strong>WebSphere</strong> <strong>MQ</strong> has a way to customize its behavior at various functional<br />

levels called API exits. The use of API exits can create security-related issues. For<br />

example, consider the case of a customer using a CHANNEL exit with <strong>MQ</strong>S<strong>2200</strong> to<br />

encrypt a message prior to its leaving the <strong>OS</strong> <strong>2200</strong> system. With W<strong>MQ</strong><strong>2200</strong>, the code<br />

is no longer deployed on the <strong>OS</strong> <strong>2200</strong> but on the <strong>OS</strong> <strong>2200</strong> QProcessor. This means<br />

that the message follows the same data flow as previously mentioned <strong>and</strong> is<br />

unencrypted <strong>for</strong> some period of time on a non-<strong>OS</strong> <strong>2200</strong> environment. The W<strong>MQ</strong><strong>2200</strong><br />

user must review their security requirements <strong>and</strong> make any required modifications to<br />

their application if they use exit functionality.<br />

1–24 3843 3744–002


Section 2<br />

<strong>Installation</strong> <strong>and</strong> Configuration<br />

This section discusses the processes involved be<strong>for</strong>e using W<strong>MQ</strong><strong>2200</strong> <strong>for</strong> the first<br />

time. The following table outlines the steps in the process. You can use this table as a<br />

checklist to track your progress.<br />

Step Description Reference √<br />

1 Read some practical in<strong>for</strong>mation be<strong>for</strong>e<br />

installing W<strong>MQ</strong><strong>2200</strong>.<br />

2 Install W<strong>MQ</strong><strong>2200</strong>. 2.2<br />

3 Verify the installation <strong>and</strong> configuration. 2.3<br />

4 Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration<br />

Parameters<br />

5 Setting up Communications 2.5<br />

6 Advanced configurations 2.6<br />

7 Generating alternate W<strong>MQ</strong><strong>2200</strong> installations<br />

using COMUS<br />

8 Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s as Static<br />

Resource Managers under Open DTP<br />

2.1. Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

This subsection provides some practical in<strong>for</strong>mation <strong>for</strong> you to read be<strong>for</strong>e you begin<br />

the W<strong>MQ</strong><strong>2200</strong> installation process.<br />

2.1.1. Release Media<br />

W<strong>MQ</strong><strong>2200</strong> software is supplied on a Solar-installable (Software Library Administrator)<br />

tape. Tape assign options are TF (Tape File) <strong>and</strong> tape device type is VTS (Virtual Tape<br />

Solution).<br />

Note: W<strong>MQ</strong><strong>2200</strong> is based on version 6.0 of <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> Linux <strong>and</strong> was<br />

developed by Unisys under license from IBM. The product is released as an<br />

absolute-only product.<br />

3843 3744–002 2–1<br />

2.1<br />

2.4<br />

2.7<br />

2.8


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

If W<strong>MQ</strong><strong>2200</strong> is being installed using the INSTALLPKG runstream, a specific mode must<br />

be selected instead of choosing to install the default mode. Following is an example<br />

<strong>for</strong> INSTALLPKG install of W<strong>MQ</strong><strong>2200</strong> mode W<strong>MQ</strong>$A:<br />

>Install from , DISK, or RSS? ><br />

>Enter reel number >T09999<br />

>Install default modes? /N >N<br />

>Enter product name,level,mode (xmit if done)<br />

>W<strong>MQ</strong><strong>2200</strong>,6R1,W<strong>MQ</strong>$A<br />

>Enter logical package name,level ><br />

><br />

>Enter product name,level,mode (xmit if done) ><br />

>Register package also? Y/ >Y<br />

Note: A separate runstream must be created <strong>for</strong> the <strong>OS</strong> <strong>2200</strong> install <strong>and</strong> each<br />

<strong>OS</strong> <strong>2200</strong> QProcessor install.<br />

2.1.2. <strong>Installation</strong> <strong>and</strong> Migration Considerations<br />

Upgrading from <strong>MQ</strong>S<strong>2200</strong><br />

Existing <strong>MQ</strong>S<strong>2200</strong> users have three options:<br />

• Replacement – remove all existing queue manager data by uninstalling the existing<br />

<strong>MQ</strong>S<strong>2200</strong> product <strong>and</strong> then installing W<strong>MQ</strong><strong>2200</strong>.<br />

Notes:<br />

• This option requires that you be responsible <strong>for</strong> recreating any queue<br />

manager data including messages <strong>and</strong> objects as they will be destroyed by<br />

the uninstall.<br />

• This option enables you to use the current <strong>MQ</strong>S<strong>2200</strong> application programs<br />

without changing or re-linking except <strong>for</strong> multi-byte data that is passed<br />

when using the user-defined message <strong>for</strong>mat capability. See “User-Defined<br />

Message Format Conversion” in Section 4, <strong>for</strong> more in<strong>for</strong>mation.<br />

• Co-install – retain the existing <strong>MQ</strong>S<strong>2200</strong> installation alongside your new<br />

W<strong>MQ</strong><strong>2200</strong> installation by generating <strong>and</strong> installing an alternate BDI version of<br />

W<strong>MQ</strong><strong>2200</strong>.<br />

Note: This option requires you to re-link the current <strong>MQ</strong>S<strong>2200</strong> application<br />

programs to access the alternate-BDI W<strong>MQ</strong><strong>2200</strong> installation.<br />

• Migration – retain the existing queue manager data by following the migration<br />

procedure.<br />

Note: This option enables you to use the current <strong>MQ</strong>S<strong>2200</strong> application<br />

programs without changing or re-linking except <strong>for</strong> multi-byte data that is<br />

passed when using the user-defined message <strong>for</strong>mat capability. See “User-<br />

Defined Message Format Conversion” in Section 4, <strong>for</strong> more in<strong>for</strong>mation.<br />

2–2 3843 3744–002


Option A, Replacement<br />

This option can be used if<br />

Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

• You do not have any messages on your queues that need to be saved.<br />

• You either have an alternate way to recreate your objects such as <strong>OS</strong> <strong>2200</strong><br />

addstream or you do not wish to save your current objects.<br />

This option does not retain any <strong>MQ</strong>S<strong>2200</strong> queue managers, associated objects, or<br />

messages on local queues.<br />

1. Verify you have no necessary queue data on the local <strong>MQ</strong>S<strong>2200</strong> queues.<br />

2. Uninstall <strong>MQ</strong>S<strong>2200</strong>.<br />

3. Install W<strong>MQ</strong><strong>2200</strong> to both the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessors.<br />

4. Create user IDs <strong>and</strong> groups on the <strong>OS</strong> <strong>2200</strong> QProcessors.<br />

5. Create your queue managers <strong>and</strong> their associated objects.<br />

This process assumes you have a default BDI version of <strong>MQ</strong>S<strong>2200</strong> installed <strong>and</strong> are<br />

replacing it with a default BDI version of W<strong>MQ</strong><strong>2200</strong>. If this is not the case, you must<br />

build an alternate BDI version of W<strong>MQ</strong><strong>2200</strong> using the same BDIs as <strong>MQ</strong>S<strong>2200</strong>. Refer<br />

to "2.7 Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS" <strong>for</strong> more<br />

in<strong>for</strong>mation.<br />

Option B, Co-install<br />

This option allows you to run the new W<strong>MQ</strong><strong>2200</strong> product alongside the existing<br />

<strong>MQ</strong>S<strong>2200</strong> product. This scenario might be used if you want to run a test version of<br />

W<strong>MQ</strong><strong>2200</strong> while your <strong>MQ</strong>S<strong>2200</strong> remains in production.<br />

This option requires generating an alternate W<strong>MQ</strong><strong>2200</strong> installation with alternate BDIs<br />

by using the COMUS build process. The existing applications are still linked to<br />

<strong>MQ</strong>S<strong>2200</strong>. The new or alternate applications must be linked to use the new<br />

W<strong>MQ</strong><strong>2200</strong> BDIs. Refer to "2.7 Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s using<br />

COMUS" <strong>for</strong> more in<strong>for</strong>mation.<br />

Option C, Migration<br />

This option can be used if you migrate messages on local queues, user IDs, group IDs,<br />

or queue managers <strong>and</strong> their objects.<br />

This option has two different scenarios. The first scenario involves migrating from<br />

<strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong> within the same <strong>OS</strong> <strong>2200</strong> system. The second scenario<br />

involves migrating from <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong> on a different <strong>OS</strong> <strong>2200</strong> system.<br />

If you migrate within the same <strong>OS</strong> <strong>2200</strong> system, per<strong>for</strong>m the following steps:<br />

1. Install W<strong>MQ</strong><strong>2200</strong> to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

2. Migrate objects, local queue messages, user IDs, <strong>and</strong> group IDs automatically.<br />

3. Uninstall <strong>MQ</strong>S<strong>2200</strong>.<br />

4. Install W<strong>MQ</strong><strong>2200</strong> to the <strong>OS</strong> <strong>2200</strong> using the original <strong>MQ</strong>S<strong>2200</strong> BDIs.<br />

3843 3744–002 2–3


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

If you migrate to a different <strong>OS</strong> <strong>2200</strong> system, per<strong>for</strong>m the following steps:<br />

1. Install the complete W<strong>MQ</strong><strong>2200</strong> product to the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>and</strong> the<br />

<strong>OS</strong> <strong>2200</strong> using the original <strong>MQ</strong>S<strong>2200</strong> BDIs.<br />

2. Migrate objects, local queue messages, user IDs, <strong>and</strong> group IDs automatically.<br />

Note: The migration is simpler <strong>and</strong> less time consuming if you do not migrate<br />

objects <strong>and</strong> queue data <strong>and</strong> have an ECL runstream <strong>for</strong> creating the queue managers<br />

<strong>and</strong> their associated objects. If this is the case, consider option A, replacement.<br />

The following steps show how to migrate from <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong> without losing<br />

any objects such as queue managers, queues, channels, or any messages on existing<br />

local queues. It allows you to selectively transfer queue managers <strong>and</strong> their<br />

associated objects, <strong>and</strong> transfer any messages stored on their local queues.<br />

To migrate from <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong>, complete the following steps.<br />

Step 1: Install from the W<strong>MQ</strong><strong>2200</strong> product tape<br />

Use one of the following scenarios to install from the W<strong>MQ</strong><strong>2200</strong> product tape:<br />

Scenarios <strong>Installation</strong> Procedures<br />

Scenario one – migrating<br />

within the same <strong>OS</strong> <strong>2200</strong><br />

system<br />

Scenario two – migrating to a<br />

different <strong>OS</strong> <strong>2200</strong> system<br />

Install only the <strong>WebSphere</strong> <strong>MQ</strong> RPM (RPM Package<br />

Manager) files to the <strong>OS</strong> <strong>2200</strong> QProcessor using SOLAR.<br />

To do this, select mode Q$x where x is the designated<br />

<strong>OS</strong> <strong>2200</strong> QProcessor number as defined in the<br />

IC$*PROCESSORS file.<br />

Installing to the <strong>OS</strong> <strong>2200</strong> QProcessor alone does not<br />

provide a fully functional W<strong>MQ</strong><strong>2200</strong>, but instead creates<br />

an environment that allows you to migrate objects <strong>and</strong><br />

messages from <strong>MQ</strong>S<strong>2200</strong> to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

The full W<strong>MQ</strong><strong>2200</strong> product is installed in a later step.<br />

Install the complete W<strong>MQ</strong><strong>2200</strong> product to the new<br />

system from the release tape using SOLAR. To do this,<br />

• Select either W<strong>MQ</strong>$A or W<strong>MQ</strong>$B modes to install to<br />

the <strong>OS</strong> <strong>2200</strong>.<br />

• Select the Q$x mode to install the product on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor, where x is the designated<br />

<strong>OS</strong> <strong>2200</strong> QProcessor number.<br />

Refer to "2.2 Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong>," <strong>for</strong> in<strong>for</strong>mation on<br />

installing W<strong>MQ</strong><strong>2200</strong>.<br />

2–4 3843 3744–002


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

Step 2: Download the IBM SupportPac MO03: <strong>WebSphere</strong> <strong>MQ</strong> Queue Load<br />

/ Unload Utility<br />

This step requires the MO03 utility to load <strong>and</strong> unload messages off queues. The<br />

MO03 SupportPac can be found at the following URL:<br />

http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24009368&loc=en_US&cs=utf-8&lang=en<br />

Follow the instructions on the Web page of the above URL to download the MO03.zip<br />

file to your PC. After you have saved the zip file on your PC, unzip the files <strong>and</strong> transfer<br />

the qload file from the Linux Intel 64 folder to the /opt/mqm/supportpacs/qload<br />

directory on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

You can use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to transfer the qload<br />

utility by following these instructions:<br />

1. Log in to the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

2. Select Upload <strong>and</strong> Download.<br />

3. Under Files to upload, browse <strong>and</strong> select the Linux Intel 64 version of the qload<br />

utility.<br />

4. Under File or directory to upload to, browse to the /opt/mqm/supportpacs<br />

directory.<br />

5. Type mqm in the owned by user text box.<br />

6. Click Upload.<br />

7. Select Comm<strong>and</strong> Shell on the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

8. Type chmod a+x /opt/mqm/supportpacs/qload <strong>and</strong> click Execute<br />

comm<strong>and</strong> to set the correct permissions on the qload utility.<br />

Step 3: Prepare <strong>for</strong> queue manager, user ID, <strong>and</strong> group ID migration<br />

Per<strong>for</strong>m the following steps on the <strong>OS</strong> <strong>2200</strong> where <strong>MQ</strong>S<strong>2200</strong> resides <strong>for</strong> both<br />

migration scenarios.<br />

1. In order to migrate queue manager, user ID, <strong>and</strong> group ID in<strong>for</strong>mation, copy the<br />

fourth <strong>and</strong> seventh files from the W<strong>MQ</strong><strong>2200</strong> product tape. Catalog two files as<br />

shown in the following example:<br />

>@cat,p W<strong>MQ</strong>$RPM*TOOLS.,///500<br />

>@cat,p W<strong>MQ</strong>$RPM*<strong>MQ</strong>S$LIB.,///500<br />

Ensure that you use the file names W<strong>MQ</strong>$RPM*TOOLS <strong>and</strong><br />

W<strong>MQ</strong>$RPM*<strong>MQ</strong>S$LIB as they are referenced by the migration tools.<br />

2. Assign the product file tape <strong>and</strong> copy the tools <strong>and</strong> library file using the following<br />

example:<br />

>@asg,tf t.,vts,<br />

>@move t.,3<br />

>@copy,g t.,W<strong>MQ</strong>$RPM*<strong>MQ</strong>S$LIB.<br />

>@move t.,2<br />

3843 3744–002 2–5


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

>@copy,g t.,W<strong>MQ</strong>$RPM*TOOLS.<br />

>@free t.<br />

Step 4: Migrate user IDs <strong>and</strong> group IDs from <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong><br />

A user with an <strong>OS</strong> <strong>2200</strong> user ID mapped to root on the <strong>OS</strong> <strong>2200</strong> QProcessor (see "The<br />

<strong>OS</strong> <strong>2200</strong> QProcessor User Mappings" in Section 3, "<strong>Administration</strong>") must run the<br />

migrate/users SSG addstream. This creates a runstream in file mq*export$out <strong>for</strong><br />

exporting <strong>MQ</strong>S<strong>2200</strong> group/passwd files to the W<strong>MQ</strong><strong>2200</strong> user map file. The<br />

migrate/users addstream calls the exportusers utility to extract the password <strong>and</strong><br />

group files from <strong>MQ</strong>S<strong>2200</strong> <strong>and</strong> populate the password <strong>and</strong> group files on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

Per<strong>for</strong>m the following steps on the <strong>OS</strong> <strong>2200</strong> system where <strong>MQ</strong>S<strong>2200</strong> resides <strong>for</strong> both<br />

migration scenarios:<br />

1. Generate the migration addstream.<br />

Sample Execution<br />

The following is a sample execution of migrate/users.<br />

>@ADD W<strong>MQ</strong>$RPM*TOOLS.MIGRATE/USERS<br />

>Enter the qualifier of your <strong>MQ</strong>S<strong>2200</strong> subsystem, ><strong>MQ</strong>S$<br />

>I:002333 ASG complete.<br />

>****************************************<br />

>* 1. Check results in migrate$out. *<br />

>* 2. Optionally update mq*export$out. *<br />

>****************************************<br />

The addstream generates another addstream <strong>for</strong> the actual migration. Enter the<br />

<strong>MQ</strong>S<strong>2200</strong> file set qualifier in place of . Do the following:<br />

• View breakpoint file migrate$out <strong>and</strong> make sure no errors occurred during the<br />

execution of the addstream.<br />

• View <strong>and</strong> optionally update file mq*export$out. Check the generated<br />

addstream in file mq*export$out making sure the mquseradd comm<strong>and</strong>s are<br />

<strong>for</strong>matted correctly. You can use the shell comm<strong>and</strong> mquseradd to add a<br />

remote user ID on the <strong>OS</strong> <strong>2200</strong> QProcessor or an <strong>OS</strong> <strong>2200</strong> user mapping to a<br />

remote user ID. Refer to “Appendix F UNX Shell,” <strong>for</strong> a description of the<br />

<strong>for</strong>mat <strong>for</strong> the mquseradd comm<strong>and</strong>.<br />

Section “3.4.11 The <strong>OS</strong> <strong>2200</strong> QProcessor User Mappings" has a complete<br />

description of the <strong>OS</strong> <strong>2200</strong> QProcessor user mappings. A remote user account<br />

is a user account created on the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>for</strong> purposes of OAM<br />

en<strong>for</strong>cement. An <strong>OS</strong> <strong>2200</strong> user mapping is an entry in the user map table that<br />

maps an <strong>OS</strong> <strong>2200</strong> user to an <strong>OS</strong> <strong>2200</strong> QProcessor account.<br />

2–6 3843 3744–002


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

If there are any non-<strong>OS</strong> <strong>2200</strong> users in the mq*export$out file, change the<br />

mquseradd option from O (<strong>OS</strong><strong>2200</strong> user ID) to R (remote user ID). For<br />

example, if the mquseradd comm<strong>and</strong> is migrating an <strong>MQ</strong>S<strong>2200</strong> user ID that<br />

represents a Windows user ID, change the mquseradd comm<strong>and</strong> to use the -R<br />

option. You can add a Windows user ID to the <strong>MQ</strong>S<strong>2200</strong> /etc/passwd file so<br />

that you can configure your OAM-enabled <strong>MQ</strong>S<strong>2200</strong> queue manager to allow<br />

access through the client connection to the <strong>for</strong>eign user ID.<br />

The following example shows how to change an incorrect mquseradd<br />

comm<strong>and</strong>:<br />

Change from: mquseradd -O -g mqm admin<br />

Change to: mquseradd -R -g mqm admin<br />

2. Execute the generated runstream on the system.<br />

Use one of the following scenarios to execute the generated runstream.<br />

Scenarios Execution Procedures<br />

Scenario one – migrating<br />

within the same <strong>OS</strong> <strong>2200</strong><br />

system<br />

Scenario two – migrating to<br />

a different <strong>OS</strong> <strong>2200</strong> system<br />

Add the wmq-migrate/users runstream out of the<br />

W<strong>MQ</strong>$RPM*TOOLS file specifying the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

designation number in place of .<br />

Example:<br />

>@add W<strong>MQ</strong>$RPM*TOOLS.W<strong>MQ</strong>-MIGRATE/USERS<br />

>Enter QProcessor designation number, >1<br />

>I:002333 CAT complete.<br />

>I:002333 ASG complete.<br />

>*** Check results in P$MIGUSER. ***<br />

1. Transfer the mq*export$out file from the <strong>MQ</strong>S<strong>2200</strong><br />

system to the system to which you are migrating.<br />

Ensure that you use the filename mq*export$out as this<br />

file is called by W<strong>MQ</strong>-MIGRATE/USERS.<br />

2. Add the wmq-migrate/users runstream out of the<br />

installed W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS file while specifying the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor designation number in place of .<br />

Example:<br />

3. Verify the results in P$MIGUSER.<br />

>@add W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS.W<strong>MQ</strong>-MIGRATE/USERS<br />

>Enter QProcessor designation number, >1<br />

>I:002333 CAT complete.<br />

>I:002333 ASG complete.<br />

>*** Check results in P$MIGUSER. ***<br />

Check the breakpoint file P$MIGUSER to make sure that the <strong>MQ</strong>S<strong>2200</strong> user IDs<br />

are successfully added to the <strong>OS</strong> <strong>2200</strong> QProcessor. Look at the output of<br />

mquserlist -O (the <strong>OS</strong> <strong>2200</strong> user IDs) <strong>and</strong> mquserlist –R (the remote user IDs).<br />

3843 3744–002 2–7


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

Example of a valid mquserlist –O:<br />

>-<strong>MQ</strong>S-:root:root<br />

>INSTALL:root:root<br />

><strong>MQ</strong>M:mqm:mqm<br />

>CLE:IC-CLE:mqm<br />

Example of a valid mquserlist –R:<br />

>root<br />

>mqm<br />

Step 5: Create the object <strong>and</strong> data migration addstream using the<br />

migrate/qmgrs SSG skeleton<br />

The user running the migrate/qmgrs SSG needs to be in the mqm group. Ensure that<br />

the user applications are not putting or receiving messages. Also, enable all the<br />

queues <strong>for</strong> put <strong>and</strong> get.<br />

The following table identifies the input required by the migrate/qmgrs skeleton.<br />

Input Description Example<br />

<strong>MQ</strong>S<strong>2200</strong> file set qualifier wmq$<br />

QProcessor designation number 1<br />

The IP address of the <strong>OS</strong> <strong>2200</strong> hosting the<br />

<strong>MQ</strong>S<strong>2200</strong> installation<br />

The total number of queue managers you<br />

want to migrate<br />

The name of the first queue manager qmgr1<br />

The name of the second queue manager qmgr2<br />

The port number used by the listener <strong>for</strong><br />

<br />

The port number used by the listener <strong>for</strong><br />

<br />

191.82.923.283<br />

2–8 3843 3744–002<br />

2<br />

6001<br />

6002<br />

While creating the data migration addstream, if you answer “N” to the “Are you<br />

migrating <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong> on the same <strong>OS</strong> <strong>2200</strong> system” query, you will get<br />

the following additional input:<br />

Input Description Example<br />

Tape number to store migration files T09643<br />

Tape device such as HICL, HICM, or VTS HICM<br />

Tape assign options such as TJ or TF TF<br />

The tape label name Tape


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

For the migration, the new W<strong>MQ</strong><strong>2200</strong> queue manager uses a client connection to the<br />

old <strong>MQ</strong>S<strong>2200</strong> queue manager to migrate messages. This requires the <strong>MQ</strong>S<strong>2200</strong><br />

queue manager to have a client channel (SVRCONN) <strong>and</strong> a listener to accept the<br />

connection from the new queue manager. Because of this, a SVRCONN channel is<br />

defined under the <strong>MQ</strong>S<strong>2200</strong> queue manager. Start a listener at an identified port, if not<br />

already started. This port number can be a free port number or a port number of a<br />

currently running listener <strong>for</strong> the queue manager in question. The SAVEQMGR utility is<br />

also used to save <strong>MQ</strong>S<strong>2200</strong> runmqsc definitions <strong>for</strong> migration to W<strong>MQ</strong><strong>2200</strong>.<br />

• Scenario one - migrating within the same <strong>OS</strong> <strong>2200</strong> system:<br />

Following is a sample execution of creating a data migration addstream.<br />

>@ADD W<strong>MQ</strong>$RPM*TOOLS.MIGRATE/QMGRS<br />

>Are you migrating <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong> on the same <strong>OS</strong> <strong>2200</strong> system<br />

/N?>Y<br />

>Enter the qualifier of your <strong>MQ</strong>S<strong>2200</strong> subsystem, ><br />

>Enter QProcessor designation number, ><br />

>Enter your <strong>MQ</strong>S<strong>2200</strong> host IP address><br />

>Enter total number of queue manager(s) you want to<br />

migrate:><br />

>Enter a queue manager name that you want to migrate.><br />

>Do have a listener running on <strong>MQ</strong>S<strong>2200</strong> <strong>for</strong> queue manager<br />

'qmgr1'that can be used <strong>for</strong> migration y/?>N<br />

>Please specify a free port number that can be used <strong>for</strong> migration<br />

by the listener <strong>for</strong> queue manager 'qmgr1':><br />

>Enter a queue manager name that you want to migrate.><br />

>Do have a listener running on <strong>MQ</strong>S<strong>2200</strong> <strong>for</strong> queue manager<br />

'qmgr2'that can be used <strong>for</strong> migration y/?>Y<br />

>Please specify the port number being used by the <strong>MQ</strong>S<strong>2200</strong> listener<br />

<strong>for</strong> queue manager 'qmgr2' you would like to use:><br />

*** Add stream placed in tpf$.migrate/qmgrs ***<br />

• Scenario two – migrating to a different <strong>OS</strong> <strong>2200</strong> system.<br />

The following addstream generates a program file <strong>MQ</strong>*<strong>MQ</strong>S<strong>2200</strong>MIG that is<br />

transferred to the <strong>OS</strong> <strong>2200</strong> system where the new W<strong>MQ</strong><strong>2200</strong> installation resides.<br />

This program file can be transferred by tape or by any other method such as FTP.<br />

If you want to transfer it using a tape, you must know the tape number be<strong>for</strong>e<br />

executing the addstream.<br />

Following is a sample execution of creating a data migration addstream.<br />

>@ADD W<strong>MQ</strong>$RPM*TOOLS.MIGRATE/QMGRS<br />

>Are you migrating <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong> on the same <strong>OS</strong> <strong>2200</strong> system<br />

/N?>N<br />

>Do you wish to transfer migration files using tape /N?>Y<br />

>Please enter tape number (Reel Id)><br />

>Please enter tape device Type HICL/HICM><br />

>Please enter tape assign Options (/TF)><br />

>Please enter the tape label name.><br />

>Enter the qualifier of your <strong>MQ</strong>S<strong>2200</strong> subsystem, ><br />

>Enter QProcessor designation number, ><br />

3843 3744–002 2–9


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

>Enter your <strong>MQ</strong>S<strong>2200</strong> host IP address ><br />

>Enter total number of queue manager(s) you want to<br />

migrate:><br />

>Enter a queue manager name that you want to migrate.><br />

>Do have a listener running on <strong>MQ</strong>S<strong>2200</strong> <strong>for</strong> queue manager<br />

'qmgr1'that can be used <strong>for</strong> migration y/?>N<br />

>Please specify a free port number that can be used <strong>for</strong> migration<br />

by the listener <strong>for</strong> queue manager 'qmgr1':><br />

>Enter a queue manager name that you want to migrate.><br />

>Do have a listener running on <strong>MQ</strong>S<strong>2200</strong> <strong>for</strong> queue manager<br />

'qmgr2'that can be used <strong>for</strong> migration y/?>Y<br />

>Please specify the port number being used by the <strong>MQ</strong>S<strong>2200</strong> listener<br />

<strong>for</strong> queue manager 'qmgr2' you would like to use:><br />

*** Add stream placed in tpf$.migrate/qmgrs ***<br />

Step 6: Review the resulting migration addstream, TPF$.migrate/qmgrs<br />

The migrate/qmgrs addstream is saved temporarily in TPF$. Save the migrate/qmgrs<br />

addstream permanently in a user file <strong>and</strong> review. Unless edited <strong>and</strong> modified, the<br />

addstream saves the objects of all queue managers <strong>and</strong> all queue data.<br />

Step 7: Terminate all user applications that use the <strong>MQ</strong>S API<br />

While migrating objects <strong>and</strong> data, an active application cannot issue <strong>MQ</strong>PUT calls to<br />

put messages on queues or <strong>MQ</strong>GET calls to retrieve messages from queues.<br />

Step 8: Run the object migration addstream<br />

Use one of the following scenarios to run the object migration addstream.<br />

Scenarios Execution Procedures<br />

Scenario one – migrating<br />

within the same <strong>OS</strong> <strong>2200</strong><br />

system<br />

Example<br />

>@add tpf$.migrate/qmgrs<br />

Note: Although the previous example shows the execution<br />

of migrate/qmgrs out of tpf$, it is recommended that you<br />

save <strong>and</strong> execute the runstream out of your own user file.<br />

2–10 3843 3744–002


Scenarios Execution Procedures<br />

Scenario two – migrating to<br />

a different <strong>OS</strong> <strong>2200</strong> system Example<br />

>@add tpf$.migrate/qmgrs<br />

Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

Note: Although the previous example shows the execution<br />

of migrate/qmgrs out of tpf$, it is recommended that you<br />

save <strong>and</strong> execute the runstream out of your own user file.<br />

If you use a tape to transfer the migration file, copy the<br />

migration file <strong>MQ</strong>*<strong>MQ</strong>S<strong>2200</strong>MIG off the tape to the<br />

W<strong>MQ</strong><strong>2200</strong> system.<br />

Example:<br />

>@cat,p <strong>MQ</strong>*<strong>MQ</strong>S<strong>2200</strong>MIG.,///99999<br />

>@asg,tf t.,HICM,<br />

>@copy,g t.,<strong>MQ</strong>*<strong>MQ</strong>S<strong>2200</strong>MIG.<br />

>@free t.<br />

If you use any other method to transfer the migration file,<br />

make sure to use the filename ‘<strong>MQ</strong>*<strong>MQ</strong>S<strong>2200</strong>MIG’.<br />

Once you copy file <strong>MQ</strong>*<strong>MQ</strong>S<strong>2200</strong>MIG to the different<br />

<strong>OS</strong> <strong>2200</strong> system, add the wmq-migrate/qmgrs.SSG skeleton<br />

in the W<strong>MQ</strong><strong>2200</strong> system <strong>and</strong> verify the result.<br />

Example:<br />

Step 9: Verify the migration results<br />

>@ADD W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS.W<strong>MQ</strong>-MIGRATE/QMGRS<br />

The output of the migration addstream is captured in the P$MIGRATE file.<br />

Be<strong>for</strong>e completing the installation make sure you do the following:<br />

• Review the file <strong>for</strong> possible errors be<strong>for</strong>e continuing.<br />

• Verify that the migration of all objects from <strong>MQ</strong>S<strong>2200</strong> to W<strong>MQ</strong><strong>2200</strong> is successful<br />

by ensuring no errors occur on queue manager, queues, <strong>and</strong> channels creation.<br />

• Ensure that all messages are migrated to the <strong>OS</strong> <strong>2200</strong> QProcessor if you have any<br />

queues with messages. For each queue migrated from <strong>MQ</strong>S<strong>2200</strong>, the results of<br />

the write function of the message data to the <strong>OS</strong> <strong>2200</strong> QProcessor file is similar to<br />

the following:<br />

Read - Files: 0 Messages: 100 Bytes: 102400<br />

Written - Files: 1 Messages: 100 Bytes: 102400<br />

• The <strong>OS</strong> <strong>2200</strong> QProcessor file data is then written to the queue on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. The output is similar to the following:<br />

Read - Files: 1 Messages: 100 Bytes: 102400<br />

Written - Files: 0 Messages: 100 Bytes: 102400<br />

3843 3744–002 2–11


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

• Ensure there are no errors generated by the QLOAD. For example,<br />

<strong>MQ</strong>CONN on object 'qmgr_1' returned 2058 QMgr name error.<br />

If you use OAM on your <strong>MQ</strong>S<strong>2200</strong>, your queue manager authorities are migrated<br />

to the <strong>OS</strong> <strong>2200</strong> QProcessor. The amqoamd comm<strong>and</strong> is executed in <strong>MQ</strong>S<strong>2200</strong>,<br />

which creates authorization definitions <strong>for</strong> each queue manager objects (setmqaut<br />

comm<strong>and</strong>s). These setmqaut comm<strong>and</strong>s are then executed <strong>for</strong> each queue<br />

manager in the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

• Verify that all the setmqaut comm<strong>and</strong>s return the following message:<br />

The setmqaut comm<strong>and</strong> completed successfully.<br />

Step 10: Complete the installation<br />

Use one of the following scenarios to complete the installation.<br />

Scenarios Execution Procedures<br />

Scenario one – migrating<br />

within the same <strong>OS</strong> <strong>2200</strong><br />

system<br />

Scenario two – migrating to<br />

a different <strong>OS</strong> <strong>2200</strong> system<br />

To complete the installation, per<strong>for</strong>m the following:<br />

1. Terminate all <strong>MQ</strong>S<strong>2200</strong> batch runs including queue<br />

managers <strong>and</strong> listeners.<br />

2. Ensure that the SOLAR-installed <strong>MQ</strong>S<strong>2200</strong> files are not<br />

assigned by anyone.<br />

3. It is recommended that you do the following:<br />

• Make a backup copy of the System Services files.<br />

• Backup your queue manager data by executing<br />

<strong>MQ</strong>SAVE utility from the <strong>MQ</strong>S$EXE file. If the<br />

migration fails <strong>and</strong> you have to revert to the<br />

<strong>MQ</strong>S<strong>2200</strong> installation, restore the System Services<br />

files or execute the <strong>MQ</strong>LOAD to restore the queue<br />

manager data.<br />

4. Using SOLAR, uninstall <strong>MQ</strong>S<strong>2200</strong> to free up its BDIs <strong>for</strong><br />

use by W<strong>MQ</strong><strong>2200</strong>, when all the objects <strong>and</strong> queue data<br />

are transferred to the W<strong>MQ</strong><strong>2200</strong>.<br />

5. Install W<strong>MQ</strong><strong>2200</strong> to the <strong>OS</strong> <strong>2200</strong> using the original<br />

<strong>MQ</strong>S<strong>2200</strong> BDIs.<br />

Use installation mode W<strong>MQ</strong>$A (or W<strong>MQ</strong>$B if the BIS<br />

interface is required) to install W<strong>MQ</strong><strong>2200</strong> to the <strong>OS</strong> <strong>2200</strong><br />

<strong>and</strong> complete the product installation.<br />

Refer to "2.2 Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath<br />

<strong>OS</strong> <strong>2200</strong>" <strong>for</strong> in<strong>for</strong>mation on how to install W<strong>MQ</strong><strong>2200</strong> to<br />

the <strong>OS</strong> <strong>2200</strong>. By reinstalling W<strong>MQ</strong><strong>2200</strong> with the original<br />

<strong>MQ</strong>S<strong>2200</strong> BDIs, you do not have to relink your<br />

applications.<br />

The installation is complete. No further action is required.<br />

2–12 3843 3744–002


Upgrading from a Previous Level of W<strong>MQ</strong><strong>2200</strong><br />

Preparation<br />

Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

If you are also updating your Linux System Software image make sure to use one of<br />

the following options to save your queue manager objects <strong>and</strong> data be<strong>for</strong>e updating<br />

your image <strong>and</strong> your W<strong>MQ</strong><strong>2200</strong> level.<br />

Option 1: Backup <strong>and</strong> restore your queue manager objects <strong>and</strong> data using<br />

UNX shell comm<strong>and</strong>s<br />

1. Backup your queue manager objects <strong>and</strong> data using the mqsave UNX shell<br />

comm<strong>and</strong>.<br />

2. Update the Linux System Software image.<br />

3. Install new level of W<strong>MQ</strong><strong>2200</strong>.<br />

4. Restore your queue manager objects using the mqload UNX shell comm<strong>and</strong>.<br />

Option 2: Use the <strong>OS</strong> <strong>2200</strong> <strong>Administration</strong> Console Filesystem Backup<br />

feature<br />

1. Use the <strong>OS</strong> <strong>2200</strong> <strong>Administration</strong> Console Filesystem Backup module to backup a<br />

profile that includes your /var/mqm directory to the <strong>OS</strong> <strong>2200</strong> or an external disk.<br />

2. Update the Linux System Software.<br />

3. Install new level of W<strong>MQ</strong><strong>2200</strong>.<br />

4. Restore your queue manager objects using the Filesystem Backup module.<br />

Installing a new level of W<strong>MQ</strong><strong>2200</strong> first removes the <strong>MQ</strong>S subsystem as well as the<br />

previously installed <strong>WebSphere</strong> <strong>MQ</strong> RPM on the <strong>OS</strong> <strong>2200</strong> QProcessor. Installing a new<br />

level of W<strong>MQ</strong><strong>2200</strong> does not affect your queue manager objects or queue data. In<br />

other words, the content of /var/mqm is not removed.<br />

Choose one of the following procedures depending upon whether or not you are<br />

upgrading a HA environment. The <strong>OS</strong> <strong>2200</strong> QProcessor provides a clustering capability<br />

<strong>for</strong> high availability known as HA cluster. Refer to Section 6, "High Availability," <strong>for</strong><br />

more in<strong>for</strong>mation.<br />

Non-HA environment<br />

When upgrading to a new W<strong>MQ</strong><strong>2200</strong> level you must first:<br />

1. Terminate all user applications that use the <strong>MQ</strong>I API.<br />

2. Terminate all W<strong>MQ</strong><strong>2200</strong> queue managers <strong>and</strong> listeners using one of the following<br />

methods<br />

• Use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to stop all your queue<br />

managers <strong>and</strong> listeners<br />

Or<br />

3843 3744–002 2–13


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

• Use the UNX dem<strong>and</strong> shell as follows:<br />

a. Call the UNX dem<strong>and</strong> shell @wmq$*mqs$exe.unx.<br />

b. Use the dspmq comm<strong>and</strong> to display the state of all the queue managers<br />

on the system.<br />

c. Stop any listeners associated with the queue managers, using the<br />

comm<strong>and</strong>:<br />

endmqlsr -m QMgrName<br />

d. Use the endmqm comm<strong>and</strong> to stop all running queue managers.<br />

e. Ensure that you have stopped all of the necessary <strong>WebSphere</strong> <strong>MQ</strong><br />

processes by executing:<br />

ps -ef | more<br />

f. Check that there are no processes listed that are running comm<strong>and</strong> lines<br />

beginning amq or runmq.<br />

Note: The mqstatus daemon keyin can also be used to see if any<br />

<strong>WebSphere</strong> <strong>MQ</strong> processes are active. Refer to Section 7, "Troubleshooting,"<br />

<strong>for</strong> more in<strong>for</strong>mation on using Daemon Keying. See Appendix F, "UNX Shell,"<br />

<strong>for</strong> more in<strong>for</strong>mation on using the UNX shell.<br />

3. Shutdown the W<strong>MQ</strong><strong>2200</strong> daemon - @@cons wmq shutdown.<br />

4. Install the new level of W<strong>MQ</strong><strong>2200</strong>. Refer to "2.2 Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong><br />

ClearPath <strong>OS</strong> <strong>2200</strong>" <strong>for</strong> more details.<br />

5. On completing the installation, start your queue managers, listeners, <strong>and</strong> other<br />

objects. For example, channels.<br />

Ensure none of the SOLAR-installed W<strong>MQ</strong><strong>2200</strong> files are assigned to anyone.<br />

Specifically, check the wmq$*mqs$exe file <strong>and</strong> wmq$*mqs$om files.<br />

HA environment<br />

1. Terminate all user applications that use the <strong>MQ</strong>I API.<br />

2. On the cluster node that is running <strong>MQ</strong> resources, click Stop in the Manage High<br />

Availability module of the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console <strong>for</strong> all<br />

queue managers <strong>and</strong> their listeners. This will stop all <strong>MQ</strong> resources.<br />

3. Use SOLAR to install the W<strong>MQ</strong><strong>2200</strong> update to both of the cluster nodes <strong>and</strong> the<br />

<strong>OS</strong> <strong>2200</strong>.<br />

a. Use SOLAR to register the W<strong>MQ</strong><strong>2200</strong> install tape.<br />

b. Use SOLAR to install the registered tape by selecting the product modes <strong>for</strong><br />

the systems you want to install. Generally, this will be mode W<strong>MQ</strong>$A <strong>for</strong> the<br />

<strong>OS</strong> <strong>2200</strong> <strong>and</strong> modes Q$1 <strong>and</strong> Q$2 <strong>for</strong> the <strong>OS</strong> <strong>2200</strong> QProcessors. Your actual<br />

mode selections will depend upon the <strong>OS</strong> <strong>2200</strong> mode selection <strong>and</strong> the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor Designation numbers used <strong>for</strong> your initial installation.<br />

2–14 3843 3744–002


Be<strong>for</strong>e You Install W<strong>MQ</strong><strong>2200</strong><br />

4. On completing the installation, on the same cluster node that is running <strong>MQ</strong><br />

resources:<br />

a. Click Start in the Manage High Availability module of the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console <strong>for</strong> all queue managers <strong>and</strong> their listeners.<br />

b. Start any other necessary <strong>MQ</strong> objects. For example, channels.<br />

5. Restart the user applications.<br />

Ensure none of the SOLAR-installed W<strong>MQ</strong><strong>2200</strong> files are assigned to anyone.<br />

Specifically, check the wmq$*mqs$exe file <strong>and</strong> wmq$*mqs$om files.<br />

Refer to "2.2 Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong>" <strong>for</strong> more details.<br />

2.1.3. <strong>MQ</strong> Per<strong>for</strong>mance Considerations<br />

When running with an HA configuration or significant message traffic, a decision must<br />

be made prior to the installation of W<strong>MQ</strong><strong>2200</strong> if it is appropriate to use internal drives<br />

or if external drives are required. The main factors involved in this decision are the<br />

message traffic rate in messages per second, average size of message, <strong>and</strong> their<br />

arrival rate.<br />

As a general per<strong>for</strong>mance guideline, the higher your message traffic rate in an HA<br />

environment, the more likely the use of external disks will be required.<br />

Consider as an example the following test case of persistent messages each of 2K<br />

bytes in size. The test driver used multiple threads that could vary the delay time or<br />

think time between messages being submitted. In the following table, the first test<br />

case used zero think time between messages that were submitted. The second test<br />

case result included a 5 millisecond pause between messages that were submitted.<br />

The results are in messages h<strong>and</strong>led per second.<br />

Drives Zero Think<br />

Time<br />

5ms Think<br />

Time<br />

Internal drives 2515 479<br />

Internal drives HA enabled 112 107<br />

External drives 2479 479<br />

External drives HA enabled 2450 479<br />

The base configuration <strong>for</strong> internal disks is software RAID 1 with LVM <strong>and</strong> SNAPSHOT<br />

enabled. Internal disks in an HA configuration use DRBD to mirror the disks between<br />

systems. The SAN used <strong>for</strong> this test consisted of disks located in an EMC CX/3<br />

subsystem using 4 Gb fibre channel connections. The disks in the EMC subsystem<br />

were configured using hardware RAID10 with LVM <strong>and</strong> SNAPSHOT enabled.<br />

As in all tests of this type, the individual results are different based on the<br />

environment.<br />

3843 3744–002 2–15


Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong><br />

The following are the conclusions drawn from the example:<br />

• Per<strong>for</strong>mance using internal or external disks is roughly equivalent in an HA or<br />

non-HA environment.<br />

• The use of DRBD limits message throughput significantly compared to external<br />

disks in an HA environment. If you expect significant message traffic, external<br />

disks are required.<br />

2.2. Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath<br />

<strong>OS</strong> <strong>2200</strong><br />

Install W<strong>MQ</strong><strong>2200</strong> from the release tape using the SOLAR processor. W<strong>MQ</strong><strong>2200</strong> is<br />

contained on a labeled tape, so be sure to specify tape <strong>for</strong>mat TF instead of defaulting<br />

to the TJ <strong>for</strong>mat. A complete installation of the product per<strong>for</strong>ms software installation<br />

on both the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessor. W<strong>MQ</strong><strong>2200</strong> has two <strong>OS</strong> <strong>2200</strong><br />

installation modes, <strong>and</strong> eight <strong>OS</strong> <strong>2200</strong> QProcessor installation modes as described in<br />

the following text.<br />

<strong>Installation</strong> Modes<br />

Mode W<strong>MQ</strong>$A is the default installation mode <strong>and</strong> installs a set of seven <strong>OS</strong> <strong>2200</strong><br />

files.<br />

Mode W<strong>MQ</strong>$B also installs the same set of seven files. In addition, Mode W<strong>MQ</strong>$B<br />

installs two files that provide the basic mode interface <strong>for</strong> the Business In<strong>for</strong>mation<br />

Server <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> product.<br />

In addition, eight installation modes exist <strong>for</strong> installing to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

<strong>Installation</strong> modes Q$1, Q$2, Q$3, Q$4, Q$5, Q$6, Q$7, <strong>and</strong> Q$8 correspond to the<br />

eight possible Specialty Engines as configured in the IC$*Processors file <strong>and</strong> managed<br />

by the ICADMIN utility. Generally you will be using mode Q$1. In an HA environment,<br />

you will typically be using modes Q$1 <strong>and</strong> Q$2. Refer to the ClearPath Specialty<br />

Engine <strong>for</strong> <strong>OS</strong> <strong>2200</strong> Configuration Guide <strong>for</strong> more details on ICADMIN.<br />

For each of the <strong>OS</strong> <strong>2200</strong> QProcessor installation modes (Q$1-Q$8), the following two<br />

files are installed to the <strong>OS</strong> <strong>2200</strong>.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$RPM –Set of RPM files that are installed on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. This file is removed after the installation is complete.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$QP – Set of elements that control the installation <strong>and</strong> removal of<br />

the <strong>WebSphere</strong> <strong>MQ</strong> RPM files on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

2–16 3843 3744–002


File Set Qualifier<br />

Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong><br />

Unless generating an alternate W<strong>MQ</strong><strong>2200</strong> installation, you will be using the default<br />

qualifier W<strong>MQ</strong>$. Refer to "2.7 Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using<br />

COMUS," <strong>for</strong> more in<strong>for</strong>mation on generating an alternate W<strong>MQ</strong><strong>2200</strong> installation at<br />

your site.<br />

<strong>Installation</strong> to the <strong>OS</strong> <strong>2200</strong> QProcessor is done through IC<strong>2200</strong>. All installations to the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor using a tape with the default qualifier, W<strong>MQ</strong>$, are preconfigured<br />

in the IC$PROCESSOR file to install on host QPRM1 as described in the following text.<br />

The Interconnect<br />

The IC<strong>2200</strong> software maintains a list of devices, associated W<strong>MQ</strong><strong>2200</strong> software<br />

qualifiers, <strong>and</strong> other configuration in<strong>for</strong>mation in the IC$*PROCESSORS public data file.<br />

The last field of each entry in the IC$*Processors file defines the qualifier of the<br />

W<strong>MQ</strong><strong>2200</strong> files installed on the <strong>OS</strong> <strong>2200</strong>. By default, the qualifier is W<strong>MQ</strong>$. The host<br />

field identifies the <strong>OS</strong> <strong>2200</strong> QProcessor, where the <strong>WebSphere</strong> <strong>MQ</strong> RPM files are<br />

installed during an installation from a product tape using the associated W<strong>MQ</strong><strong>2200</strong><br />

qualifier.<br />

Following is an example of what the ICADMIN utility displays (using default values),<br />

when responding to the list_processor comm<strong>and</strong>:<br />

Processor Managed Processor Product<br />

Type Num IC-Mode host:port Qualifier\Mode<br />

JPROCESSOR 1 DEFAULT JPRM1:22719<br />

QPROCESSOR 1 DEFAULT QPRM1:22719 W<strong>MQ</strong>$<br />

Any installation from the Unisys supplied product tape uses a default qualifier of<br />

W<strong>MQ</strong>$. This is true <strong>for</strong> all installation modes (W<strong>MQ</strong>$A, W<strong>MQ</strong>$B, <strong>and</strong> Q$1 - Q$8). In<br />

this example, any installation to an <strong>OS</strong> <strong>2200</strong> QProcessor from the product tape using<br />

the default qualifier, W<strong>MQ</strong>$, installs the RPM files on host QPRM1.<br />

The Solar <strong>Installation</strong><br />

When installing from the default product tape, SOLAR displays the following screen<br />

<strong>for</strong> W<strong>MQ</strong><strong>2200</strong>:<br />

Name Level Mode<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 W<strong>MQ</strong>$A<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 W<strong>MQ</strong>$B<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$1<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$2<br />

3843 3744–002 2–17


Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong><br />

Name Level Mode<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$3<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$4<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$5<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$6<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$7<br />

< > W<strong>MQ</strong><strong>2200</strong> 6R1 Q$8<br />

Although installing to the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessor can be done in two<br />

different SOLAR sessions, it will typically be done in one. Select mode W<strong>MQ</strong>$A <strong>for</strong> a<br />

default installation or W<strong>MQ</strong>$B <strong>for</strong> an installation supporting the basic mode interface,<br />

<strong>and</strong> select one of the eight modes <strong>for</strong> installing to the <strong>OS</strong> <strong>2200</strong> QProcessor. This will<br />

typically be Q$1.<br />

As described earlier, the IC$*PROCESSORS file (administered by the ICADMIN tool)<br />

controls the mapping of the chosen qualifier to an <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Note: If configuring a st<strong>and</strong>by device in an HA environment, select two <strong>OS</strong> <strong>2200</strong><br />

QProcessor modes to install on multiple <strong>OS</strong> <strong>2200</strong> QProcessors.<br />

Results of <strong>Installation</strong><br />

For both modes W<strong>MQ</strong>$A <strong>and</strong> W<strong>MQ</strong>$B, a successful installation of the W<strong>MQ</strong><strong>2200</strong><br />

product catalogs <strong>and</strong> populates the following files in the <strong>OS</strong> <strong>2200</strong> environment:<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$LIB.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$RUN.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$OM.<br />

A successful mode W<strong>MQ</strong>$B installation also catalogs <strong>and</strong> populates these two files:<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$BMCOMMON.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>S$BMLIB.<br />

2–18 3843 3744–002


Installing <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong><br />

The mode W<strong>MQ</strong>$A installation produces an entry like the following in the<br />

SYS$*DATA$.CO$INSTALL$/COMUS$ element:<br />

INSTALL ;<br />

PRODUCT,W<strong>MQ</strong><strong>2200</strong>,6R1 ;<br />

MODE,W<strong>MQ</strong>$A,DEFAULT ;<br />

TIME,100217,131927 ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$LIB(1),9999,PACK,PREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE(1),20000,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$RUN(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$OM(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

CBD,0405477,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),<strong>MQ</strong>S-SSDEF$,'''',''FIXED GATE SUBSYSTEM'' ;<br />

SSDEF,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),<strong>MQ</strong>S-SSDEF$,FIXED_GATE ;<br />

CBD,0400436,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),UNX-SSDEF$,'''',''FIXED GATE SUBSYSTEM'' ;<br />

SSDEF,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),UNX-SSDEF$,FIXED_GATE ;<br />

STYLE ;<br />

PACKAGE,W<strong>MQ</strong><strong>2200</strong>,6R1,T12614,W<strong>MQ</strong><strong>2200</strong>,6R1 ;<br />

REGISTER,REG_CBD,'''','''','''' ;<br />

$FIN<br />

The mode W<strong>MQ</strong>$B installation produces an entry like the following in the<br />

SYS$*DATA$.CO$INSTALL$/COMUS$ element:<br />

INSTALL ;<br />

PRODUCT,W<strong>MQ</strong><strong>2200</strong>,6R1 ;<br />

MODE,W<strong>MQ</strong>$A,DEFAULT ;<br />

TIME,100217,131927 ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$LIB(1),9999,PACK,PREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE(1),20000,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$RUN(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$OM(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$BMCOMMON(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$BMLIB(1),9999,PACK,PREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

CBD,0405477,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),<strong>MQ</strong>S-SSDEF$,'''',''FIXED GATE SUBSYSTEM'' ;<br />

SSDEF,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),<strong>MQ</strong>S-SSDEF$,FIXED_GATE ;<br />

CBD,0400436,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),UNX-SSDEF$,'''',''FIXED GATE SUBSYSTEM'' ;<br />

SSDEF,W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON(1),UNX-SSDEF$,FIXED_GATE ;<br />

CBD,0404777,W<strong>MQ</strong>$*<strong>MQ</strong>S$BMCOMMON(1),BM$<strong>MQ</strong>SSSDEF$,'''',;<br />

''FIXED GATE SUBSYSTEM'' ;<br />

SSDEF,W<strong>MQ</strong>$*<strong>MQ</strong>S$BMCOMMON(1),BM$<strong>MQ</strong>SSSDEF$,FIXED_GATE ;<br />

STYLE ;<br />

PACKAGE,W<strong>MQ</strong><strong>2200</strong>,6R1,T12614,W<strong>MQ</strong><strong>2200</strong>,6R1 ;<br />

REGISTER,REG_CBD,'''','''','''' ;<br />

$FIN<br />

3843 3744–002 2–19


Verifying the <strong>Installation</strong> <strong>and</strong> Configuration<br />

A mode Q$1 installation catalogs file <strong>MQ</strong>S$Q1 <strong>and</strong> produces an entry like the following<br />

in the SYS$*DATA$.CO$INSTALL$/COMUS$ element:<br />

INSTALL ;<br />

PRODUCT,W<strong>MQ</strong><strong>2200</strong>,6R1 ;<br />

MODE,Q$1 ;<br />

TIME,100217,131928 ;<br />

FILE,W<strong>MQ</strong>$*<strong>MQ</strong>S$Q1(1),9999,PACK,NOPREP,NOROLLOUT,WRITEABLE,FIXED_NAME ;<br />

DEINSTALL_ROUTINE,W<strong>MQ</strong>$*<strong>MQ</strong>S$Q1(1),Q$1/REMOVE,0 ;<br />

STYLE ;<br />

PACKAGE,W<strong>MQ</strong><strong>2200</strong>,6R1,T12614,W<strong>MQ</strong><strong>2200</strong>,6R1 ;<br />

REGISTER,'''','''','''','''' ;<br />

$FIN<br />

For the installation, verification, <strong>and</strong> product usage to be successful, the file<br />

W<strong>MQ</strong>$*<strong>MQ</strong>S$COMMON, containing the subsystems required by the product must<br />

have the correct owner if you are in a Security Level 1, 2, or 3 environment (SECOPT1,<br />

SECOPT2, or SECOPT3). Refer to Section 1,"Introduction," <strong>for</strong> more in<strong>for</strong>mation.<br />

Note: See file /var/mqm/diag/W<strong>MQ</strong>.diagnostic on the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>for</strong> the<br />

results of the RPM installations. An installation always per<strong>for</strong>ms an uninstall<br />

there<strong>for</strong>e, if the product RPM files were previously removed, a subsequent<br />

installation now shows errors trying to remove the nonexistent RPM files. The<br />

errors state that the files to uninstall do not exist. It is normal to see these errors in<br />

this case. You can view the diagnostic file by navigating to the View System Logs<br />

module in the Diagnostic section of the <strong>OS</strong> <strong>2200</strong> <strong>Administration</strong> Console or you can<br />

use the UNX dem<strong>and</strong> shell to view the W<strong>MQ</strong>.diagnostic file. See Appendix F <strong>for</strong><br />

in<strong>for</strong>mation on UNX shell <strong>and</strong> the QProcessor <strong>Administration</strong> Console Help <strong>for</strong><br />

in<strong>for</strong>mation on View System Logs.<br />

After successful installation, you must configure W<strong>MQ</strong><strong>2200</strong>. See the following<br />

subsections <strong>for</strong> details.<br />

2.3. Verifying the <strong>Installation</strong> <strong>and</strong> Configuration<br />

After installing <strong>and</strong> configuring W<strong>MQ</strong><strong>2200</strong>, execute a few simple comm<strong>and</strong>s to verify<br />

the resulting files. You can verify your installation locally, without involving<br />

communication links to other <strong>WebSphere</strong> <strong>MQ</strong> machines.<br />

For example, type the following comm<strong>and</strong>s to install <strong>and</strong> test a simple configuration of<br />

one queue manager <strong>and</strong> one queue.<br />

• Bring up the daemon (See Appendix E, "W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility,"<br />

<strong>for</strong> more in<strong>for</strong>mation.)<br />

• Create <strong>and</strong> start a queue manager.<br />

• Define a local queue.<br />

• Put a message onto a queue.<br />

2–20 3843 3744–002


• Read a message from a queue.<br />

Verifying the <strong>Installation</strong> <strong>and</strong> Configuration<br />

>@wmq$*mqs$exe.startup<br />

>Daemon started successfully.<br />

>Daemon connected to QProcessor successfully!<br />

>API is ready <strong>for</strong> use.<br />

>@wmq$*mqs$exe.unx<br />

Unx - 6R1 - 2010 May 26 Tue 12:46:00<br />

>16311#>crtmqm my.qmgr<br />

><strong>WebSphere</strong> <strong>MQ</strong> queue manager created.<br />

>Creating or replacing default objects <strong>for</strong> my.qmgr.<br />

>Default objects statistics : 40 created. 0 replaced. 0 failed.<br />

>Completing setup.<br />

>Setup completed.<br />

>16311#>strmqm my.qmgr<br />

><strong>WebSphere</strong> <strong>MQ</strong> queue manager 'my.qmgr' starting.<br />

>4 log records accessed on queue manager 'my.qmgr' during the log<br />

replay phase.<br />

>Log replay <strong>for</strong> queue manager 'my.qmgr' complete.<br />

>Transaction manager state recovered <strong>for</strong> queue manager 'my.qmgr'.<br />

-<strong>WebSphere</strong> <strong>MQ</strong> queue manager 'my.qmgr' started.<br />

>16311#>runmqsc my.qmgr<br />

>5724-H72 (C) Copyright IBM Corp. 1994, 2005. ALL RIGHTS RESERVED.<br />

>Starting <strong>MQ</strong>SC <strong>for</strong> queue manager my.qmgr..<br />

><br />

><br />

>define qlocal (my.local.q)<br />

>1 : define qlocal (my.local.q)<br />

>A<strong>MQ</strong>8006: <strong>WebSphere</strong> <strong>MQ</strong> queue created.<br />

>end<br />

>2 : end<br />

>One <strong>MQ</strong>SC comm<strong>and</strong> read.<br />

>No comm<strong>and</strong>s have a syntax error.<br />

>16311#>exit<br />

>exit<br />

><br />

Note: Any text entered in <strong>MQ</strong>SC in lowercase is converted automatically to<br />

uppercase unless you enclose it in single quotes ( ' ). This means that if you create a<br />

queue with the name my.local.q, you must remember to refer to it in any comm<strong>and</strong><br />

outside <strong>MQ</strong>SC as MY.LOCAL.Q.<br />

>@wmq$*mqs$samples.amqsput<br />

>Usage: @Q*F.A<strong>MQ</strong>SPUT QueueName [QMgrName]<br />

>Enter parameter(s):> MY.LOCAL.Q my.qmgr<br />

>Sample A<strong>MQ</strong>SPUT0 start<br />

>target queue is MY.LOCAL.Q<br />

>installation test message<br />

>xmit<br />

>Sample A<strong>MQ</strong>SPUT0 end<br />

>@wmq$*mqs$samples.amqsget<br />

>Usage: @Q*F.A<strong>MQ</strong>SGET QueueName [QMgrName]<br />

3843 3744–002 2–21


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

>Enter parameter(s):>MY.LOCAL.Q my.qmgr<br />

>Sample A<strong>MQ</strong>SGET0 start<br />

>message <br />

>no more messages<br />

>Sample A<strong>MQ</strong>SGET0 end<br />

The verification is complete.<br />

2.4. Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration<br />

Parameters<br />

You can customize W<strong>MQ</strong><strong>2200</strong> at your site by adjusting the W<strong>MQ</strong><strong>2200</strong> configuration<br />

values as explained in the following subsections. W<strong>MQ</strong><strong>2200</strong> expects the configuration<br />

element of the site, <strong>MQ</strong>SERIES/CONFIG, to be in the W<strong>MQ</strong>$*<strong>MQ</strong>S$CONFIG file. This<br />

location is not overwritten by a subsequent install of W<strong>MQ</strong><strong>2200</strong>.<br />

If this is your first install of W<strong>MQ</strong><strong>2200</strong>, file W<strong>MQ</strong>$*<strong>MQ</strong>S$CONFIG is cataloged <strong>for</strong> you.<br />

During the installation process, the administrator must review the installed W<strong>MQ</strong><strong>2200</strong><br />

configuration file (W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS.<strong>MQ</strong>SERIES/CONFIG) to become familiar with<br />

the default configuration values. A template configuration file can be found in the<br />

W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS.<strong>MQ</strong>SERIES/CONFIG file.<br />

Compare the content of the newly installed configuration template file to the contents<br />

of any saved configuration file <strong>and</strong> to your site’s needs. Update the<br />

W<strong>MQ</strong>$*<strong>MQ</strong>S$CONFIG.<strong>MQ</strong>SERIES/CONFIG file appropriately to reflect new, deleted, or<br />

changed configuration parameters. You can also start fresh by replacing the saved file<br />

with the installed configuration template file <strong>and</strong> then per<strong>for</strong>m updates as needed.<br />

Be sure to set up your W<strong>MQ</strong>$*<strong>MQ</strong>S$CONFIG.<strong>MQ</strong>SERIES/CONFIG file be<strong>for</strong>e starting<br />

the W<strong>MQ</strong><strong>2200</strong> daemon.<br />

You can modify the configuration parameters at any time, but most are referenced<br />

only on the initial invocation of the <strong>MQ</strong>S subsystem after installation or after the<br />

subsystem is reloaded. There<strong>for</strong>e, if you modify any of the values in your configuration<br />

file, you must deactivate your <strong>MQ</strong>S subsystem <strong>for</strong> the changes to take effect. Refer<br />

to Section 7, "Troubleshooting," <strong>for</strong> more in<strong>for</strong>mation on deactivating the W<strong>MQ</strong><strong>2200</strong><br />

subsystems.<br />

You will not need to change many of the values in the installed version of the<br />

configuration file. For a production environment, Unisys recommends that you leave<br />

most values unchanged. You are most likely to change the following values:<br />

• Convert<strong>MQ</strong>MDE – automatically convert messages to or from the native encoding<br />

of the queue manager.<br />

• HighOffloadCount – maximum number of offloads at the current time.<br />

• LowOffloadCount* – initial number of offloads started.<br />

• MaxOffloads* – maximum number of offloads allowed.<br />

2–22 3843 3744–002


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

• McbEntryBdi – the MCBBNK CBD address that identifies the MCB instance<br />

through which a user-written trigger monitor schedules TIP/HVTIP transaction<br />

programs.<br />

• <strong>MQ</strong>Authority – <strong>MQ</strong> OAM enablement.<br />

• PrintConnectionDownWarnings – print a warning to the <strong>OS</strong> <strong>2200</strong> console when<br />

the connection to the <strong>OS</strong> <strong>2200</strong> QProcessor is unavailable.<br />

*Offloads are <strong>OS</strong> <strong>2200</strong> QProcessor processes. There should be one offload per<br />

active <strong>MQ</strong> API user.<br />

2.4.1. Configurable Values Summary<br />

The following table summarizes the configurable values.<br />

Note: The configuration parameter names are not case sensitive; however, the<br />

values can be case sensitive.<br />

Item Default Brief Explanation<br />

AffinitizeWaitTime 0 Amount of time to wait <strong>for</strong> an offload to<br />

become available to service an activity.<br />

Negative value: infinite; Zero value: no wait;<br />

positive value: number of seconds to wait.<br />

BackgroundWait 15 seconds The number of seconds to wait <strong>for</strong> the<br />

<strong>OS</strong> <strong>2200</strong> batch background daemon to<br />

start.<br />

BatchRunLoc no default, but it should<br />

generally be<br />

wmq$*mqs$run.mqsrun<br />

Convert<strong>MQ</strong>MDE<br />

Location of the <strong>OS</strong> <strong>2200</strong> batch background<br />

daemon start stream.<br />

Format: qualifier*filename.element/version.<br />

OFF Determines whether <strong>MQ</strong>MDE in user<br />

messages must be automatically converted<br />

to/from the queue manager’s native<br />

encoding during <strong>MQ</strong>PUT/<strong>MQ</strong>PUT1 <strong>and</strong><br />

<strong>MQ</strong>GET processing. To automatically<br />

convert, set this to ‘ON’ <strong>and</strong> equate all<br />

other values to OFF.<br />

DaemonKeyId no default KEYIN$ id <strong>for</strong> unsolicited requests max of 8<br />

characters (A-Z, 0-9, <strong>and</strong> *).<br />

DaemonRetryInt 0 The number of seconds daemon should<br />

wait between attempts to reestablish<br />

communications with the <strong>OS</strong> <strong>2200</strong><br />

QProcessor after the API connection is lost.<br />

FileSystem no default, but it should be<br />

wmq$ unless an alternate<br />

installation mode is being<br />

used<br />

The <strong>OS</strong> <strong>2200</strong> qualifier of the installed<br />

W<strong>MQ</strong><strong>2200</strong> product files.<br />

Minimum: 1 character.<br />

Maximum: 12 characters.<br />

HighOffloadCount no default Maximum number of <strong>OS</strong> <strong>2200</strong> activities<br />

that can be serviced at any given time.<br />

3843 3744–002 2–23


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

Item Default Brief Explanation<br />

ICLogLevel 0 Initial IC log level. Valid values are:<br />

LinuxIP no default<br />

must normally be<br />

172.28.102.10<br />

LinuxPort no default<br />

Log<strong>MQ</strong>AuthorityEr<br />

rors<br />

must normally be 22719<br />

0 = IC_LOG_ONLY<br />

4 = IC_AUDIT<br />

5 = IC_DEBUG<br />

6 = IC_VERB<strong>OS</strong>E<br />

Linux IP address<br />

Port the IC tag launcher is bound to.<br />

OFF Should <strong>MQ</strong> authority errors be logged to<br />

the queue manager error logs? ON: yes;<br />

OFF: no.<br />

LowOffloadCount no default Minimum number of offloads to keep<br />

running at all times waiting to service<br />

<strong>OS</strong> <strong>2200</strong> activities.<br />

MaxOffloads no default Maximum number of offloads that can ever<br />

be started to service <strong>OS</strong><strong>2200</strong> activities.<br />

McbEntryBdi 0 The installed MCB MCBBNK BDI that the<br />

default trigger monitor uses to schedule<br />

triggered TIP programs.<br />

Form: 040nnnn. The MCB must have<br />

UDBASE set to 0600000 or higher.<br />

MonitorInterval 60 Monitor Interval <strong>for</strong> detecting loss of<br />

<strong>OS</strong> <strong>2200</strong> QProcessor connectivity. Valid<br />

values are 0-120 seconds. A value of 0<br />

causes default of 60 seconds to be used.<br />

<strong>MQ</strong>Authority OFF <strong>MQ</strong> OAM is enabled if ON, <strong>and</strong> is not<br />

enabled if OFF.<br />

<strong>MQ</strong>LocalLanguage en Local language used. en, de, es, fr, it, <strong>and</strong> pt<br />

<strong>MQ</strong>LogLevel 0 Initial <strong>MQ</strong> log level. Valid values are:<br />

PrintConnection<br />

DownWarnings<br />

0 = <strong>MQ</strong>_LOG_ONLY<br />

4 = <strong>MQ</strong>_AUDIT<br />

5 = <strong>MQ</strong>_DEBUG<br />

6 = <strong>MQ</strong>_VERB<strong>OS</strong>E<br />

ON Prints warning to console when API<br />

connection to <strong>OS</strong> <strong>2200</strong> QProcessor is<br />

unavailable.<br />

RealTimeLevel 0 Real time level of the daemon run.<br />

TermWaitTime 60 Timeout period to wait <strong>for</strong> offloads to<br />

terminate on <strong>OS</strong> <strong>2200</strong> QProcessor be<strong>for</strong>e<br />

causing them to terminate with a signal.<br />

2–24 3843 3744–002


2.4.2. Configurable Values Detail<br />

Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

This subsection describes each of the W<strong>MQ</strong><strong>2200</strong> configuration parameters in detail.<br />

AffinitizeWaitTime<br />

This is the amount of time to wait <strong>for</strong> an offload to become available to service an<br />

activity.<br />

Values<br />

A negative value indicates an infinite wait. A value of zero indicates no wait. A positive<br />

value indicates the number of seconds to wait. The default value is 0, no wait.<br />

BackgroundWait<br />

This defines the number of seconds to elapse be<strong>for</strong>e the STARTUP program assumes<br />

the daemon is not going to start. If the timeout elapses, an error message is printed to<br />

the user who executed STARTUP <strong>and</strong> the user must determine why the daemon run<br />

did not start within the timeout period.<br />

Values<br />

BatchRunLoc<br />

Any integer value can be used. The default value is 15 seconds. On a busy production<br />

system, care must be taken not to set this value too low. The default value of 15 is<br />

generally sufficient.<br />

This is the location of the start runstream that starts the daemon. This must always be<br />

qual*<strong>MQ</strong>S$RUN.<strong>MQ</strong>SRUN where qual is the qualifier of your installed W<strong>MQ</strong><strong>2200</strong> files.<br />

Values<br />

There is no default value, but <strong>for</strong> default installations of W<strong>MQ</strong><strong>2200</strong> this must be<br />

‘wmq$*mqs$run.mqsrun’.<br />

Convert<strong>MQ</strong>MDE<br />

This determines whether <strong>MQ</strong>MDE in user messages must be automatically converted<br />

to or from the native encoding of the queue manager during <strong>MQ</strong>PUT/<strong>MQ</strong>PUT1 <strong>and</strong><br />

<strong>MQ</strong>GET processing. An <strong>MQ</strong>MDE is a message descriptor extension structure that can<br />

be attached to a user message buffer to provide additional in<strong>for</strong>mation about a<br />

message. This is used when specialized or legacy applications are using a <strong>MQ</strong>MD<br />

version 1 <strong>and</strong> additional in<strong>for</strong>mation not present in the <strong>MQ</strong>MD version 1 needs to be<br />

provided to the queue manager. If a <strong>MQ</strong>MDE is provided in the user message during<br />

an <strong>MQ</strong>PUT or <strong>MQ</strong>PUT1, it must con<strong>for</strong>m to the following rules to be honored by the<br />

queue manager:<br />

• <strong>MQ</strong>MDE must be at the start of the message data.<br />

• <strong>MQ</strong>MDE must be in the queue manager’s local encoding <strong>and</strong> character set.<br />

3843 3744–002 2–25


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

In the W<strong>MQ</strong><strong>2200</strong> environment, <strong>OS</strong> <strong>2200</strong> user applications run on a big endian<br />

byte-ordering architecture (<strong>OS</strong> <strong>2200</strong>), while the queue manager they interact with now<br />

run on an <strong>OS</strong> <strong>2200</strong> QProcessor that is running on a little endian byte-ordering<br />

architecture (Linux). This means that user applications on the <strong>OS</strong> <strong>2200</strong> that put<br />

messages containing an <strong>MQ</strong>MDE in the local encoding <strong>for</strong> the <strong>OS</strong> <strong>2200</strong> are not in the<br />

local encoding of the queue manager. This has the effect of causing the queue<br />

manager to accept, but not honor, <strong>MQ</strong>MDE structures in messages put from the <strong>OS</strong><br />

<strong>2200</strong>. This means the message is put to the queue, but the <strong>MQ</strong>MDE is not used by the<br />

queue manager. Instead, it is not used <strong>and</strong> treated as ordinary message data. Also,<br />

when messages are retrieved from queues, they can contain an <strong>MQ</strong>MDE that is in the<br />

queue manager’s local encoding, but not the local encoding of the <strong>OS</strong> <strong>2200</strong> user<br />

application.<br />

To provide backward compatibility <strong>for</strong> legacy applications, the W<strong>MQ</strong><strong>2200</strong> subsystem<br />

provides this configuration tag. If this tag is enabled, the W<strong>MQ</strong><strong>2200</strong> subsystem<br />

converts any outgoing <strong>MQ</strong>MDE in user message data to the queue manager’s local<br />

encoding be<strong>for</strong>e the <strong>MQ</strong>PUT or <strong>MQ</strong>PUT1 is per<strong>for</strong>med. Conversely, the subsystem<br />

converts <strong>MQ</strong>MDE in message data to the local encoding of the <strong>OS</strong> <strong>2200</strong> applications<br />

be<strong>for</strong>e the <strong>MQ</strong>GET returns.<br />

If this tag is not enabled <strong>and</strong> an <strong>OS</strong> <strong>2200</strong> user application does a <strong>MQ</strong>PUT or <strong>MQ</strong>PUT1<br />

of a message containing an <strong>MQ</strong>MDE, the put is accepted but the <strong>MQ</strong>MDE is not<br />

honored by the queue manager. On an <strong>MQ</strong>GET, the <strong>MQ</strong>MDE returned in the user<br />

message is returned in its original encoding (which might be different than the <strong>OS</strong><br />

<strong>2200</strong> local encoding).<br />

The subsystem only converts <strong>MQ</strong>MDE structures if<br />

• They are at the beginning of the user message.<br />

• They are in the wrong encoding given the destination.<br />

• The user message is large enough to accommodate an <strong>MQ</strong>MDE.<br />

• The Format field of the <strong>MQ</strong>MD provided with the message is<br />

<strong>MQ</strong>MFT_MD_EXTENSION.<br />

Note: Whether the queue manager ultimately honors an <strong>MQ</strong>MDE is subject to all of<br />

the rules set <strong>for</strong>th in the <strong>WebSphere</strong> <strong>MQ</strong> Application Programming Reference<br />

manual.<br />

Values<br />

ON specifies that the W<strong>MQ</strong><strong>2200</strong> subsystem must automatically convert <strong>MQ</strong>MDE<br />

structures at the beginning of user messages to the native encoding relative to its<br />

destination. Any other value equates to OFF. Default is off.<br />

2–26 3843 3744–002


DaemonKeyId<br />

Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

This defines the keyin that the daemon must register with the EXEC to accept<br />

unsolicited input from a console. This is the keyin used to interact with the daemon.<br />

The daemon stores the in<strong>for</strong>mation such as the output, error logs, <strong>and</strong> diagnostics in<br />

several places. The daemon can also display the following in<strong>for</strong>mation:<br />

1. Responses to the unsolicited input with console keyins are sent back to the<br />

terminal that sent the unsolicited keyin. In some cases, a message might be<br />

printed to the main console as well if the terminal that sent the unsolicited input<br />

was not the main console.<br />

2. Errors <strong>and</strong> other status in<strong>for</strong>mation is stored in the DAEMON$OUT file which is<br />

used as the breakpoint file in the <strong>MQ</strong>S$RUN.<strong>MQ</strong>SRUN file that is used to start the<br />

daemon. This file can be inspected <strong>for</strong> errors. Contingency snaps <strong>and</strong> other<br />

in<strong>for</strong>mation can be found in this file, if the daemon terminates in error.<br />

3. If the daemon encounters a contingency <strong>and</strong> aborts, the DAEMON$DIAG file might<br />

contain a PADS diagnostic file <strong>for</strong> post-mortem debugging.<br />

4. DDP trace <strong>and</strong> log files is the primary location where trace <strong>and</strong> log data is stored<br />

<strong>for</strong> debugging. The level of the trace/log level is determined by the <strong>MQ</strong>LOG <strong>and</strong><br />

ICLOG keyins as described in the following sections.<br />

Values<br />

By default, the keyin identifier is the same as your subsystem qualifier. However, a<br />

keyin cannot contain certain characters including a dollar sign ($). There<strong>for</strong>e, if your<br />

subsystem qualifier contains a dollar sign, it is omitted from the DaemonKeyId<br />

specification. The DaemonKeyID <strong>for</strong> the default qualifier, W<strong>MQ</strong>$, is W<strong>MQ</strong>.<br />

DaemonRetryInt<br />

This is the number of seconds the daemon should wait between attempts to<br />

reestablish communications with the <strong>OS</strong> <strong>2200</strong> QProcessor after the API connection is<br />

lost. If configured, the daemon will automatically attempt to reestablish<br />

communications with the <strong>OS</strong> <strong>2200</strong> QProcessor after the API connection is terminated<br />

abnormally. The daemon will not attempt to reconnect the API connection if the user<br />

terminates the API connection administratively using the SHUTDOWN or DOWN<br />

keyins. The configured retry interval <strong>and</strong> whether the daemon is currently retrying the<br />

API connection can be determined with the APISTATUS keyin. User applications that<br />

were connected to queue managers be<strong>for</strong>e the connection terminated are required to<br />

per<strong>for</strong>m a new <strong>MQ</strong>CONN. This is to reestablish communication with the queue<br />

manager after the API connection is restored. User applications can attempt an<br />

<strong>MQ</strong>CONN periodically until the API connection is restored, at which point the<br />

<strong>MQ</strong>CONN should succeed.<br />

You can display the values related to the DaemonRetryInt using the APISTATUS keyin.<br />

The Automatic Reconnect field specifies whether automatic reconnects are enabled.<br />

The Currently Retrying field specifies whether the daemon currently attempts to<br />

reconnect to the <strong>OS</strong> <strong>2200</strong> QProcessor. The Reconnect Interval field displays the<br />

number of seconds between retries.<br />

3843 3744–002 2–27


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

Note: It is important that the DaemonRetryInt value is set to a value greater than<br />

zero in an HA environment. This enables the daemon to reestablish the link to the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor automatically after a failure or failover of the HA nodes.<br />

Values<br />

FileSystem<br />

A value greater than zero indicates the daemon should automatically attempt to<br />

reconnect to the <strong>OS</strong> <strong>2200</strong> QProcessor after the API connection terminates<br />

abnormally. The configured value is the number of seconds between retries until the<br />

connection is restored.<br />

A value of zero indicates that the daemon must not automatically reconnect. If the<br />

daemon does not automatically retry, the connection will have to be manually<br />

restarted using the UP keyin. The default value is 0, no automatic reconnects.<br />

FileSystem defines the qualifier <strong>for</strong> the installed system files. This includes<br />

• <strong>MQ</strong>S$COMMON<br />

• <strong>MQ</strong>S$LIB<br />

• <strong>MQ</strong>S$EXE<br />

• <strong>MQ</strong>S$RUN<br />

• <strong>MQ</strong>S$SAMPLES<br />

• <strong>MQ</strong>STOOLS<br />

• <strong>MQ</strong>S$OM<br />

In addition, FileSystem must be the qualifier of your mqs$config file.<br />

Values<br />

The default installation requires you to define this as ‘wmq$’ as there is no default<br />

value.<br />

HighOffLoadCount<br />

This is the largest number of <strong>OS</strong> <strong>2200</strong> user activities that can be serviced using the API<br />

at the present time. This value is configurable at run-time using the ‘OHIGH’ keyin.<br />

Values<br />

The value cannot exceed the value <strong>for</strong> MaxOffloads. There is no default <strong>for</strong> this<br />

parameter.<br />

2–28 3843 3744–002


ICLogLevel<br />

LinuxIP<br />

LinuxPort<br />

Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

This value controls the level of trace in the Interconnect library on the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the<br />

level of trace <strong>for</strong> the interconnect library <strong>and</strong> offloads in the <strong>OS</strong> <strong>2200</strong> QProcessor log.<br />

This level can be modified dynamically with the ICLOG keyin.<br />

Values<br />

Valid values are:<br />

0 = IC_LOG_ONLY<br />

4 = IC_AUDIT<br />

5 = IC_DEBUG<br />

6 = IC_VERB<strong>OS</strong>E<br />

The default value is 0, IC_LOG_ONLY. Refer to the ClearPath Specialty Engine <strong>for</strong><br />

<strong>OS</strong> <strong>2200</strong> Configuration Guide <strong>for</strong> more in<strong>for</strong>mation on IC<strong>2200</strong> logging.<br />

The IP address of the <strong>OS</strong> <strong>2200</strong> QProcessor that the daemon must attempt to connect<br />

to.<br />

Values<br />

There is no default value <strong>for</strong> this parameter, but this must be 172.28.102.10 in most<br />

cases.<br />

The port the Interconnect launcher is bound to on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Values<br />

There is no default <strong>for</strong> this value, but this must be 22719 in most cases <strong>and</strong> typically<br />

does not need to be modified.<br />

Log<strong>MQ</strong>AuthorityErrors<br />

This determines whether or not <strong>MQ</strong> authority errors must be logged to the queue<br />

manager error log. This value must be set prior to starting the queue manager.<br />

Otherwise changes will not take effect until the queue manager is restarted.<br />

Values<br />

The possible values <strong>for</strong> this parameter are ON or OFF. By default it is OFF.<br />

3843 3744–002 2–29


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

LowOffloadCount<br />

The minimum number of offloads to keep running at all times waiting to service <strong>OS</strong><br />

<strong>2200</strong> activities. This value can be modified at run time with the OLOW keyin.<br />

Values<br />

MaxOffloads<br />

There is no default <strong>for</strong> this parameter, but it cannot exceed the HighOffLoadCount or<br />

the MaxOffloads.<br />

This defines the maximum number of offloads that can ever be started to service<br />

<strong>OS</strong> <strong>2200</strong> activities. There is one offload <strong>for</strong> every <strong>OS</strong> <strong>2200</strong> activity. This value is not<br />

configurable at run-time.<br />

Values<br />

McbEntryBdi<br />

There is no default <strong>for</strong> this parameter. The maximum value is 10,000 due to IC<br />

limitations.<br />

This defines the MCB through which the W<strong>MQ</strong><strong>2200</strong> default trigger monitor is to<br />

schedule (trigger) TIP transactions. Provide the installed MCBBNK CBD VA of <strong>for</strong>m<br />

040nnnn.<br />

Values<br />

The default value is 0. You can only specify an MCB whose UDBASE is equal to or<br />

higher than the default of 0600000.<br />

MonitorInterval<br />

This is the monitor interval (in seconds) <strong>for</strong> detecting a loss of <strong>OS</strong> <strong>2200</strong> QProcessor<br />

connectivity.<br />

Values<br />

<strong>MQ</strong>Authority<br />

The default value is 60 seconds. Valid values range from 0 to 120 seconds. A value of<br />

zero causes the default value of 60 seconds to be used.<br />

This determines whether the OAM is enabled by default. The OAM is a component<br />

provided with W<strong>MQ</strong><strong>2200</strong> to provide access control to queue manager resources. You<br />

can choose to have the OAM enabled or disabled <strong>for</strong> each queue manager on an<br />

individual basis. Refer to the IBM <strong>WebSphere</strong> <strong>MQ</strong> System <strong>Administration</strong> Guide<br />

Version 6.0 <strong>for</strong> more in<strong>for</strong>mation on using the OAM.<br />

2–30 3843 3744–002


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

Note: If the OAM is enabled <strong>for</strong> your queue manager <strong>and</strong> you intend to run TIP or<br />

HVTIP <strong>MQ</strong>I applications or Open Distributed Transaction Processing TIP or HVTIP<br />

servers whose services use the <strong>WebSphere</strong> <strong>MQ</strong> API, you must establish<br />

permissions <strong>for</strong> the user IDs of these transaction programs. All TIP or HVTIP<br />

programs or servers are known to W<strong>MQ</strong><strong>2200</strong> as user ‘nobody’ when the default TIP<br />

system user ID is configured (12 ASCII spaces). In this case, <strong>MQ</strong>CONN calls fail with<br />

Reason Code 2035 (<strong>MQ</strong>RC_NOT_AUTHORIZED). Otherwise, TIP or HVTIP programs<br />

or servers are known to W<strong>MQ</strong><strong>2200</strong> as the <strong>OS</strong> <strong>2200</strong> user specified in the TIP system<br />

user ID.<br />

When the value of <strong>MQ</strong>Authority is OFF (or not set), all UNX dem<strong>and</strong> shell sessions<br />

begin with the environment variable <strong>MQ</strong>SNOAUT set. It is the existence of the<br />

<strong>MQ</strong>SNOAUT environment variable when you execute crtmqm comm<strong>and</strong> that<br />

determines whether the OAM is in use <strong>for</strong> a queue manager. If <strong>MQ</strong>SNOAUT exists<br />

when you execute crtmqm, the queue manager runs with the OAM disabled. If<br />

<strong>MQ</strong>SNOAUT does not exist when you execute crtmqm, the queue manager runs with<br />

the OAM enabled.<br />

Note: Do not alter the values of any environment variables except <strong>for</strong><br />

<strong>MQ</strong>SNOAUT.<br />

Within your UNX dem<strong>and</strong> processor session, you can create or destroy the<br />

<strong>MQ</strong>SNOAUT environment variable by using the UNX set comm<strong>and</strong>. For example, to<br />

create the <strong>MQ</strong>SNOAUT environment variable, enter<br />

set <strong>MQ</strong>SNOAUT=YES<br />

To destroy the <strong>MQ</strong>SNOAUT environment variable, enter<br />

set <strong>MQ</strong>SNOAUT=<br />

To check <strong>for</strong> the existence <strong>and</strong> value of <strong>MQ</strong>SNOAUT or any environment variable,<br />

execute the set comm<strong>and</strong> with no parameters. If <strong>MQ</strong>SNOAUT is listed, the OAM is<br />

currently disabled <strong>for</strong> queue manager creation.<br />

Note: Refer to the IBM <strong>WebSphere</strong> <strong>MQ</strong> Security manual <strong>and</strong> the IBM <strong>WebSphere</strong><br />

<strong>MQ</strong> System <strong>Administration</strong> Guide <strong>for</strong> more in<strong>for</strong>mation.<br />

Values<br />

ON specifies that the OAM is enabled. Any other value equates to OFF. The default is<br />

OFF.<br />

3843 3744–002 2–31


Adjusting W<strong>MQ</strong><strong>2200</strong> Configuration Parameters<br />

<strong>MQ</strong>LocalLanguage<br />

Specifies the language of the message catalog to be used when W<strong>MQ</strong><strong>2200</strong> issues<br />

in<strong>for</strong>mational <strong>and</strong> error messages. The maximum length of this value is two<br />

characters. Change this value to fit your language preference.<br />

Values<br />

<strong>MQ</strong>LogLevel<br />

The local language designator must be one of the authorized two-character alphabetic<br />

values. Authorized values include en, de, es, fr, it, ja, ko, cn, tw, <strong>and</strong> pt, which<br />

represent English, German, Spanish, French, Italian, Japanese, Korean, Simplified<br />

Chinese, Traditional Chinese, <strong>and</strong> Portuguese, respectively. The default value is ‘en’.<br />

This parameter defines the initial W<strong>MQ</strong><strong>2200</strong> subsystem log/trace level to be used in a<br />

DDP log/trace. This level can be modified dynamically with the <strong>MQ</strong>LOG keyin.<br />

Values<br />

The default value is 0, <strong>MQ</strong>_LOG_ONLY. Valid values are:<br />

0 = <strong>MQ</strong>_LOG_ONLY<br />

4 = <strong>MQ</strong>_AUDIT<br />

5 = <strong>MQ</strong>_DEBUG<br />

6 = <strong>MQ</strong>_VERB<strong>OS</strong>E<br />

PrintConnectionDownWarnings<br />

The value of this parameter determines whether or not a warning is printed to the<br />

<strong>OS</strong> <strong>2200</strong> console if a user application attempts to use the <strong>WebSphere</strong> <strong>MQ</strong> API to<br />

connect to a queue manager on the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>and</strong> fails because the<br />

connection is not currently available. The connection might be unavailable due to the<br />

following reasons:<br />

• The W<strong>MQ</strong><strong>2200</strong> background daemon is not running.<br />

• The daemon is running but the connection to the <strong>OS</strong> <strong>2200</strong> QProcessor is not<br />

available because it terminated in error or it was disconnected through the<br />

administrative DOWN keyin by an operator.<br />

The console message is triggered when a user application attempts to use the<br />

<strong>MQ</strong>CONN, <strong>MQ</strong>CONNX, or <strong>MQ</strong>RMIOpen API calls, which begin a connection with a<br />

queue manager. The first user application to encounter this situation generates the<br />

console message. Subsequent applications do not generate the console message.<br />

Once connectivity to the <strong>OS</strong> <strong>2200</strong> QProcessor is re-established, the flag that controls<br />

whether the console message is printed is reset. If connectivity is lost subsequently,<br />

the first application to encounter a lack of connectivity then generates the console<br />

message. In this way, only one console message is generated per loss of connectivity<br />

with the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

2–32 3843 3744–002


Values<br />

Setting up Communications<br />

Valid values are ON (the warning is printed) <strong>and</strong> OFF (the warning is not printed). The<br />

default value is ON.<br />

RealTimeLevel<br />

Determines the real-time processing level <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> daemon.<br />

Values<br />

You can specify any real-time processing level from 2 to 35. The default is zero, which<br />

specifies that processing is not real-time.<br />

TermWaitTime<br />

This specifies the time period to wait <strong>for</strong> offloads to terminate on <strong>OS</strong> <strong>2200</strong><br />

QProcessor be<strong>for</strong>e causing them to terminate with a signal.<br />

Values<br />

The default value is 60 seconds.<br />

2.5. Setting up Communications<br />

This section describes how to set up communications between your <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>and</strong> a Sun Solaris, a Windows XP, or another <strong>OS</strong> <strong>2200</strong> system.<br />

2.5.1. Overview<br />

The following pages provide a brief overview of channels <strong>and</strong> listener <strong>and</strong> port setup.<br />

2.5.2. Setting up Communications between <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>and</strong> Other Systems<br />

A message channel provides a communication path between two queue managers on<br />

the same, or different, plat<strong>for</strong>ms. The message channel is used <strong>for</strong> the transmission of<br />

messages from one queue manager to another, <strong>and</strong> shields the application programs<br />

from the complexities of the underlying networking protocols.<br />

A message channel can transmit messages in one direction only. If two-way<br />

communication is required between two queue managers, two message channels are<br />

required.<br />

3843 3744–002 2–33


Setting up Communications<br />

Figure 2-1 is from the <strong>WebSphere</strong> <strong>MQ</strong> Intercommunication manual; refer to this manual<br />

<strong>for</strong> more in<strong>for</strong>mation on channels <strong>and</strong> how to use them.<br />

Figure 2–1. Communication Path Between Queue Managers<br />

Listener <strong>and</strong> Port Setup<br />

For applications to be able to exchange messages, you must start a listener program<br />

<strong>for</strong> inbound connections. Be<strong>for</strong>e you can use channels, you need to do listener <strong>and</strong><br />

port setup.<br />

Use the RUN<strong>MQ</strong>LSR comm<strong>and</strong> to start the <strong>WebSphere</strong> <strong>MQ</strong> listener process. Any<br />

inbound requests <strong>for</strong> channel attachment start Message Channel Agents (MCA) as<br />

children of this listener process.<br />

RUN<strong>MQ</strong>LSR [-m queue_manager_name] [-p port] [&]<br />

Note: You must open the port in the <strong>OS</strong> <strong>2200</strong> QProcessor firewall to allow<br />

incoming channels to connect. By default, no ports are open on the public LAN. If<br />

you need to open other ports, use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

2–34 3843 3744–002


Setting up Communications<br />

If you do not specify queue_manager_name <strong>and</strong> port, default values are used (default<br />

<strong>for</strong> port is 1414). The optional trailing ampers<strong>and</strong> allows the listener program to<br />

execute as a background run, thus not tying up the dem<strong>and</strong> session. The optional<br />

trailing ampers<strong>and</strong> can also be used on a RUN<strong>MQ</strong>CHL control comm<strong>and</strong>.<br />

Alternatively, you can use the RUN<strong>MQ</strong>SC START LISTENER comm<strong>and</strong> if your queue<br />

manager is running. It accepts no parameters, <strong>and</strong> the TCP/IP port value is derived<br />

from the queue manager’s qm.ini file, or defaults to 1414.<br />

To stop all <strong>WebSphere</strong> <strong>MQ</strong> listeners running on a queue manager that is inactive, type<br />

END<strong>MQ</strong>LSR [-m queue_manager_name]<br />

Connecting Two Queue Managers Using Channels<br />

After starting a listener <strong>for</strong> a queue manager, you need to define one or more receiver<br />

(RCVR) channels that accept incoming connections. The <strong>WebSphere</strong> <strong>MQ</strong> listener<br />

accepts incoming channel requests <strong>and</strong> starts receiver (RCVR) channels to service the<br />

incoming requests. These child processes are called responders. To connect two<br />

queue managers each queue manager must have a channel with the same name.<br />

Channels are unidirectional; the sending end transmits messages to the receiving end.<br />

A sender (SDR) channel must be created with the same name on the sending queue<br />

manager to partner with the RCVR channel on the receiving end. You can define<br />

channels using the RUN<strong>MQ</strong>SC utility.<br />

A basic receiver (RCVR) channel definition is similar to the following:<br />

DEFINE CHANNEL (TO.RCVR) CHLTYPE(RCVR) TRPTYPE(TCP)<br />

A basic sender (SDR) channel definition is similar to the following:<br />

DEFINE CHANNEL(TO.RCVR) CHLTYPE(SDR) CONNAME('10.10.10.10(1414)') +<br />

XMITQ(MY.TRANSMIT.Q)<br />

The <strong>for</strong>mat of the CONNAME parameter is IP-Address(Port). If you omit the port, 1414<br />

is assumed. The listener on the receiving end must be listening on the given IP<br />

address <strong>and</strong> port specified.<br />

Sender channels service transmission queues, taking messages off of the queue <strong>and</strong><br />

sending them over the network to the receiving queue manager. You specify the<br />

transmission queue the sender channel services in the SDR channel definition with the<br />

XMITQ specification. The transmission queue must be created in RUN<strong>MQ</strong>SC:<br />

DEFINE QL(MY.TRANSMIT.Q) USAGE(XMITQ)<br />

Refer to the <strong>WebSphere</strong> <strong>MQ</strong> Script (<strong>MQ</strong>SC) Comm<strong>and</strong> Reference manual <strong>for</strong> full<br />

documentation on how to define various types of channels.<br />

3843 3744–002 2–35


Setting up Communications<br />

Once the channel has been defined on the sending <strong>and</strong> receiving queue manager <strong>and</strong><br />

the listener is running on the receiving end, you can start the channel using<br />

RUN<strong>MQ</strong>SC:<br />

START CHANNEL(TO.RCVR)<br />

Alternatively, you can start the channel from the UNX shell:<br />

>@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>runmqchl -m MY.QMGR -c TO.RCVR &<br />

The following is a simple example of how to use a channel to send messages from<br />

one queue manager to a second queue manager. The sending queue manager is<br />

named SEND <strong>and</strong> the receiving queue manager is named RECEIVE.<br />

Sending system<br />

Receiving system<br />

>crtmqm SEND # Create queue manager<br />

>strmqm SEND # Start queue manager<br />

>runmqsc SEND # Start <strong>MQ</strong>SC utility to define objects<br />

>* Define a transmission queue <strong>for</strong> the sending channel<br />

>DEFINE QL(MY.TRANSMIT.Q) USAGE(XMITQ)<br />

>* Define sending channel<br />

>DEFINE CHANNEL(TO.RECEIVE) CHLTYPE(SDR) +<br />

>CONNAME('10.10.10.10(1414)') XMITQ(MY.TRANSMIT.Q)<br />

>* Define the queue remote that applications will use to send<br />

>* messages to the remote system. The queue remote puts<br />

>* messages to the transmission queue <strong>and</strong> the channel<br />

>* takes them <strong>and</strong> delivers them to the remote system.<br />

>DEFINE QREMOTE(TO.RECEIVE.Q) RNAME(RECEIVEQ) +<br />

>RQMNAME(RECEIVE) XMITQ(MY.TRANSMIT.Q)<br />

>END<br />

>crtmqm RECEIVE # Create queue manager<br />

>strmqm RECEIVE # Start queue manager<br />

>runmqlsr -m RECEIVE -t TCP -p 1414 & # Start listener<br />

>runmqsc RECEIVE # Start <strong>MQ</strong>SC utility to define objects<br />

>* Define destination queue that sending end sends messages to<br />

>DEFINE QL(RECEIVEQ)<br />

>* Define receiver channel<br />

>DEFINE CHANNEL(TO.RECEIVE) CHLTYPE(RCVR)<br />

>END<br />

Next, start the channel from the sending end <strong>and</strong> verify it is running:<br />

>runmqsc SEND<br />

>START CHANNEL(TO.RECEIVE)<br />

>DISPLAY CHSTATUS(TO.RECEIVE)<br />

>END<br />

2–36 3843 3744–002


The channel must be listed as RUNNING.<br />

Setting up Communications<br />

At this point, on the sending end you can put a message to the TO.RECEIVE.Q. The<br />

message must be delivered <strong>and</strong> retrievable from the receiving queue manager on its<br />

destination queue, RECEIVEQ.<br />

2.5.3. Securing Your Channels with SSL<br />

Introduction<br />

W<strong>MQ</strong><strong>2200</strong> uses OpenSSL to provide SSL (Secure Sockets Layer) capability. This<br />

version of OpenSSL provides a Federal In<strong>for</strong>mation Processing St<strong>and</strong>ards (FIPS) 140-2<br />

compliant SSL implementation.<br />

You can create SSL certificates <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> queue managers using OpenSSL<br />

utilities. You can find in<strong>for</strong>mation about OpenSSL at<br />

http://www.openssl.org<br />

You can also refer to the IBM <strong>WebSphere</strong> <strong>MQ</strong> Security manual <strong>for</strong> more in<strong>for</strong>mation<br />

related to SSL in Websphere <strong>MQ</strong>.<br />

Note: Since W<strong>MQ</strong><strong>2200</strong> uses OpenSSL instead of IBM GSKit <strong>for</strong> SSL, various<br />

documentation in the IBM manual including (but not limited to) procedures using<br />

GSKit utilities to create <strong>and</strong> maintain certificates <strong>for</strong> queue managers do not apply.<br />

The following topics describe procedures <strong>for</strong> creating certificates, exchanging them<br />

with a partner (either another W<strong>MQ</strong><strong>2200</strong> or IBM retail implementation using GSKit),<br />

supported SSL Cipher Suites, <strong>and</strong> FIPS 140-2 considerations.<br />

In the following topics, the terms server <strong>and</strong> client are used. In the context of SSL <strong>for</strong><br />

Websphere <strong>MQ</strong>, the server is the queue manager with the SSL enabled receiver<br />

(RCVR) channel <strong>and</strong> the client is the queue manager with the SSL enabled sender<br />

(SDR) channel that is connecting to the receiving queue manager.<br />

Federal In<strong>for</strong>mation Processing St<strong>and</strong>ards (FIPS)<br />

A W<strong>MQ</strong><strong>2200</strong> channel configured to use SSL can be run in a FIPS compliant mode<br />

because the OpenSSL library it uses has been validated as con<strong>for</strong>ming to the Federal<br />

In<strong>for</strong>mation Processing St<strong>and</strong>ards (FIPS) 140-2, Security Requirements <strong>for</strong><br />

Cryptographic Modules. The Cryptographic Module Validation Program (CMVP) is a<br />

joint program of the US National Institute of St<strong>and</strong>ards <strong>and</strong> Technology <strong>and</strong> the<br />

Communications Security Establishment Canada (CSEC). A channel can be run in FIPS<br />

mode if the queue manager has enabled FIPS <strong>and</strong> the cipher used by the channel is<br />

FIPS compliant.<br />

3843 3744–002 2–37


Setting up Communications<br />

Valid Cipher Suites <strong>for</strong> W<strong>MQ</strong><strong>2200</strong><br />

The following lists the supported SSL cipher suites in W<strong>MQ</strong><strong>2200</strong>. This list indicates<br />

which ciphers are FIPS compliant.<br />

Name FIPS Compliant?<br />

DES_SHA_EXPORT No<br />

NULL_MD5 No<br />

NULL_SHA No<br />

RC4_MD5_US No<br />

RC4_SHA_US No<br />

TLS_RSA_WITH_DES_CBC_SHA No<br />

TRIPLE_DES_SHA_US No<br />

TLS_RSA_WITH_3DES_EDE_CBC_SHA Yes<br />

TLS_RSA_WITH_AES_128_CBC_SHA Yes<br />

TLS_RSA_WITH_AES_256_CBC_SHA Yes<br />

Setting up Queue Manager Objects<br />

Refer to the IBM <strong>WebSphere</strong> <strong>MQ</strong> Security manual <strong>for</strong> more in<strong>for</strong>mation on setting up<br />

the server/client objects.<br />

The following is an example of setting up the server <strong>and</strong> client objects on two queue<br />

managers. The example demonstrates how a channel can be configured to allow SSL<br />

encrypted messages to be sent from one queue manager to another. This is a basic<br />

example.<br />

Server setup<br />

The following creates <strong>and</strong> starts a server (receiving) queue manager. It also creates a<br />

local queue, an SSL enabled receiver channel configured to require client<br />

authentication, <strong>and</strong> a listener to accept incoming connections.<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

crtmqm SERVER<br />

strmqm SERVER<br />

runmqsc SERVER<br />

define ql(INPUTQ)<br />

define channel(SSLCHAN) chltype(RCVR) SSLCAUTH(REQUIRED) +<br />

SSLCIPH(TRIPLE_DES_SHA_US)<br />

END<br />

runmqlsr -p port# -t tcp -m SERVER &<br />

exit<br />

2–38 3843 3744–002


Client setup<br />

Setting up Communications<br />

The following creates <strong>and</strong> starts a client (sending) queue manager. It also creates a<br />

transmission queue, a remote queue, <strong>and</strong> an SSL enabled sender channel.<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

crtmqm CLIENT<br />

strmqm CLIENT<br />

runmqsc CLIENT<br />

define ql(TRQ) usage(XMITQ)<br />

define qremote(TO.INPUTQ) RNAME(INPUTQ) RQMNAME(SERVER) XMITQ(TRQ)<br />

DEFINE CHANNEL(SSLCHAN) CHLTYPE(SDR) XMITQ(TRQ) +<br />

CONNAME('(port#)') TRPTYPE(TCP) +<br />

SSLCIPH(TRIPLE_DES_SHA_US) DESCR('SSL Sender channel')<br />

END<br />

exit<br />

Special GSKit Considerations When Using FIPS<br />

If you intend to use W<strong>MQ</strong><strong>2200</strong> as the server (receiving) end of a SSL enabled channel<br />

with a GSKit client (a retail IBM installation) <strong>and</strong> FIPS is enabled on the queue<br />

managers, you must per<strong>for</strong>m an extra step to ensure the FIPS enabled channel starts.<br />

The FIPS st<strong>and</strong>ard requires that certificates are created with a strong signature<br />

encryption. Some levels of <strong>WebSphere</strong> <strong>MQ</strong> that use GSKit may not create certificates<br />

with a compliant signing algorithm. Certificates created with GSKit must be created<br />

with the SHA signing algorithm, not the MD5 algorithm. If the certificate is created<br />

with the MD5 algorithm, it will be rejected by the W<strong>MQ</strong><strong>2200</strong> server during the SSL<br />

h<strong>and</strong>shake if FIPS is enabled.<br />

To fix this, you must edit this file on your system running the retail IBM <strong>WebSphere</strong><br />

<strong>MQ</strong> product:<br />

/usr/local/ibm/gsk7/classes/ikminit.properties<br />

The line in the file that starts with #DEFAULT_SIGNATURE_ALGORITHM= must be<br />

enabled (by removing the #) <strong>and</strong> must specify the SHA1 algorithm, rather than MD5, as<br />

shown below:<br />

DEFAULT_SIGNATURE_ALGORITHM=SHA1_WITH_RSA<br />

You can use gsk7cmd to create the client certificate (or the certificate request to be<br />

used to obtain a certificate from a trusted authority). If the above scenario is not<br />

followed, the certificate is not valid in FIPS mode in OpenSSL. When OpenSSL<br />

receives the certificate it will reject it <strong>and</strong> the channel will not run.<br />

You can verify that the certificate you created was created with the correct signature<br />

algorithm, like this:<br />

$ gsk7cmd -cert -details -db key.kdb -pw cms -label<br />

ibmwebspheremq<br />

3843 3744–002 2–39


Setting up Communications<br />

The signature algorithm must be this:<br />

Signature Algorithm: 1.2.840.113549.1.1.5<br />

This number equates to:<br />

1.2.840.113549.1.1.5 - SHA-1 with RSA Encryption<br />

Create Certificates using OpenSSL<br />

Certificates are created <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> using OpenSSL. The following combinations<br />

can be used:<br />

• Option A – Partner is another W<strong>MQ</strong><strong>2200</strong> installation using OpenSSL.<br />

• Option B – Partner is a retail IBM <strong>WebSphere</strong> <strong>MQ</strong> installation using GSKit.<br />

OpenSSL utilities such as certificate creation are supported in the UNX shell. The<br />

OpenSSL comm<strong>and</strong> line utility accepts password arguments through either -passin<br />

<strong>and</strong> -passout <strong>for</strong> input <strong>and</strong> output passwords respectively.<br />

These options take a single argument whose <strong>for</strong>mat is described below. If no<br />

password argument is given <strong>and</strong> a password is required, the user is not prompted to<br />

enter one. So it is very important to use -passin or -passout with one of these options.<br />

• Pass: – is the actual password <strong>for</strong> the certificate.<br />

• Stdin – Reads the password from st<strong>and</strong>ard input.<br />

The following example creates a certificate request <strong>and</strong> uses the -passout pass<br />

option.<br />

Example<br />

>openssl req -new -x509 -passout pass: -keyout private/cakey.pem -out<br />

cacert.pem<br />

The is the password you are assigning to the certificate request.<br />

Example<br />

This example uses the -passout stdin option.<br />

>openssl req -new -x509 -passout stdin -keyout private/cakey.pem -out cacert.pem<br />

><br />

The is the password you are assigning to the certificate.<br />

OpenSSL provides a Perl script named CA.pl to simplify the process of certificate<br />

generation. The CA.pl script can be called in UNX shell.<br />

You can directly use the OpenSSL comm<strong>and</strong> line utility, which the CA.pl script calls to<br />

do its work.<br />

2–40 3843 3744–002


Setting up Communications<br />

To combine multiple certificates into one, you can use the combine comm<strong>and</strong> in UNX<br />

shell.<br />

Example<br />

@wmq$*mqs$exe.unx<br />

>combine client.pem server.pem key.pem<br />

exit<br />

This example concatenates the client.pem <strong>and</strong> the server.pem certificates <strong>and</strong> saves<br />

the output into key.pem.<br />

Generate Certificate Request <strong>and</strong> Sign Certificate<br />

When you create your certificate request, you are prompted <strong>for</strong> a passphrase to<br />

assign to the certificate. You must specify webspheremq <strong>for</strong> the passphrase.<br />

W<strong>MQ</strong><strong>2200</strong> cannot use your certificate if the passphrase <strong>for</strong> the private key is not<br />

webspheremq. After creating the certificate request, you must have it signed by a<br />

trusted authority or you must self-sign your certificate.<br />

Convert Certificate into DER Format<br />

This step is only necessary when the server (receiving end) is GSKit, <strong>and</strong> W<strong>MQ</strong><strong>2200</strong> is<br />

the client (sending end). You must convert the OpenSSL certificate to a <strong>for</strong>mat GSKit<br />

can underst<strong>and</strong> be<strong>for</strong>e you copy the certificate to the system using GSKit. Once the<br />

DER <strong>for</strong>mat file is created, you must copy the certificate to the GSKit server system<br />

<strong>and</strong> import it into the key repository <strong>for</strong> the queue manager. Refer to the IBM<br />

<strong>WebSphere</strong> <strong>MQ</strong> Security manual <strong>for</strong> more in<strong>for</strong>mation.<br />

Example<br />

$ openssl x509 -out<strong>for</strong>m der -in cacert.pem -out client.der<br />

Exchanging Certificates with the Partner<br />

Option A – Partner is Another W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong> Using OpenSSL<br />

After you have created <strong>and</strong> signed your certificate on each W<strong>MQ</strong><strong>2200</strong> system, you<br />

must exchange certificates.<br />

The root certificate file must be named cacert.pem. The root certificate verifies that<br />

the certificates are signed by the root private key. W<strong>MQ</strong><strong>2200</strong> expects a file named<br />

cacert.pem to be in the /var/mqm/qmgrs//ssl directory. You must copy the<br />

root certificate <strong>for</strong> one queue manager to the other queue manager’s<br />

/var/mqm/


Setting up Communications<br />

For an SSL channel to start between two W<strong>MQ</strong><strong>2200</strong> queue managers, each queue<br />

manager must have a cacert.pem file that has the root certificate <strong>for</strong> the other queue<br />

manager’s <strong>and</strong> key.pem file that contains concatenation of both the server <strong>and</strong> client<br />

certificates.<br />

Option B – Partner is a Retail IBM <strong>WebSphere</strong> <strong>MQ</strong> <strong>Installation</strong> Using GSKit<br />

There are special considerations when exchanging certificates between the client <strong>and</strong><br />

server when one system is a retail IBM <strong>WebSphere</strong> <strong>MQ</strong> installation using GSKit.<br />

OpenSSL <strong>and</strong> GSKit certificates use different file <strong>for</strong>mats. The only <strong>for</strong>mat both<br />

underst<strong>and</strong> are PKCS12 (.p12) <strong>and</strong> DER (.der) <strong>for</strong>mats. It is important to convert<br />

OpenSSL certificates to either .der or .p12 <strong>and</strong> GSKit certificates to .p12 <strong>for</strong>mat.<br />

If you intend to use FIPS, see the special considerations in the subsection above<br />

entitled “Special GSKit Considerations When Using FIPS.”<br />

You must export the certificate <strong>for</strong> the queue manager on the system using GSKit <strong>for</strong><br />

use by W<strong>MQ</strong><strong>2200</strong>. You must export this file using the PKCS12 <strong>for</strong>mat, which OpenSSL<br />

can underst<strong>and</strong>.<br />

Export Certificate in PKCS12 Format from the GSKit Key Repository<br />

Use the following comm<strong>and</strong>s to export a certificate using iKeycmd:<br />

On UNIX<br />

gsk7cmd -cert -export -db filename -pw password -label label -type<br />

cms -target filename -target_pw password -target_type pkcs12<br />

On Windows<br />

runmqckm -cert -export -db filename -pw password -label label -type<br />

cms -target filename -target_pw password -target_type pkcs12<br />

Where:<br />

-db filename is the fully qualified path name of the CMS key database.<br />

-pw password is the password <strong>for</strong> the CMS key database.<br />

-label label is the label attached to the certificate.<br />

-type cms is the type of the database.<br />

-target filename is the name of the destination file.<br />

-target_pw password is the password <strong>for</strong> encrypting the certificate.<br />

-target_type pkcs12 is the type of the certificate.<br />

2–42 3843 3744–002


Example<br />

Setting up Communications<br />

gsk7cmd -cert -export -db key.kdb -pw cms -label ibmwebspheremqqmc -<br />

type cms -target client.p12 -target_pw webspheremq -target_type<br />

pkcs12<br />

Next, copy the pkcs12 file created from the system using GSKit to the <strong>OS</strong> <strong>2200</strong><br />

QProcessor using OpenSSL. After copying the file to the <strong>OS</strong> <strong>2200</strong> QProcessor, the<br />

file must be converted into the .pem file <strong>for</strong>mat.<br />

Use the openssl utility to convert the pkcs12 file to the PEM <strong>for</strong>mat:<br />

>openssl pkcs12 -in infile.p12 –out outfile.pem<br />

When prompted <strong>for</strong> a passphrase, specify ‘webspheremq’.<br />

The contents of the PEM file you create with the openssl utility must be appended<br />

to the key.pem file in the /var/mqm/qmgrs//ssl directory.<br />

Import DER Format File from OpenSSL into the GSKit Repository<br />

You must import the certificate from the <strong>OS</strong> <strong>2200</strong> QProcessor queue manager<br />

(OpenSSL) into the GSKit key repository. Use the following comm<strong>and</strong>s to add the<br />

certificate using iKeycmd:<br />

On UNIX:<br />

gsk7cmd -cert -add -db filename -pw password -label label -file<br />

filename -<strong>for</strong>mat binary<br />

On Windows:<br />

runmqckm -cert -add -db filename -pw password -label label -file<br />

filename -<strong>for</strong>mat binary<br />

Where:<br />

-db filename is the fully qualified path name of the CMS key database.<br />

-pw password is the password <strong>for</strong> the CMS key database.<br />

-label label is the label attached to the certificate.<br />

-file filename is the name of the file containing the certificate.<br />

-<strong>for</strong>mat binary is the <strong>for</strong>mat of the certificate. The value can be ASCII <strong>for</strong><br />

Base64-encoded ASCII or binary <strong>for</strong> Binary DER data. The default is ASCII.<br />

3843 3744–002 2–43


Advanced Configuration<br />

Example<br />

gsk7cmd -cert -add -db key.kdb -pw cms -label ibmwebspheremqqms -file<br />

server.der -<strong>for</strong>mat binary<br />

The SSL channel should start successfully once you have<br />

• Imported the OpenSSL certificate from the <strong>OS</strong> <strong>2200</strong> QProcessor system into the<br />

GSKit repository on the system using GSKit<br />

• Copied the GSKit certificate to the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>and</strong> deployed it into the<br />

key.pem <strong>and</strong> cacerts.pem files<br />

2.6. Advanced Configuration<br />

This subsection discusses two optional configuration tasks:<br />

• Creating <strong>and</strong> using exits.<br />

• Configuring <strong>MQ</strong>S<strong>2200</strong> as a static resource manager under Open Distributed<br />

Transaction Processing.<br />

2.6.1. Creating <strong>and</strong> Using Exits<br />

If your site requires special h<strong>and</strong>ling procedures during channel processing, such as<br />

enhanced security processing, you can include user-provided code, referred to as exit<br />

code. To use this functionality, you must create <strong>and</strong> deploy exit code to the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

Creating Exit Code<br />

Write your exit code in C (COBOL is not currently supported). If the exit is a data<br />

conversion exit, the function your code resides in must be named <strong>MQ</strong>Start. If the exit<br />

is any other type of exit, you can use any function name you want <strong>for</strong> your exit code,<br />

but you must add the following line to your code to create an empty <strong>MQ</strong>Start<br />

function:<br />

void <strong>MQ</strong>Start() {;} /* dummy entry point */<br />

The <strong>MQ</strong>Start entry point is required <strong>for</strong> the exit to be recognized by <strong>WebSphere</strong> <strong>MQ</strong>.<br />

Deploying Exit Code<br />

Once you have written your exit code, it must be deployed to the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. The UNX shell processor provides a tool to deploy exit code to the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. This tool is called buildexit.<br />

Use the buildexit tool to deploy your C source file containing your exit code to the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>buildexit -o <br />

2–44 3843 3744–002


Advanced Configuration<br />

For example, to deploy an exit written in C located in <strong>OS</strong> <strong>2200</strong> file<br />

JOHN*EXIT.SECURITY/C to the <strong>OS</strong> <strong>2200</strong> QProcessor into an object named secexit can<br />

use the following comm<strong>and</strong>:<br />

>buildexit -o secexit JOHN*EXIT.SECURITY/C<br />

The output looks similar to the following:<br />

buildexit: Transferred 2231 bytes to file /tmp/secexit.c<br />

Buildexit complete. secexit installed into /var/mqm/exits64<br />

Note: If you are deploying a data conversion exit, the object name you use MUST<br />

be _r where is the user-defined <strong>for</strong>mat you are using in<br />

your <strong>MQ</strong>MD.Format field. The <strong>for</strong>mat name must be all uppercase <strong>and</strong> no more than<br />

eight characters. You must also add the _r suffix to your object name. For example,<br />

if you want to create a data conversion exit to convert an <strong>MQ</strong>MD.Format you define<br />

named OURFMT you would deploy an exit with an object name of OURFMT_r.<br />

If the source file has errors, you will see the errors in the output. If errors are noted,<br />

correct the code <strong>and</strong> try to deploy again.<br />

Once the exit is deployed, verify it is valid. First, verify the object module has been<br />

deployed to /var/mqm/exits64:<br />

>cd /var/mqm/exits64<br />

>ls -l<br />

Verify that the file with the name of your target object name exists.<br />

Next, use the nm comm<strong>and</strong> to verify that the object module is valid <strong>and</strong> contains an<br />

<strong>MQ</strong>Start entry point <strong>and</strong> an entry point with your main exit code (if not a data<br />

conversion exit). In the following example, the main entry point is TESTchan <strong>and</strong> is a<br />

channel security exit:<br />

>cd /var/mqm/exits64<br />

>nm -g scyexit<br />

The output looks similar to the following:<br />

000000000000079c T <strong>MQ</strong>Start<br />

00000000000007a2 T TESTchan<br />

At this point you have deployed your exit. <strong>WebSphere</strong> <strong>MQ</strong> can now use your exit.<br />

Refer to IBM documentation <strong>for</strong> examples of how to configure your exit code in<br />

<strong>WebSphere</strong> <strong>MQ</strong>.<br />

When configuring exits other than data conversion exits in <strong>WebSphere</strong> <strong>MQ</strong>, you must<br />

refer to the exit as follows:<br />

/var/mqm/exits64/(EntryPoint)<br />

3843 3744–002 2–45


Advanced Configuration<br />

Replace with the object name you created with buildexit <strong>and</strong> replace<br />

EntryPoint with the function with your exit code in the object. Do not use the <strong>MQ</strong>Start<br />

dummy entry point. For example, if your exit object module is scyexit <strong>and</strong> the entry<br />

point <strong>for</strong> your exit code is SecFunction you can specify the following:<br />

/var/mqm/exits64/scyexit(SecFunction)<br />

The object module <strong>and</strong> entry point function name are case sensitive.<br />

Note: <strong>WebSphere</strong> <strong>MQ</strong> does not use the exit <strong>and</strong> generates an error to the error log<br />

files if the object module created by buildexit does not contain an <strong>MQ</strong>Start entry<br />

point. <strong>WebSphere</strong> <strong>MQ</strong> needs this entry point to verify the exit code is valid (or is<br />

used <strong>for</strong> data conversion in the case of data conversion exits).<br />

The following is an example of a channel security exit:<br />

#include <br />

#include <br />

#include <br />

#include <br />

void <strong>MQ</strong>Start() {;} /* dummy entry point <strong>MQ</strong> requires */<br />

void <strong>MQ</strong>ENTRY SecurityGate(P<strong>MQ</strong>CXP pExitParms<br />

,P<strong>MQ</strong>CD pChannelDef<br />

,P<strong>MQ</strong>LONG pDataLength<br />

,P<strong>MQ</strong>LONG pAgentBufferLength<br />

,P<strong>MQ</strong>CHAR pAgentBuffer<br />

,P<strong>MQ</strong>LONG pExitBufferLength<br />

,P<strong>MQ</strong>CHAR *pExitBuffer )<br />

{<br />

if(pExitParms->ExitReason == <strong>MQ</strong>XR_INIT)<br />

{<br />

/* This is the first entry into the exit, at channel initialization<br />

*/<br />

}<br />

else if(pExitParms->ExitReason == <strong>MQ</strong>XR_INIT_SEC)<br />

{<br />

/* This is where we do security checks */<br />

/* Reject caller, stop channel, security checks failed */<br />

pExitParms->ExitResponse = <strong>MQ</strong>XCC_CL<strong>OS</strong>E_CHANNEL;<br />

}<br />

else if(pExitParms->ExitReason == <strong>MQ</strong>XR_TERM)<br />

{<br />

/* This is at channel termination, cleanup resources */<br />

}<br />

return;<br />

}<br />

2–46 3843 3744–002


Advanced Configuration<br />

To use this security exit, you must deploy the code to the <strong>OS</strong> <strong>2200</strong> QProcessor using<br />

buildexit <strong>and</strong> then configure your channel to use the security exit. For example, if the<br />

object module you created was named secexit, you must define a channel to use the<br />

security exit as follows:<br />

>@wmq$*mqs$exe.unx<br />

>runmqsc QMGR<br />

>DEFINE CHANNEL(TO.LOCAL) CHLTYPE(RCVR) +<br />

>SCYEXIT('/var/mqm/exits64/secexit(SecurityGate)')<br />

>END<br />

2.6.2. Configuring W<strong>MQ</strong><strong>2200</strong> as a Static Resource Manager<br />

under Open Distributed Transaction Processing<br />

If you want to take advantage of the features of online transaction processing (OLTP)<br />

such as Two-Phase Commit <strong>for</strong> committing or rolling back global transactions that<br />

process W<strong>MQ</strong><strong>2200</strong> messages, configure W<strong>MQ</strong><strong>2200</strong> as a static resource manager<br />

under Open Distributed Transaction Processing (Open DTP).<br />

Multiple W<strong>MQ</strong><strong>2200</strong> installations can be configured as static resource managers under<br />

one Open Distributed Transaction Processing or under separate Open Distributed<br />

Transaction Processing installations. Refer to "2.8 Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s as<br />

Static Resource Managers under Open DTP" <strong>for</strong> more in<strong>for</strong>mation on configuring<br />

multiple W<strong>MQ</strong><strong>2200</strong>s.<br />

Per<strong>for</strong>m the following steps to configure W<strong>MQ</strong><strong>2200</strong> as a static resource manager<br />

(RM) under Open Distributed Transaction Processing.<br />

Note: File installation qualifier wmq$ is assumed.<br />

1. Update element wmq$*mqstools.mqswitch/comp-example to contain the qualifier<br />

of your default Open Distributed Transaction Processing installation. In the<br />

following steps, file installation qualifier otm$ is assumed.<br />

2. Add the runstream you edited in step 1 to compile the resource manager XA<br />

switch structure found in element wmq$*mqs$samples.mqswitch/c. This places<br />

the compiled object module <strong>MQ</strong>SWITCH/O in the file wmq$*mqs$samples.<br />

3. Add the new resource manager to the TMSCONFIG *groups section, using name<br />

<strong>MQ</strong>Series_XA_RMI <strong>for</strong> the resource manager identifier, RMID. The following<br />

TMSCONFIG statements adds the default queue manager (a queue manager<br />

created with the –q option) as a resource manager:<br />

*groups<br />

mqdefault ;<br />

RMID="<strong>MQ</strong>Series_XA_RMI"<br />

If you want to run transactions to a non-default queue manager (a queue manager<br />

created without the –q option), you must also include the openinfo statement in<br />

your group entry, to contain the non-default queue manager name. This instructs<br />

Open Distributed Transaction Processing as to which queue manager to involve in<br />

the global transaction:<br />

3843 3744–002 2–47


Advanced Configuration<br />

*groups<br />

mqnondef1 ;<br />

RMID="<strong>MQ</strong>Series_XA_RMI" ;<br />

openinfo = "QMGR2"<br />

4. Add the new group to any server or client in TMSCONFIG that uses this resource<br />

manager. Following is an example of a client TMSCONFIG configuration entry:<br />

*clients<br />

<strong>MQ</strong>CLIENT ;<br />

group = mqdefault<br />

5. Load or append this TMSCONFIG.<br />

6. Add otm$*tm$util.rminstall to make Open Distributed Transaction Processing<br />

aware of the RM. Provide the following answers:<br />

Enter file name of the RM xa_switch OM >W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES.<br />

Enter elt/vers name of RM xa_switch OM ><strong>MQ</strong>SWITCH/O<br />

Enter switch name <strong>for</strong> the RM ><strong>MQ</strong>RMIXASwitch<br />

Enter file containing RM XA gate bank object module >W<strong>MQ</strong>$*<strong>MQ</strong>S$LIB.<br />

Enter elt/vers name of RM XA gate bank object module ><strong>MQ</strong>S$ENTRY<br />

Enter file name of the xa/h header ><br />

Enter file name of the TM gate bank ><br />

Automatically @ADD RMLOADER {Y|} ><br />

End RMINSTALL. RMLOADER resides in RMINS$TEMP.<br />

7. Add the generated runstream found in *rmins$temp.rmloader. At the end of the<br />

load, verify you see a successful load message.<br />

8. Bring up the Open Distributed Transaction Processing TMSC processor.<br />

External Transaction Manager (TM) Notes<br />

<strong>WebSphere</strong> <strong>MQ</strong> XA/Open XA interface rules that are important to remember<br />

regarding the use of Open Distributed Transaction Processing with W<strong>MQ</strong><strong>2200</strong> include:<br />

• The tx_open call in your user application causes Open Distributed Transaction<br />

Processing to issue a xa_open call to the RM. The xa_info structure passed on any<br />

xa_open call by the TM includes the name of a non-default queue manager; if<br />

blank, it uses the default queue manager. This name takes the same <strong>for</strong>m as the<br />

name of the queue manager on an <strong>MQ</strong>CONN or <strong>MQ</strong>CONNX call.<br />

• Only one queue manager at a time can participate in a transaction coordinated by<br />

an external TM.<br />

• Applications calling an external TM can connect only to the queue manager<br />

participating in the transaction.<br />

• The queue manager that is participating in a transaction must be started <strong>and</strong><br />

running be<strong>for</strong>e the transaction starts.<br />

2–48 3843 3744–002


TMSC Recovery Server Notes<br />

Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS<br />

If the TM invokes the Open Distributed Transaction Processing recovery server to<br />

resolve a global transaction that involves W<strong>MQ</strong><strong>2200</strong> messaging in one of the<br />

transaction branches, the UNX shell ps comm<strong>and</strong> displays a process assigned to<br />

program TMSC. The recovery server is a child activity of program TMSC.<br />

The following example shows the recovery server process as program TMSC with<br />

runid OTMA:<br />

UID USERID PPID PID ST TIME COMMAND<br />

1001 mqm 4219 4220 Sl 57:39 TMSC (OTMA)<br />

The existence of the TMSC recovery server process is expected when a recovery<br />

situation occurs, <strong>and</strong> is st<strong>and</strong>ard operating procedure. The Open Distributed<br />

Transaction Processing recovery server calls W<strong>MQ</strong><strong>2200</strong> as the resource manager to<br />

resolve its branch in the global transaction. The recovery server remains active as long<br />

as the TMSC background run is up, <strong>and</strong> remains in the ps display until the TMSC<br />

background job is terminated.<br />

If you want to end the queue manager after a recovery has taken place (a process <strong>for</strong><br />

TMSC exists in the UNX shell ps display), the proper procedure is to first terminate the<br />

Open Distributed Transaction Processing TMSC background run to allow the recovery<br />

server to disassociate. Then end the queue manager.<br />

2.7. Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s<br />

Using COMUS<br />

<strong>WebSphere</strong> <strong>MQ</strong> allows you to generate multiple alternate W<strong>MQ</strong><strong>2200</strong> installations at<br />

your site. Each alternate installation requires a unique file qualifier <strong>for</strong> its product file<br />

set, as well as unique BDIs. The product remains an absolute-only product; there<strong>for</strong>e,<br />

no PRIMUS changes or local code can be applied through this build capability. You can<br />

then install both test <strong>and</strong> production versions of W<strong>MQ</strong><strong>2200</strong> on the same<br />

<strong>OS</strong> <strong>2200</strong> host.<br />

A W<strong>MQ</strong><strong>2200</strong> installation has a one to one relationship between the installed product<br />

<strong>and</strong> an <strong>OS</strong> <strong>2200</strong> QProcessor. This relationship is configured in the IC$*Processors file<br />

<strong>and</strong> managed by the IC<strong>2200</strong> ICADMIN utility. (Refer to the ClearPath Specialty Engine<br />

<strong>for</strong> <strong>OS</strong> <strong>2200</strong> Configuration Guide <strong>for</strong> more details on ICADMIN). The W<strong>MQ</strong><strong>2200</strong><br />

product can have only one mode of the product installed on each <strong>OS</strong> <strong>2200</strong><br />

QProcessor. W<strong>MQ</strong><strong>2200</strong> needs the ability to select which <strong>OS</strong> <strong>2200</strong> QProcessor to<br />

remotely install on <strong>for</strong> each W<strong>MQ</strong><strong>2200</strong> installation mode.<br />

To generate a new installation tape from the release master using COMUS, complete<br />

the following:<br />

• Establish a COMUS database using the COMUS COINIT processor.<br />

• Register the tape in the database using the COMUS REGISTER comm<strong>and</strong>.<br />

3843 3744–002 2–49


Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS<br />

• Generate the build runstream using the BUILD comm<strong>and</strong>.<br />

During the generation of the build runstream, the following in<strong>for</strong>mation is solicited<br />

from the user:<br />

• W<strong>MQ</strong><strong>2200</strong> file set qualifier<br />

• <strong>MQ</strong>S subsystem gate bank BDI<br />

• UNX subsystem gate bank BDI<br />

• Whether or not the BIS interface is used<br />

• OLTP-TM<strong>2200</strong> library file<br />

• Installed MCB filename<br />

Note: Soliciting <strong>for</strong> the OLTP-TM<strong>2200</strong> library files allows <strong>for</strong> the use of different<br />

libraries by the different W<strong>MQ</strong><strong>2200</strong> installations.<br />

Basically, the build capability is a relinking of object modules to generate <strong>and</strong> obtain<br />

new entry point addresses created by a different set of BDIs supplied to the build<br />

routine.<br />

Two files exist on the W<strong>MQ</strong><strong>2200</strong> release tape to facilitate the COMUS build:<br />

W<strong>MQ</strong>$OM <strong>and</strong> W<strong>MQ</strong>$BLDPRT. File W<strong>MQ</strong>$OM contains the compiled or assembled<br />

object modules <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> subsystems, <strong>and</strong> <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> utilities <strong>and</strong><br />

executables. File W<strong>MQ</strong>$BLDPRT contains the COMUS build results after the build is<br />

completed.<br />

The COMUS build capability offers selection of an OLTP-TM<strong>2200</strong> library. The alternate<br />

W<strong>MQ</strong><strong>2200</strong> installation can be registered as a resource manager under an<br />

OLTP-TM<strong>2200</strong> installation already acting as the transaction manager <strong>for</strong> the default<br />

W<strong>MQ</strong><strong>2200</strong> installation, or an alternate OLTP-TM<strong>2200</strong> installation. Instructions <strong>for</strong><br />

registering multiple W<strong>MQ</strong><strong>2200</strong> installations as a resource manager under the same, or<br />

alternate, OLTP-TM<strong>2200</strong> can be found in Section 2.8, “Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s<br />

as Static Resource Managers under Open DTP.”<br />

The W<strong>MQ</strong><strong>2200</strong> COMUS build creates a new product tape that is SOLAR installable.<br />

Note: This new product tape cannot be used as input to the build process to<br />

generate another installable version of the product.<br />

Requirements <strong>for</strong> a Successful Build<br />

The build process requires the following products:<br />

• ED. The COMUS PBR calls @ED to edit in site-unique values.<br />

• PADS. The W<strong>MQ</strong><strong>2200</strong> build stream includes SYS$LIB$*PADS.PADS$DIAGDMP in<br />

the link of <strong>MQ</strong>S$SUBS.<br />

• URTS. The W<strong>MQ</strong><strong>2200</strong> build stream includes elements from file<br />

SYS$LIB$*EMSRVC.<br />

2–50 3843 3744–002


In<strong>for</strong>mation Needed Prior to the Build<br />

Build Steps<br />

Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS<br />

Output from the COMUS build comm<strong>and</strong> is a product generation runstream. This<br />

runstream is stored in the COMUS database file W<strong>MQ</strong><strong>2200</strong>*COMRUN.<br />

When issuing a COMUS build comm<strong>and</strong> to create an alternate W<strong>MQ</strong><strong>2200</strong> product<br />

tape, the following values are needed <strong>for</strong> input:<br />

• The qualifier <strong>for</strong> the alternate installation product file set. This qualifier is indicated<br />

on the destination file names in the alternate file sets CO$UTIL.SOLAR$SGS<br />

element. The default qualifier is "W<strong>MQ</strong>$." The new qualifier must be added to the<br />

Product Qualifier\Mode field of the associated <strong>OS</strong> <strong>2200</strong> QProcessor host in the<br />

IC$*PROCESS<strong>OS</strong>RS file by using the ICADMIN utility.<br />

Note: The source files created from this build, <strong>and</strong> written to the alternate<br />

installation tape, acquires the project-id of this build's execution as their file<br />

qualifier.<br />

• The new BatchRunId value (1-4 alphanumeric chars) to differentiate this alternate<br />

installation's batch runs from any other W<strong>MQ</strong><strong>2200</strong> installation's batch runs. The<br />

default BatchRunId value is "W<strong>MQ</strong>A."<br />

• The new <strong>MQ</strong>S subsystem gate bank BDI. There is no default value.<br />

• The new UNX subsystem gate bank BDI. There is no default value.<br />

• The BM$<strong>MQ</strong>S subsystem gate bank BDI (if the Business In<strong>for</strong>mation Server basic<br />

mode interface is to be used). There is no default value.<br />

• The fully qualified name of the OLTP-TM<strong>2200</strong> library file "TM$LIB" (enables server<br />

program triggering). The default OLTP-TM<strong>2200</strong> library file name is "OTM$*TM$LIB."<br />

• The fully qualified name of the MCB installation (library) file "MCB$" (enables TIP<br />

program triggering). The default MCB installation (library) file name is<br />

"MCB3*MCB$."<br />

This procedure assumes a COMUS database has been established on the system<br />

(through the COMUS CO$INIT processor). To create the alternate installation, per<strong>for</strong>m<br />

the following steps:<br />

1. Set the COMUS database qualifier.<br />

2. Call COMUS.<br />

3. Register the release master.<br />

4. Create the product generation runstream through the COMUS build comm<strong>and</strong>.<br />

5. View the runstream in the COMRUN file to verify that it contains the correct<br />

in<strong>for</strong>mation <strong>for</strong> this build.<br />

6. When you are satisfied, @START the product generation runstream.<br />

7. When the execution completes, COMUS sends the COMUS print file to the default<br />

printer.<br />

3843 3744–002 2–51


Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS<br />

8. The W<strong>MQ</strong><strong>2200</strong> part of the product generation runstream contains a breakpoint at<br />

file *<strong>MQ</strong>S$BLDPRT. This file is written to your alternate installation tape<br />

as file #13 <strong>and</strong> is then deleted by COMUS. In order to view this file, you must<br />

obtain it from the alternate installation tape.<br />

9. If the product generation completes successfully, the alternate installation tape is<br />

available to be registered <strong>and</strong> installed through SOLAR.<br />

Example of a Generation <strong>and</strong> <strong>Installation</strong><br />

In this example, the following sample values are used:<br />

COMUS database qualifier : SYLVESTER<br />

Product name : W<strong>MQ</strong><strong>2200</strong><br />

Tape Assign Mnemonic : HICM (<strong>for</strong> 36-track tapes)<br />

W<strong>MQ</strong><strong>2200</strong> release master : 295H (Assigned as 'MASTER')<br />

File set qualifier : W<strong>MQ</strong>$Z<br />

Alternate BatchRunId : W<strong>MQ</strong>Z<br />

Alternate <strong>MQ</strong>AdminKeyId : W<strong>MQ</strong>Z<br />

Alternate <strong>MQ</strong>S BDI : 206051<br />

Alternate UNX BDI : 206052<br />

Alternate BM$<strong>MQ</strong>S BDI : 206053<br />

Alternate project ID : W<strong>MQ</strong>$Z$6R1<br />

Alternate installation tape : 300H (Assigned as 'NEWMASTER')<br />

1. Set the COMUS database qualifier:<br />

@QUAL SYLVESTER<br />

2. Call COMUS to register the W<strong>MQ</strong><strong>2200</strong> product release master (if the W<strong>MQ</strong><strong>2200</strong><br />

product release master spans multiple tapes, separate the tape numbers with<br />

slashes).<br />

For example:<br />

@SYS$LIB$*COMUS.COMUS W<strong>MQ</strong><strong>2200</strong><br />

COMUS 6R8D (060216 1257:26) 2006 Apr 26 Wed 0929:34<br />

Copyright (c) 1995-2010 Unisys Corporation.<br />

All rights reserved.<br />

UNISYS CONFIDENTIAL<br />

Database Qualifier: SYLVESTER<br />

COMMAND ? >default<br />

DIRECTIVE ? >p regttype<br />

DEFAULT: REGTTYPE VALUE: HICL<br />

DIRECTIVE ? >u regttype hicm<br />

DIRECTIVE ? >p regttype<br />

DEFAULT: REGTTYPE VALUE: HICM<br />

DIRECTIVE ? >p ttype<br />

DEFAULT: TTYPE VALUE: HICL<br />

2–52 3843 3744–002


Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS<br />

DIRECTIVE ? >u ttype hicm<br />

DIRECTIVE ? >p ttype<br />

DEFAULT: TTYPE VALUE: HICM<br />

DIRECTIVE ? >e<br />

DEFAULT TABLE UPDATED - DATE: 060426 TIME: 0929<br />

DEFAULTS INSERTED/DELETED/UPDATED - 0 / 0 / 2<br />

DEFAULTS AT START/END OF SESSION - 31 / 31<br />

DEFAULTS TASK COMPLETED *************************<br />

COMMAND ? >register,sl reel=295H<br />

PRODUCTS CONTAINED ON REEL# 295H<br />

PRODUCT LEVEL TYPE BUILD-STATUS<br />

W<strong>MQ</strong><strong>2200</strong> 6R1 MASTER BUILD<br />

REGISTER PRODUCT 'W<strong>MQ</strong><strong>2200</strong> 6R1' - /N/E(END) ? >Y<br />

************ PRODUCT INFO FOR 'W<strong>MQ</strong><strong>2200</strong><br />

6R1'***************************<br />

(C) Copyright 2010, Unisys Corporation<br />

All rights reserved (Unpublished work)<br />

UNISYS PROPRIETARY<br />

This program(s) including the in<strong>for</strong>mation<br />

contained herein, is confidential <strong>and</strong> proprietary<br />

to Unisys Corporation, <strong>and</strong> shall not be used or<br />

reproduced <strong>for</strong> any purpose, except with written<br />

consent/license of Unisys Corporation.<br />

******************** END INFO<br />

*****************************************<br />

PRESS TRANSMIT TO CONTINUE OR T(TOP) > (transmit)<br />

NO KEYWORDS FOR 'W<strong>MQ</strong><strong>2200</strong> 6R1'.<br />

@BRKPT PRINT$/042606093001 .<br />

@SYM 042606093001.,,[pr] . srl sel num<br />

#1 NUM SELECT LIST: 1<br />

LIST DIRECTIVE ?>cview,r<br />

ACTIVE LIST: 1<br />

ENTER FIELD NAMES FOR REPORT>product level dsu<br />

ENTER FIELD NAMES FOR REPORT>build-flag install-flag config-flag<br />

ENTER FIELD NAMES FOR REPORT>(transmit)<br />

PRODUCT : W<strong>MQ</strong><strong>2200</strong> LEVEL : 6R1 DSU :<br />

BUILD-FLAG : BUILDABLE INST-FLAG : NON-INSTALL CONFIG-FLAG :<br />

NON-CONFIG<br />

***************************************************************<br />

END OF REPORT<br />

VIEW DIRECTIVE ?><br />

3843 3744–002 2–53


Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS<br />

3. Use the build comm<strong>and</strong> to create a product generation runstream:<br />

VIEW DIRECTIVE ?>build,q W<strong>MQ</strong><strong>2200</strong>,6R1<br />

LIST TASK COMPLETED *************************<br />

For each default question, you can enter one of the following responses:<br />

• An appropriate value.<br />

• A null string or spaces to maintain the current default value.<br />

• QUERY causes COMUS to ask <strong>for</strong> the default on every BUILD of the product.<br />

• BLANK sets the value of the default to null.<br />

4. At this point, you can change one or more of the W<strong>MQ</strong><strong>2200</strong> product default<br />

values. For each default question, you can enter one of the following responses:<br />

• An appropriate value.<br />

• A null string or spaces to maintain the current default value.<br />

• QUERY causes COMUS to ask <strong>for</strong> the default on every BUILD of the product.<br />

• BLANK sets the value of the default to null.<br />

Default generation recovery mode (ON or ) ? >(transmit)<br />

Default project id () ? >W<strong>MQ</strong>$Z$6R1<br />

Default run id () ? >W<strong>MQ</strong>Z<br />

Default run options () ? >(transmit)<br />

Default run priority () ? >(transmit)<br />

Default tape equipment type () ? >(transmit)<br />

Default tape assign options () ? >(transmit)<br />

Default generation type (DISK/DISK or ) ? >(transmit)<br />

Permanent SGSs () ? >(transmit)<br />

COMUS copies the registered W<strong>MQ</strong><strong>2200</strong> 6R1 release master’s CO$UTIL file into<br />

[project-id]*CO$UTIL.COMUS, then references the release master's DEFMAKE<br />

routine in [project-id]*CO$UTIL in order to query specific values associated with this<br />

alternate installation:<br />

*** Define Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong> Values ***<br />

Enter the new W<strong>MQ</strong><strong>2200</strong> file set qualifier () >W<strong>MQ</strong>$Z<br />

Is qualifier, W<strong>MQ</strong>$Z, correct ( or N) ? >(transmit)<br />

Enter the new BatchRunId () >W<strong>MQ</strong>Z<br />

Is BatchRunId, <strong>MQ</strong>SZ, correct ( or N) ? >(transmit)<br />

Enter the <strong>MQ</strong>S subsystem gate bank BDI, <strong>for</strong>m 20nnnn >206051<br />

Is the <strong>MQ</strong>S gate bank BDI, 206051, correct ( or N) ? >(transmit)<br />

Enter the UNX subsystem gate bank BDI, <strong>for</strong>m 20nnnn >206052<br />

Is the UNX gate bank BDI, 206052, correct ( or N) ? >(transmit)<br />

Is the basic mode interface to be installed (Y or ) ? >Y<br />

Enter the BM$<strong>MQ</strong>S subsystem gate bank BDI, <strong>for</strong>m 20nnnn >206053<br />

Is the BM$<strong>MQ</strong>S gate bank BDI, 206053, correct ( or N) ? >(transmit)<br />

Enter full name of OLTP-TM<strong>2200</strong> library file TM$LIB, without the period<br />

() >(transmit)<br />

Enter the full name of MCB installation (library) file, without the<br />

period () >MCB8*MCB$<br />

2–54 3843 3744–002


Generating Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s Using COMUS<br />

Is the MCB installation (library) file, MCB8*MCB$, correct ( or N) ?<br />

>(transmit)<br />

*** Alternate W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong> Values defined ***<br />

Project id <strong>for</strong> this generation () ? >(transmit)<br />

Run id <strong>for</strong> this generation () ? >(transmit)<br />

MASTER - reel/file./ ? >295H<br />

Generation id ? >6R1<br />

Generation heading () ? >W<strong>MQ</strong>$Z BUILD - LEVEL 6R1<br />

Generation reason () ? >BUILD OF W<strong>MQ</strong>$Z LOCALLY<br />

Generation reason () ? >(transmit)<br />

New change number () ? >(transmit)<br />

Type of generation (FULL or ) ? >FULL<br />

NEWMASTER - reel/file./NONE/ ? >300H<br />

The runstream has been saved in 'SYLVESTER*COMRUN(1).1/W<strong>MQ</strong><strong>2200</strong>6R1'<br />

View the runstream (Y or ) ? >(transmit)<br />

Print a copy of the runstream (Y or ) ? >(transmit)<br />

Start the runstream (Y or ) ? >(transmit)<br />

The runstream has been saved in 'SYLVESTER*COMRUN(1).1/W<strong>MQ</strong><strong>2200</strong>6R1'<br />

UPDATING ACCESS FILES ...<br />

ACCESS FILES HAVE BEEN UPDATED<br />

BUILD TASK COMPLETED *************************<br />

COMMAND ? >EXIT<br />

END COMUS<br />

5. Execute the following alternate installation build:<br />

@START,A SYLVESTER*COMRUN.1/W<strong>MQ</strong><strong>2200</strong>6R1<br />

After executing the COMUS-created product generation runstream in the<br />

COMRUN file, check the results <strong>for</strong> errors.<br />

Installing the Alternate Build<br />

If the product generation completes successfully, you can register <strong>and</strong> install your<br />

alternate installation tape through SOLAR, using the st<strong>and</strong>ard procedure <strong>for</strong> registering<br />

<strong>and</strong> installing product tapes in use at your site.<br />

Be<strong>for</strong>e installing your alternate installation tape with SOLAR you must use the<br />

ICADMIN utility to configure the <strong>OS</strong> <strong>2200</strong> QProcessor designation number, port, <strong>and</strong><br />

new W<strong>MQ</strong><strong>2200</strong> installation qualifier. Doing this populates the IC$*PROCESSORS file<br />

with the proper entries <strong>for</strong> the SOLAR install. Since only one installation of W<strong>MQ</strong><strong>2200</strong><br />

is allowed on one <strong>OS</strong> <strong>2200</strong> QProcessor at a time, it might be necessary to remove old<br />

entries in addition to adding new entries. For example, assume you are ready to install<br />

an alternate build of W<strong>MQ</strong><strong>2200</strong> with qualifier W<strong>MQ</strong>$Z on <strong>OS</strong> <strong>2200</strong> QProcessor<br />

designation 1 <strong>and</strong> designation 2.<br />

First determine if there are any current entries <strong>for</strong> any <strong>OS</strong> <strong>2200</strong> QProcessors.<br />

@ICADMIN<br />

list_processor Q<br />

3843 3744–002 2–55


Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s as Static Resource Managers under Open DTP<br />

Sample output:<br />

QPROCESSOR 1 DEFAULT QPRM1:22719 W<strong>MQ</strong>$<br />

QPROCESSOR 2 DEFAULT QPRM2:22719 W<strong>MQ</strong>$<br />

Since there are two entries <strong>for</strong> <strong>OS</strong> <strong>2200</strong> QProcessors 1 <strong>and</strong> 2 with a mode of W<strong>MQ</strong>$,<br />

you must remove those entries.<br />

@ICADMIN<br />

delete_processor Q 1<br />

delete_processor Q 2<br />

Now add back the new entries <strong>for</strong> <strong>OS</strong> <strong>2200</strong> QProcessors 1 <strong>and</strong> 2 with the mode of<br />

W<strong>MQ</strong>$Z.<br />

@ICADMIN<br />

add_processor Q 1 W<strong>MQ</strong>$Z<br />

add_processor Q 2 W<strong>MQ</strong>$Z<br />

list_processor Q<br />

Sample output:<br />

QPROCESSOR 1 DEFAULT QPRM1:22719 W<strong>MQ</strong>$Z<br />

QPROCESSOR 2 DEFAULT QPRM2:22719 W<strong>MQ</strong>$Z<br />

Now you are ready to install your alternate mode of W<strong>MQ</strong><strong>2200</strong>.<br />

Refer to the ClearPath Specialty Engine <strong>for</strong> <strong>OS</strong> <strong>2200</strong> Configuration Guide <strong>for</strong> more<br />

in<strong>for</strong>mation on ICADMIN.<br />

2.8. Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s as Static<br />

Resource Managers under Open DTP<br />

The capability of building <strong>and</strong> installing an alternate version of W<strong>MQ</strong><strong>2200</strong> on site<br />

provides you the ability of configuring both the default <strong>and</strong> alternate W<strong>MQ</strong><strong>2200</strong><br />

installations as resource managers under Open DTP in two ways:<br />

• You can configure each W<strong>MQ</strong><strong>2200</strong> installation as a resource manager under<br />

separate Open DTP installations (one-to-one).<br />

• You can configure all W<strong>MQ</strong><strong>2200</strong> installations under one Open DTP installation<br />

(many-to-one).<br />

Configuring Each W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong> under a Separate Open DTP<br />

Follow the steps in Section 2.6.2, "Configuring W<strong>MQ</strong><strong>2200</strong> as a Static Resource<br />

Manager under Open Distributed Transaction Processing" to configure the default<br />

W<strong>MQ</strong><strong>2200</strong> installation under the default Open DTP installation. Then follow the same<br />

steps again using the file names <strong>and</strong> qualifiers <strong>for</strong> your new W<strong>MQ</strong><strong>2200</strong> installation <strong>and</strong><br />

the alternate Open DTP installation.<br />

2–56 3843 3744–002


Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s as Static Resource Managers under Open DTP<br />

Configuring Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s under the Same Open<br />

DTP<br />

You can configure the default W<strong>MQ</strong><strong>2200</strong> installation <strong>and</strong> an alternate W<strong>MQ</strong><strong>2200</strong><br />

installation as two unique resource managers under one Open DTP. This helps<br />

conserve system resources <strong>and</strong> simplify system management.<br />

1. Configure the default W<strong>MQ</strong><strong>2200</strong> installation as a resource manager under your<br />

Open DTP installation following steps in "Configuring W<strong>MQ</strong><strong>2200</strong> as a Static<br />

Resource Manager."<br />

In the following steps, qualifier OTM$ is assumed <strong>for</strong> the Open DTP installation<br />

used to manage multiple W<strong>MQ</strong><strong>2200</strong> installations as resource managers.<br />

2. Build <strong>and</strong> install your alternate version of W<strong>MQ</strong><strong>2200</strong>.<br />

3. Update *<strong>MQ</strong>STOOLS.<strong>MQ</strong>SWITCH/COMP-EXAMPLE to change<br />

to the qualifier of the Open DTP installation to otm$ (or the qualifier<br />

of an alternate Open DTP if using one). Ensure that the qualifier <strong>for</strong> the<br />

<strong>MQ</strong>S$SAMPLES file is changed to the new .<br />

4. Update element *<strong>MQ</strong>S$SAMPLES.<strong>MQ</strong>SWITCH/C. Change the resource<br />

manager name member in the xa_switch_t <strong>MQ</strong>RMIXASwitch structure. This name<br />

can be up to 32 characters long. For example, the default name is<br />

“<strong>MQ</strong>Series_XA_RMI”. You can change it to “<strong>MQ</strong>Series_XA_RMI_1” to denote the<br />

alternate W<strong>MQ</strong><strong>2200</strong> installation.<br />

Note: Retain the double quotes around the name.<br />

5. Add element *<strong>MQ</strong>STOOLS.<strong>MQ</strong>SWITCH/COMP-EXAMPLE to compile<br />

code module <strong>MQ</strong>SWITCH/C <strong>and</strong> create the object module <strong>MQ</strong>SWITCH/O in<br />

*<strong>MQ</strong>S$SAMPLES.<br />

6. Add the new resource manager to the TMSCONFIG *GROUPS section. Use a<br />

unique group name <strong>and</strong> the new resource manager name <strong>for</strong> the RMID,<br />

<strong>MQ</strong>Series_XA_RMI_1.<br />

The following GROUPS entry is an example <strong>for</strong> a default queue manager:<br />

*GROUPS<br />

mqdefalt ;<br />

RMID = "<strong>MQ</strong>Series_XA_RMI_1"<br />

If you want to run transactions to a non-default queue manager, you must include<br />

the openinfo statement in your new group entry to contain the non-default queue<br />

manager name as follows:<br />

*GROUPS<br />

mqnondefalt ;<br />

RMID = "<strong>MQ</strong>Series_XA_RMI_1" ;<br />

openinfo = "ALTQMGR"<br />

3843 3744–002 2–57


Multiple W<strong>MQ</strong><strong>2200</strong> <strong>Installation</strong>s as Static Resource Managers under Open DTP<br />

7. Add the new GROUPS entry to any Open DTP server or client definition in<br />

TMSCONFIG that uses this resource manager. The following is a client example:<br />

*CLIENTS<br />

<strong>MQ</strong>CLIENTALT ;<br />

group = mqdefalt<br />

8. Load or append the TMSCONFIG.<br />

9. Add OTM$*TM$UTIL.RMINSTALL <strong>and</strong> respond as in the following example:<br />

Enter file name of the RM xa_switch OM ><br />

*<strong>MQ</strong>S$SAMPLES<br />

Enter elt/vers name of RM_xa_switch OM ><br />

<strong>MQ</strong>SWITCH/O<br />

Enter switch name <strong>for</strong> the RM <br />

<strong>MQ</strong>RMIXASwitch<br />

Enter file containing RM XA gate bank object module ><br />

*<strong>MQ</strong>S$LIB<br />

Enter elt/vers name of RM XA gate bank object module > ><br />

<strong>MQ</strong>S$ENTRY<br />

Enter file name of the xa/h header ><br />

<br />

Enter file name of TM gate bank ><br />

<br />

Automatically @ADD RMLOADER {Y|}> <<br />

<br />

10. Add the generated runstream RMINS$TEMP.RMLOADER <strong>and</strong> make sure you see<br />

the successful load message.<br />

You can now build <strong>and</strong> execute application programs that use the tx_* API verbs to<br />

participate in global transactions with your alternate W<strong>MQ</strong><strong>2200</strong> installation under the<br />

same Open DTP.<br />

2–58 3843 3744–002


Section 3<br />

<strong>Administration</strong><br />

Introduction<br />

This section discusses W<strong>MQ</strong><strong>2200</strong> administrative tasks.<br />

W<strong>MQ</strong><strong>2200</strong> is a hybrid architecture composed of two systems—the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. <strong>WebSphere</strong> <strong>MQ</strong> runs on the <strong>OS</strong> <strong>2200</strong> QProcessor while user<br />

applications <strong>and</strong> the shell (the UNX dem<strong>and</strong> shell) run on the <strong>OS</strong> <strong>2200</strong>.<br />

<strong>Administration</strong> of <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> <strong>OS</strong> <strong>2200</strong> is accomplished through a variety of<br />

ways including:<br />

• W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

• UNX Shell<br />

• <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console<br />

• <strong>WebSphere</strong> <strong>MQ</strong> Explorer<br />

• Third-party software<br />

The tools <strong>and</strong> utilities mentioned above provide overlapping functionality which allows<br />

the W<strong>MQ</strong><strong>2200</strong> administrator a variety of means to configure, manage <strong>and</strong> administer<br />

the <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> <strong>OS</strong> <strong>2200</strong> system. Full upwards compatibility is provided <strong>for</strong><br />

scripts created <strong>and</strong> used with previous levels of W<strong>MQ</strong><strong>2200</strong>. In addition, some of the<br />

W<strong>MQ</strong><strong>2200</strong> system tasks such as security, backup/restore, diagnostic gathering, <strong>and</strong><br />

configuration have been added to the new web-based <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console.<br />

In this section, each task references the various utilities that per<strong>for</strong>m the task. Details<br />

on comm<strong>and</strong> syntax can be found in Appendix E <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> Daemon<br />

Administrative Utility, Appendix F <strong>for</strong> UNX Shell, <strong>and</strong> Appendix G <strong>for</strong> <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console.<br />

Use the following table as a key to navigating this section.<br />

To … See subsection …<br />

Start up or shut down W<strong>MQ</strong><strong>2200</strong> 3.1<br />

Start up <strong>and</strong> terminate queue managers 3.2<br />

Configure <strong>MQ</strong> .ini files to customize W<strong>MQ</strong><strong>2200</strong> 3.3<br />

3843 3744–002 3–1


Start Up or Shut Down W<strong>MQ</strong><strong>2200</strong><br />

To … See subsection …<br />

Secure access to Queues from <strong>OS</strong> <strong>2200</strong> users 3.4<br />

Manage Queue Manager log files 3.5<br />

Backup of Queue Manager data 3.6<br />

W<strong>MQ</strong><strong>2200</strong> administrative tools <strong>and</strong> sample programs 3.7<br />

Use <strong>MQ</strong>Series Explorer <strong>for</strong> remote administration 3.8<br />

3.1. Start Up or Shut Down W<strong>MQ</strong><strong>2200</strong><br />

To ensure data integrity <strong>and</strong> recoverability, complete the following startup <strong>and</strong><br />

shutdown procedure.<br />

3.1.1. Start Up<br />

1. Start the <strong>OS</strong> <strong>2200</strong> QProcessor. Ensure the IC Launcher starts. You can use the<br />

Interconnect Configuration module in the Configuration category of the<br />

<strong>Administration</strong> Console to verify the IC Launcher is active. The service status must<br />

be listed as Running.<br />

2. Boot the <strong>OS</strong> <strong>2200</strong> system.<br />

3. Ensure COMAPI, CPCOMM, <strong>and</strong> DDP-FJT is running. These can normally be started<br />

when the <strong>OS</strong> <strong>2200</strong> system is booted. You can use the @@CONS T,B keyin to verify<br />

that each interface has started. Refer to the documentation of each product <strong>for</strong><br />

more in<strong>for</strong>mation.<br />

4. Start the W<strong>MQ</strong><strong>2200</strong> daemon <strong>and</strong> ensure connectivity is established with the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. Execute @*<strong>MQ</strong>S$EXE.STARTUP to start<br />

the W<strong>MQ</strong><strong>2200</strong> daemon. The startup program reports if the connection to the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor is successful.<br />

>@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.STARTUP<br />

Daemon started successfully.<br />

Daemon connected to QProcessor successfully!<br />

API is ready <strong>for</strong> use.<br />

In addition, you can use the @@CONS APISTATUS comm<strong>and</strong> to<br />

view the current status of the W<strong>MQ</strong><strong>2200</strong> QProcessor API connection. The W<strong>MQ</strong><br />

Keyin is configured in the W<strong>MQ</strong><strong>2200</strong> configuration file in the Daemon KeyId<br />

section. The Connection Status must be listed as “Connected”:<br />

STATUS:<br />

-------------------------------<br />

Connection Status: Connected<br />

5. Use the UNX shell to start queue managers, listeners, trigger monitors, <strong>and</strong> all<br />

other <strong>WebSphere</strong> <strong>MQ</strong> activities. The exact procedure <strong>and</strong> comm<strong>and</strong>s depend on<br />

the site requirements.<br />

3–2 3843 3744–002


Startup or Terminate Queue Managers<br />

6. If running with W<strong>MQ</strong><strong>2200</strong> as a resource manager under Open DTP, reload the<br />

OLTP tmsconfig <strong>and</strong> run RMINSTALL.<br />

7. Start the OLTP TMSC background run.<br />

8. Start user programs on the <strong>OS</strong> <strong>2200</strong>.<br />

3.1.2. Shut Down<br />

1. Put a system hold on BATCH <strong>and</strong>/or TIP application starts.<br />

2. Use the UNX shell to stop all <strong>WebSphere</strong> <strong>MQ</strong> queue managers, channels,<br />

listeners, <strong>and</strong> all other activities.<br />

3. Verify all <strong>MQ</strong> activity has stopped. You can use the mqstatus comm<strong>and</strong> in the UNX<br />

shell to verify if all <strong>WebSphere</strong> <strong>MQ</strong> activity has terminated:<br />

>@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqstatus<br />

>There are no <strong>MQ</strong> activities. It is safe to shut down.<br />

Alternatively, you can use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to<br />

check the status of <strong>WebSphere</strong> <strong>MQ</strong> activity on the <strong>OS</strong> <strong>2200</strong> QProcessor. Use the<br />

Manage <strong>MQ</strong> module in the Management category.<br />

4. Shut down the W<strong>MQ</strong><strong>2200</strong> daemon. Use the SHUTDOWN keyin to the daemon:<br />

>@@CONS SHUTDOWN<br />

The following is returned to the terminal that issued the SHUTDOWN keyin:<br />

W<strong>MQ</strong>$ daemon terminating.<br />

Daemon may take a minute to end.<br />

W<strong>MQ</strong>$ daemon terminated.<br />

In addition, the daemon background run must terminate:<br />

W<strong>MQ</strong> FIN<br />

5. Terminate OLTP (if using).<br />

6. Shut down the <strong>OS</strong> <strong>2200</strong>.<br />

7. Shut down the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

3.2. Startup or Terminate Queue Managers<br />

3.2.1. Starting Queue Managers<br />

A queue manager can be started in the following ways:<br />

• Using the START comm<strong>and</strong> of the W<strong>MQ</strong><strong>2200</strong> Daemon.<br />

• Using the strmqm comm<strong>and</strong>.<br />

3843 3744–002 3–3


Startup or Terminate Queue Managers<br />

3.2.1.1. W<strong>MQ</strong><strong>2200</strong> Daemon START Comm<strong>and</strong><br />

You can use the W<strong>MQ</strong><strong>2200</strong> daemon START comm<strong>and</strong> to start one queue manager or<br />

to start every queue manager that has been created within your W<strong>MQ</strong><strong>2200</strong> system.<br />

@@CONS keyinid START queuemanager<br />

@@CONS keyinid START ALL<br />

Where queuemanager is the name of a particular queue that has previously been<br />

created. See Appendix E, "W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility," <strong>for</strong> more<br />

in<strong>for</strong>mation on the START comm<strong>and</strong>.<br />

Note: Remember that the <strong>MQ</strong>Authority parameter determines whether Object<br />

Authority Manager (OAM) is enabled <strong>for</strong> a queue manager when it was created.<br />

Refer to Section 2," <strong>Installation</strong> <strong>and</strong> Configuration," <strong>for</strong> more in<strong>for</strong>mation.<br />

3.2.1.2. strmqm Comm<strong>and</strong><br />

The strmqm comm<strong>and</strong> can also be used to start queue managers. Enter the strmqm<br />

comm<strong>and</strong> to start each queue manager.<br />

If You Use the UNX Shell to Administer W<strong>MQ</strong><strong>2200</strong><br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>strmqm <br />

>exit<br />

See Appendix F, "UNX Shell," <strong>for</strong> more in<strong>for</strong>mation on using UNX.<br />

If You Use <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console <strong>for</strong><br />

Non-interactive W<strong>MQ</strong><strong>2200</strong> Comm<strong>and</strong>s<br />

Navigate to the Manage <strong>MQ</strong> module under the Management tab.<br />

Select the queue manager to start by clicking on the start action associated with the<br />

queue manager. All created queue managers appear in the queue manager table. All<br />

queue managers can be started by selecting the Start All button found in this<br />

module.<br />

Refer to the QProcessor <strong>Administration</strong> Console Help <strong>for</strong> more in<strong>for</strong>mation on using<br />

the Comm<strong>and</strong> Shell module.<br />

3.2.2. Terminating Queue Managers<br />

Queue managers are meant to run indefinitely, to protect queue manager resources<br />

<strong>and</strong> message recoverability <strong>and</strong> to stop only after all applications are disconnected. If<br />

you need to end a queue manager, <strong>for</strong> example, to upgrade to a newer W<strong>MQ</strong><strong>2200</strong><br />

level, you must end it properly. Follow these guidelines to properly stop a queue<br />

manager <strong>and</strong> its related activities.<br />

1. Stop or throttle user applications that use the <strong>MQ</strong>I if possible.<br />

3–4 3843 3744–002


Startup or Terminate Queue Managers<br />

2. Stop running local sender channels; these are channels that send messages out<br />

from the local machine.<br />

a. Check which sender channels are active in a UNX session using the runmqsc<br />

processor ‘display channel status’ comm<strong>and</strong> <strong>for</strong> all channels.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

runmqsc <br />

>DIS CHS(*)<br />

A<strong>MQ</strong>8417: Display Channel Status details.<br />

CHANNEL(A.TO.B.CHANNEL) XMITQ(A.TO.B.QUEUE)<br />

CONNAME(999.22.444.333(2011)) CURRENT<br />

CHLTYPE(SDR) STATUS (RUNNING)<br />

A<strong>MQ</strong>8417: Display Channel Status details.<br />

CHANNEL(B.TO.A.CHANNEL) XMITQ( )<br />

CONNAME(999.22.444.333) CURRENT<br />

CHLTYPE(RCVR) STATUS (RUNNING)<br />

b. Use the runmqsc STOP CHANNEL comm<strong>and</strong> to stop all sender channels in the<br />

RUNNING state as follows:<br />

>STOP CHANNEL (A.TO.B.CHANNEL)<br />

A<strong>MQ</strong>8019: Stop <strong>MQ</strong>Series channel accepted.<br />

The status of the sender channel should now be stopped.<br />

>DIS CHS(*)<br />

A<strong>MQ</strong>8417: Display Channel Status details.<br />

CHANNEL(A.TO.B.CHANNEL) XMITQ(A.TO.B.QUEUE)<br />

CONNAME(999.22.444.333(2011)) CURRENT<br />

CHLTYPE(SDR) STATUS (STOPPED)<br />

A<strong>MQ</strong>8417: Display Channel Status details.<br />

CHANNEL(B.TO.A.CHANNEL) XMITQ( )<br />

CONNAME(999.22.444.333) CURRENT<br />

CHLTYPE(RCVR) STATUS (STOPPED)<br />

c. Enter the END comm<strong>and</strong> to exit the runmqsc processor.<br />

3. Stop sender channels on remote machines in a similar manner if possible. These<br />

are channels that send messages into the local machine. If an application on a<br />

remote machine sends data to one of your local queues, the queue manager will<br />

not end because the listener (receiver channel) is busy.<br />

4. After channel activity has stopped, end the queue manager. This can be done in a<br />

variety of ways.<br />

3843 3744–002 3–5


Startup or Terminate Queue Managers<br />

If You Administer W<strong>MQ</strong><strong>2200</strong> with Daemon Administrative Utility<br />

Enter the following comm<strong>and</strong> to achieve a controlled shutdown <strong>for</strong> all queue<br />

managers.<br />

Or<br />

>@@CONS W<strong>MQ</strong> TERM ALL<br />

>@@CONS W<strong>MQ</strong> TERM,C ALL<br />

If you are unable to stop user application programs that use the <strong>MQ</strong>I be<strong>for</strong>e<br />

ending the queue manager, use the I-option to prevent any new <strong>MQ</strong>I calls from<br />

starting. This is referred to as an immediate shutdown. The queue manager<br />

completes processing the in-progress <strong>MQ</strong>I be<strong>for</strong>e ending.<br />

>@@CONS W<strong>MQ</strong> TERM,I ALL<br />

If You Use the UNX Shell to Administer W<strong>MQ</strong><strong>2200</strong><br />

Enter the endmqm comm<strong>and</strong> <strong>for</strong> controlled (no option or -c option) or immediate<br />

(-I option) shutdown of each queue manager.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>endmqm -i <br />

>exit<br />

If You Use <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to Administer<br />

W<strong>MQ</strong><strong>2200</strong><br />

Navigate to the Manage <strong>MQ</strong> module under the Management tab. Find the queue<br />

manager to stop from the queue manager table. Select the "Stop" action <strong>for</strong> the<br />

queue manager.<br />

To stop all queue managers, select the Stop All button.<br />

Note: W<strong>MQ</strong><strong>2200</strong> offers the preemptive shutdown option P <strong>for</strong> endmqm <strong>and</strong><br />

<strong>MQ</strong>ADMIN. However, this type of shutdown can only be used in exceptional<br />

circumstances. It is similar to an e-keyin of a batch run <strong>and</strong> it is not advised.<br />

If you manually stop a sender channel <strong>and</strong> do not end <strong>and</strong> restart your queue<br />

manager, you have to manually restart the channel. The channel initiator does<br />

not automatically start channels <strong>for</strong> you after the runmqsc STOP CHANNEL<br />

comm<strong>and</strong>. You can restart the sender channels with the runmqsc START<br />

CHANNEL comm<strong>and</strong>, or end <strong>and</strong> restart the queue manager. If you configure<br />

your channels with shorter disconnect intervals, they disconnect <strong>and</strong> shut down<br />

<strong>for</strong> you automatically after shorter periods of inactivity. Channels that stop as a<br />

result of a disconnect interval are restarted by the channel initiator if a trigger<br />

condition is met.<br />

5. After stopping queue managers, the W<strong>MQ</strong><strong>2200</strong> daemon run (W<strong>MQ</strong>) is still active.<br />

You can end the daemon run with the following comm<strong>and</strong>:<br />

>@@CONS W<strong>MQ</strong> DOWN<br />

3–6 3843 3744–002


Configure <strong>MQ</strong> .ini Files to Customize W<strong>MQ</strong><strong>2200</strong> <strong>and</strong> the Queue Managers<br />

3.3. Configure <strong>MQ</strong> .ini Files to Customize<br />

W<strong>MQ</strong><strong>2200</strong> <strong>and</strong> the Queue Managers<br />

The .ini files can be modified to customize W<strong>MQ</strong><strong>2200</strong>. The files can be edited in any of<br />

the following ways:<br />

• Use the <strong>OS</strong> <strong>2200</strong> editor <strong>and</strong> then transfer the file to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

• Use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to edit selected files using<br />

your web browser.<br />

• Use the TED comm<strong>and</strong> within the UNX Shell.<br />

3.3.1. Using <strong>OS</strong> <strong>2200</strong> Editors to Modify the .ini Files<br />

To use your <strong>OS</strong> <strong>2200</strong> editor, update the initialization (.ini) file in the following manner:<br />

1. Catalog file to use with <strong>MQ</strong>EXPORT comm<strong>and</strong>.<br />

2. Copy this file to an <strong>OS</strong> <strong>2200</strong> element using the UNX <strong>MQ</strong>EXPORT comm<strong>and</strong>.<br />

3. Modify the file using your choice of editor.<br />

4. Stop the queue manager.<br />

5. Make the modified in<strong>for</strong>mation accessible to the <strong>OS</strong> <strong>2200</strong> QProcessor using the<br />

UNX <strong>MQ</strong>IMPORT comm<strong>and</strong>.<br />

6. Restart the queue manager. The changes take effect when the queue manager is<br />

restarted.<br />

Example<br />

>@cat,p wmq*inifile.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqexport qm.ini wmq*inifile.<br />

>mqexport: Transferred 1294 bytes to file wmq*inifile.<br />

After you edit your file, import it back into the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqimport wmq*inifile. qm.ini<br />

>mqimport: Transferred 1351 bytes to file qm.ini<br />

See Appendix F, "UNX Shell," <strong>for</strong> more in<strong>for</strong>mation on mqimport <strong>and</strong> mqexport.<br />

3.3.2. Using <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console<br />

To use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to edit the initialization files,<br />

1. Log into the <strong>Administration</strong> Console <strong>and</strong> navigate to the Management Tab.<br />

2. Double-click on the Manage <strong>MQ</strong> module.<br />

3843 3744–002 3–7


Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

3. Either edit the global mqs.ini configuration file by selecting Edit in the <strong>MQ</strong> Server<br />

table or edit a particular queue manager’s .ini file by selecting the Edit action on<br />

the particular queue manager entry in the table.<br />

4. Stop <strong>and</strong> restart the queue manager by selecting the stop action followed by the<br />

start action once the queue manager is terminated. The changes will take place<br />

when the queue manager is restarted.<br />

Refer to the QProcessor <strong>Administration</strong> Console Help <strong>for</strong> more in<strong>for</strong>mation.<br />

3.3.3. Using the TED Editor<br />

The TED editor is a line based editor available through the UNX shell. It allows basic<br />

functions such as insert, delete, <strong>and</strong> update of text.<br />

See Appendix C, "Editing W<strong>MQ</strong><strong>2200</strong> QProcessor Files," <strong>for</strong> more in<strong>for</strong>mation on using<br />

TED.<br />

3.4. Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

3.4.1. Security <strong>and</strong> the UNX Dem<strong>and</strong> Shell<br />

When an <strong>OS</strong> <strong>2200</strong> user starts a UNX shell, the <strong>OS</strong><strong>2200</strong> user ID is mapped to an<br />

<strong>OS</strong> <strong>2200</strong> QProcessor identity (user <strong>and</strong> group). If the user has not been explicitly<br />

mapped by an administrator, the user runs as the "nobody" user <strong>and</strong> group. If the<br />

group to which the <strong>OS</strong> <strong>2200</strong> user is mapped is not in the mqm group, the <strong>OS</strong> <strong>2200</strong><br />

user cannot execute <strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s, view various directories, <strong>and</strong><br />

per<strong>for</strong>m other administrative tasks. The UNX shell warns users if they are not in the<br />

mqm group when it starts.<br />

3.4.2. The Root User <strong>and</strong> <strong>WebSphere</strong> <strong>MQ</strong><br />

An <strong>OS</strong> <strong>2200</strong> user can be mapped to the root user <strong>and</strong> group on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. This user has authority to per<strong>for</strong>m all system-wide administrative<br />

functions on the <strong>OS</strong> <strong>2200</strong> QProcessor. At least one <strong>OS</strong> <strong>2200</strong> user must be mapped to<br />

root to allow the W<strong>MQ</strong><strong>2200</strong> software to be installed on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

For security reasons, by default, the root user is not a member of the mqm group. This<br />

means that <strong>OS</strong> <strong>2200</strong> user IDs mapped to the root user cannot run <strong>WebSphere</strong> <strong>MQ</strong><br />

control comm<strong>and</strong>s by default. If you want the <strong>OS</strong> <strong>2200</strong> users mapped to the root user<br />

to also have access to run <strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s, use the ‘rootmod -a’<br />

comm<strong>and</strong> in the UNX shell. The rootmod comm<strong>and</strong> can be used to add or remove the<br />

root user from the mqm group on the <strong>OS</strong> <strong>2200</strong> QProcessor. The rootmod comm<strong>and</strong><br />

can only be run by the <strong>OS</strong> <strong>2200</strong> user mapped to root on the <strong>OS</strong> <strong>2200</strong> QProcessor. The<br />

root user can be removed from the mqm group with the ‘rootmod –r’ comm<strong>and</strong>.<br />

Because the root user has high levels of permissions on the <strong>OS</strong> <strong>2200</strong> QProcessor,<br />

users are encouraged to use caution when using the UNX shell while running as the<br />

root user. The UNX shell warns users when entering the shell if they are mapped as<br />

the root user.<br />

3–8 3843 3744–002


Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

3.4.3. <strong>WebSphere</strong> <strong>MQ</strong> Object Authority Manager<br />

<strong>WebSphere</strong> <strong>MQ</strong> provides an interface that allows an administrator to restrict access<br />

to queue manager objects. This interface is called Object Authority Manager (OAM).<br />

Additional in<strong>for</strong>mation on the OAM can be found in the IBM <strong>WebSphere</strong> <strong>MQ</strong> Security<br />

manual.<br />

The OAM can be enabled or disabled on a per queue manager basis. Whether OAM is<br />

enabled on a given queue manager is determined when the queue manager is created.<br />

The presence of OAM on a queue manager is determined by the existence of the<br />

<strong>MQ</strong>SNOAUT environment variable in the shell that per<strong>for</strong>ms the create queue<br />

manager (crtmqm) comm<strong>and</strong>. This is controlled through the W<strong>MQ</strong><strong>2200</strong> configuration<br />

parameter <strong>MQ</strong>Authority, which is documented in Section 2.4 Adjusting <strong>MQ</strong>S<strong>2200</strong><br />

Configuration Parameters.<br />

If OAM is enabled when the queue manager is created, it cannot be disabled later.<br />

OAM also cannot be added to a queue manager after it has been created. A queue<br />

manager must be deleted <strong>and</strong> recreated to change its OAM setting. If OAM is enabled<br />

on a given queue manager, API access to the queue manager is controlled by OAM<br />

<strong>and</strong> users are authenticated <strong>for</strong> the type of access they are attempting on an object<br />

basis.<br />

Note that OAM does not affect the <strong>MQ</strong> control comm<strong>and</strong>s; you must always be in the<br />

mqm group to execute <strong>MQ</strong> control comm<strong>and</strong>s from a shell.<br />

The <strong>WebSphere</strong> <strong>MQ</strong> OAM is only aware of <strong>OS</strong> <strong>2200</strong> QProcessor users <strong>and</strong> groups. It<br />

is not aware of <strong>OS</strong> <strong>2200</strong> user IDs. The <strong>WebSphere</strong> <strong>MQ</strong> OAM is presented with the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor mapping, <strong>for</strong> the <strong>OS</strong> <strong>2200</strong> user <strong>and</strong> validates the user based on<br />

those credentials.<br />

3.4.4. Remote Users <strong>and</strong> <strong>OS</strong> <strong>2200</strong> Users<br />

There are two types of user IDs <strong>for</strong> purposes of <strong>OS</strong> <strong>2200</strong> QProcessor administration:<br />

• Remote user ID<br />

• <strong>OS</strong> <strong>2200</strong> user ID<br />

A remote user ID is a user ID installed on the <strong>OS</strong> <strong>2200</strong> QProcessor that maps to a user<br />

ID on a remote system (other than the <strong>OS</strong> <strong>2200</strong> assigned to the <strong>OS</strong> <strong>2200</strong> QProcessor).<br />

For example, you may need to create a user ID on your <strong>OS</strong> <strong>2200</strong> QProcessor that<br />

matches your Windows user ID so that you can administer an OAM enabled queue<br />

manager over the client connection through <strong>WebSphere</strong> <strong>MQ</strong> Explorer.<br />

3843 3744–002 3–9


Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

In this case, your user ID is called a remote user ID. This user ID must be created on<br />

the <strong>OS</strong> <strong>2200</strong> QProcessor using either the mquseradd comm<strong>and</strong> in the UNX shell or the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console. This user ID must be all lowercase<br />

because <strong>WebSphere</strong> <strong>MQ</strong> converts all incoming <strong>for</strong>eign user IDs to lowercase be<strong>for</strong>e<br />

attempting to map it to a user <strong>and</strong> group on the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>for</strong> security<br />

validation. There<strong>for</strong>e, if your Windows user ID is JohnQSmith, you would need to<br />

install this user ID on the <strong>OS</strong> <strong>2200</strong> QProcessor as a remote user ID with the name<br />

‘johnqsmith’. The term "remote" is somewhat misleading because although it<br />

represents <strong>and</strong> matches a user ID on another system, it is installed on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor as well.<br />

An <strong>OS</strong> <strong>2200</strong> user who wishes to access <strong>WebSphere</strong> <strong>MQ</strong> queue managers <strong>and</strong><br />

execute <strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s must be mapped to a local user ID <strong>and</strong><br />

group on the <strong>OS</strong> <strong>2200</strong> QProcessor. If an <strong>OS</strong> <strong>2200</strong> user is not mapped explicitly to an<br />

<strong>OS</strong> <strong>2200</strong> QProcessor user ID <strong>and</strong> group, it runs as the nobody user <strong>and</strong> group <strong>and</strong><br />

have no authority to access <strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s or access the <strong>MQ</strong> API<br />

(if the queue manager has OAM enabled).<br />

3.4.5. The <strong>WebSphere</strong> <strong>MQ</strong> OAM Control Comm<strong>and</strong>s<br />

<strong>WebSphere</strong> <strong>MQ</strong> provides two control comm<strong>and</strong>s <strong>for</strong> displaying <strong>and</strong> configuring<br />

authorities on an OAM enabled queue manager. The control comm<strong>and</strong>s are setmqaut<br />

(set an <strong>MQ</strong> OAM authority) <strong>and</strong> dspmqaut (display an <strong>MQ</strong> OAM authority). These<br />

comm<strong>and</strong>s accept a principal (user ID) or a group name specification. Any group<br />

specified must exist on the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>and</strong> is case-sensitive. When a<br />

principal (user ID) is specified, both comm<strong>and</strong>s assume that the principal is a remote<br />

user ID by default. A common case where you would grant access to a remote user ID<br />

would be granting authorities to a Windows user ID so it can access a queue manager<br />

on the <strong>OS</strong> <strong>2200</strong> QProcessor through the <strong>WebSphere</strong> <strong>MQ</strong> Explorer. If you specify a<br />

remote user ID (the default), the user ID is case-sensitive <strong>and</strong> normally will be all<br />

lowercase if the remote user ID was added correctly.<br />

Alternatively, the user can use the –O option to specify to the comm<strong>and</strong>s that the<br />

supplied principal is an <strong>OS</strong> <strong>2200</strong> user ID. This can be done when you want to grant an<br />

<strong>OS</strong> <strong>2200</strong> user application authority to the queue manager. The user ID supplied can be<br />

in any case when specifying an <strong>OS</strong> <strong>2200</strong> user ID using the –O option. The comm<strong>and</strong>s<br />

attempt to map the principal name from the <strong>OS</strong> <strong>2200</strong> user ID to the equivalent<br />

<strong>OS</strong> <strong>2200</strong> QProcessor user ID using the <strong>OS</strong> <strong>2200</strong> QProcessor user mapping table. The<br />

<strong>OS</strong> <strong>2200</strong> QProcessor user ID is then passed to the <strong>WebSphere</strong> <strong>MQ</strong> OAM component.<br />

If the principal name cannot be mapped because the <strong>OS</strong> <strong>2200</strong> user ID specified is not<br />

in the user mapping table, the comm<strong>and</strong>s return an error indicating that the principal is<br />

not valid. If a group is specified instead of a principal, the comm<strong>and</strong>s ignore the –O<br />

option (if supplied) because groups only exist on the <strong>OS</strong> <strong>2200</strong> QProcessor. Refer to<br />

the IBM <strong>WebSphere</strong> <strong>MQ</strong> System <strong>Administration</strong> manual <strong>for</strong> more in<strong>for</strong>mation on the<br />

<strong>MQ</strong> OAM control comm<strong>and</strong>s.<br />

3–10 3843 3744–002


Examples<br />

Set an authority <strong>for</strong> a remote user ID (the default):<br />

Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

>setmqaut -m MY.QMGR -t qmgr -p MyWindowsId +connect<br />

Set an authority <strong>for</strong> an <strong>OS</strong> <strong>2200</strong> user ID:<br />

>setmqaut -m MY.QMGR -t qmgr -O -p CHARLIE +connect<br />

Set an authority <strong>for</strong> a group:<br />

>setmqaut -m MY.QMGR -t qmgr -g limitedmq +connect +set<br />

3.4.6. <strong>WebSphere</strong> <strong>MQ</strong> OAM Authentication<br />

The <strong>WebSphere</strong> <strong>MQ</strong> OAM always stores authorities on a group basis. That is, if one<br />

member of a given group is granted a specific type of access to a given object, all<br />

members of that group inherit access to that object. This is true even if an <strong>MQ</strong><br />

administrator grants access to an object specifying a specific user ID, rather than a<br />

group. <strong>WebSphere</strong> <strong>MQ</strong> OAM refers to individual users as principals. Since <strong>WebSphere</strong><br />

<strong>MQ</strong> OAM stores authorities on a group basis, users are recommended to grant or<br />

revoke authorities using a specific group specification, rather than specifying an<br />

individual user <strong>for</strong> clarity. Specifying a user (or principal) is allowed but it affects all<br />

users in that group.<br />

3.4.7. <strong>WebSphere</strong> <strong>MQ</strong> OAM <strong>and</strong> the mqm Group<br />

From the <strong>WebSphere</strong> <strong>MQ</strong> perspective, any user that is a member of the mqm group is<br />

a <strong>WebSphere</strong> <strong>MQ</strong> super user. The mqm group always has full control of <strong>WebSphere</strong><br />

<strong>MQ</strong>, from both the control comm<strong>and</strong>s <strong>and</strong> API perspective. The mqm group can never<br />

be limited in its access of <strong>WebSphere</strong> <strong>MQ</strong>. There<strong>for</strong>e, if a user is a member of the<br />

mqm group, the user has full authority over <strong>WebSphere</strong> <strong>MQ</strong> as access is granted on a<br />

group basis. The <strong>OS</strong> <strong>2200</strong> users who are mapped to the <strong>OS</strong> <strong>2200</strong> QProcessor mqm<br />

group have full authority to run <strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s in the UNX shell,<br />

view <strong>and</strong> edit files in the <strong>WebSphere</strong> <strong>MQ</strong> file system through the UNX shell, <strong>and</strong><br />

access the <strong>WebSphere</strong> <strong>MQ</strong> API.<br />

3843 3744–002 3–11


Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

3.4.8. The "Nobody" User <strong>and</strong> Group<br />

The "nobody" user <strong>and</strong> group exists on the <strong>OS</strong> <strong>2200</strong> QProcessor as a default<br />

no-permissions identity. <strong>OS</strong> <strong>2200</strong> users not explicitly given a mapping to an <strong>OS</strong> <strong>2200</strong><br />

QProcessor identity by an administrator default to the nobody user <strong>and</strong> group. This<br />

means that <strong>WebSphere</strong> <strong>MQ</strong> treats <strong>OS</strong> <strong>2200</strong> users not mapped to an identity on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor as the nobody user <strong>and</strong> group. The nobody group has no access<br />

to <strong>WebSphere</strong> <strong>MQ</strong> by default.<br />

Caution<br />

You must never grant the nobody user or group access to queue managers<br />

using the <strong>WebSphere</strong> <strong>MQ</strong> OAM set authority control comm<strong>and</strong>s<br />

(setmqaut). If you do this, you will implicitly grant authority on the given<br />

queue manager to all <strong>OS</strong> <strong>2200</strong> users not explicitly mapped to <strong>OS</strong> <strong>2200</strong><br />

QProcessor identities.<br />

3.4.9. Default Groups on the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

The default system groups on the <strong>OS</strong> <strong>2200</strong> QProcessor include the nobody, mqm, <strong>and</strong><br />

root groups. The nobody group has no authority to <strong>WebSphere</strong> <strong>MQ</strong>. The mqm group<br />

has full authority to <strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s, files, <strong>and</strong> API. The root group<br />

has full authority to per<strong>for</strong>m system administration. If the root user has been added to<br />

the mqm group with the UNX rootmod comm<strong>and</strong>, the root group <strong>and</strong> user will also be<br />

able to execute <strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s.<br />

3.4.10. Adding a Group on the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

If you want to use OAM to set custom permissions <strong>for</strong> one or more users, you need<br />

to create a group <strong>for</strong> these users. After you create the new group, you can add users<br />

to the group. You can also add <strong>OS</strong> <strong>2200</strong> <strong>and</strong> remote users to the same group if you<br />

want. Custom permissions on a given queue manager <strong>and</strong> its objects can then be<br />

given to this group. You can add a group to the <strong>OS</strong> <strong>2200</strong> QProcessor in either of the<br />

following ways:<br />

If You Use the UNX Shell to Administer W<strong>MQ</strong><strong>2200</strong><br />

Use the groupadd utility in the UNX shell:<br />

>groupadd <br />

After the group is added on the <strong>OS</strong> <strong>2200</strong> QProcessor, it can be used by OAM<br />

comm<strong>and</strong>s to set or display authorities on a given queue manager. You can display a<br />

list of installed groups on the <strong>OS</strong> <strong>2200</strong> QProcessor with the grouplist comm<strong>and</strong> in the<br />

UNX shell.<br />

You can use the groupmembers comm<strong>and</strong> in the UNX shell to list the members of a<br />

specific group. The groupdel comm<strong>and</strong> can be used to delete a group on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. Note that you cannot delete a group if any users are still members of that<br />

group.<br />

3–12 3843 3744–002


Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

If You Use <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to Administer<br />

W<strong>MQ</strong><strong>2200</strong><br />

Using the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console, you cannot create a new<br />

group in the administration console without creating a new user. To create a new<br />

group, use the Manage User Mappings module in the Management category to add a<br />

new user, using the Add New User Map, select Type New grp in the group<br />

selection box <strong>and</strong> type a new group. The new group is created when the user is<br />

added. Subsequent users are able to select the new group.<br />

All groups available to the new user can be viewed in the Local group list.<br />

You can also see a list of installed groups in the group selection list in the <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console. Refer to the QProcessor <strong>Administration</strong> Console<br />

Help <strong>for</strong> more in<strong>for</strong>mation.<br />

3.4.11. The <strong>OS</strong> <strong>2200</strong> QProcessor User Mappings<br />

The <strong>OS</strong> <strong>2200</strong> QProcessor maintains mappings of <strong>OS</strong> <strong>2200</strong> users to <strong>OS</strong> <strong>2200</strong><br />

QProcessor users <strong>and</strong> groups. The <strong>OS</strong> <strong>2200</strong> QProcessor also maintains mappings<br />

from a non-<strong>OS</strong> <strong>2200</strong> system (remote users) to the <strong>OS</strong> <strong>2200</strong> QProcessor users <strong>and</strong><br />

groups.<br />

Access to the <strong>OS</strong> <strong>2200</strong> QProcessor is controlled by these mappings. To allow <strong>and</strong><br />

manage access to the <strong>OS</strong> <strong>2200</strong> QProcessor use the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console. To create, edit, or delete a mapping, use the Manage User<br />

Mappings module.<br />

Creating a New User Mapping<br />

You can create a new user mapping using the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console or the mquseradd UNX comm<strong>and</strong>. When you add a user, you must specify<br />

the user to be mapped, the type of user (remote or <strong>OS</strong> <strong>2200</strong>), <strong>and</strong> the group on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor you want to use.<br />

If the user ID you are adding is an <strong>OS</strong> <strong>2200</strong> user ID, the <strong>OS</strong> <strong>2200</strong> QProcessor user ID to<br />

which the <strong>OS</strong> <strong>2200</strong> user ID is mapped is generated automatically. If the <strong>OS</strong> <strong>2200</strong> user<br />

is mapped to the<br />

• Root group, the <strong>OS</strong> <strong>2200</strong> user is mapped to the root user <strong>and</strong> group.<br />

• nobody group, the <strong>OS</strong> <strong>2200</strong> user is mapped to the nobody user <strong>and</strong> group.<br />

• mqm group, a custom group, or a new group, the <strong>OS</strong> <strong>2200</strong> user is mapped to<br />

IC- where is the <strong>OS</strong> <strong>2200</strong> user ID (in uppercase). The IC-<br />

is created because some <strong>OS</strong> <strong>2200</strong> user IDs do not con<strong>for</strong>m to the <strong>OS</strong> <strong>2200</strong><br />

QProcessor user ID requirements. For example, they cannot start with a number<br />

while <strong>OS</strong> <strong>2200</strong> user IDs can.<br />

3843 3744–002 3–13


Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

If the user ID you are adding is a remote user ID, the remote user ID must be specified<br />

in lowercase. This is because <strong>WebSphere</strong> <strong>MQ</strong> OAM always converts <strong>for</strong>eign user IDs<br />

to lowercase be<strong>for</strong>e per<strong>for</strong>ming security checks <strong>and</strong> comparisons to local user IDs<br />

that match the remote user ID. The remote user can be added to any group you want.<br />

For details on how to add an <strong>OS</strong> <strong>2200</strong> or remote user, see the QProcessor<br />

<strong>Administration</strong> Console Help or Appendix F, “UNX Shell,” <strong>for</strong> more in<strong>for</strong>mation on the<br />

mquseradd comm<strong>and</strong>.<br />

Changing a User Mapping<br />

You can change a user mapping or remote user ID using the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console or the mqusermod UNX comm<strong>and</strong>. When you change a user<br />

mapping, you select a new group. If you use the mqusermod comm<strong>and</strong> in the UNX<br />

shell, you must specify whether you are modifying an <strong>OS</strong> <strong>2200</strong> or remote user ID. See<br />

Appendix F, "UNX Shell," <strong>for</strong> more in<strong>for</strong>mation on the mqusermod comm<strong>and</strong>.<br />

If you are changing an <strong>OS</strong> <strong>2200</strong> user mapping, the <strong>OS</strong> <strong>2200</strong> QProcessor user ID you<br />

are assigned follows the rules listed in the section above. In some cases, the<br />

underlying <strong>OS</strong> <strong>2200</strong> QProcessor user ID changes depending on these rules. Note that<br />

it might take up to 60 seconds <strong>for</strong> the new <strong>OS</strong> <strong>2200</strong> user mapping change to take<br />

effect in the API. In addition, running applications using the API do not use the new<br />

mapping until they are restarted. The UNX shell reflects the change the next time the<br />

user starts a UNX shell. Existing UNX shells that the <strong>OS</strong> <strong>2200</strong> user runs need to be<br />

restarted <strong>for</strong> changes to take effect.<br />

If you are changing a remote user ID, the <strong>OS</strong> <strong>2200</strong> QProcessor user ID keeps the same<br />

name. Only the group membership changes.<br />

Deleting a User Mapping<br />

You can delete a user mapping or remote user ID using the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console or the mqusermdel UNX comm<strong>and</strong>. See Appendix F, "UNX<br />

Shell," <strong>for</strong> more in<strong>for</strong>mation on the mqusermod comm<strong>and</strong>.<br />

If you are deleting an <strong>OS</strong> <strong>2200</strong> user mapping, the underlying <strong>OS</strong> <strong>2200</strong> QProcessor user<br />

ID is deleted from the system <strong>and</strong> the user mapping is removed from the <strong>OS</strong> <strong>2200</strong><br />

user mapping table. The UNX shell reflects the change the next time the user starts a<br />

UNX shell. Existing UNX shells that the <strong>OS</strong> <strong>2200</strong> user runs need to be restarted <strong>for</strong><br />

changes to take effect.<br />

For both <strong>OS</strong> <strong>2200</strong> user IDs <strong>and</strong> remote user IDs deleted from the <strong>OS</strong> <strong>2200</strong><br />

QProcessor, the user defaults to nobody group permissions (no permissions).<br />

Caution<br />

Never use other interfaces to change, add, or delete user mappings or<br />

modify the <strong>OS</strong> <strong>2200</strong> QProcessor users directly. Doing so could cause<br />

W<strong>MQ</strong><strong>2200</strong> to malfunction or become inoperable.<br />

3–14 3843 3744–002


Displaying the User Mappings <strong>and</strong> Remote User IDs<br />

Secure Access to Queues from <strong>OS</strong> <strong>2200</strong><br />

You can display the current user mappings <strong>and</strong> remote user IDs by using the Manage<br />

User Mappings module of the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console. The user<br />

mappings <strong>and</strong> remote user IDs are listed in the administration console in the<br />

Interconnect User Map module in the Management category. You can also use the<br />

mquserlist UNX comm<strong>and</strong>. See Appendix F, "UNX Shell," <strong>for</strong> more in<strong>for</strong>mation on the<br />

mquserlist comm<strong>and</strong>.<br />

Remote User IDs that Cannot be Changed<br />

Since remote user IDs represent local user IDs on the <strong>OS</strong> <strong>2200</strong> QProcessor, some of<br />

these user IDs have special significance <strong>and</strong> cannot be changed. The UNX comm<strong>and</strong>s<br />

that allow you to modify or remove remote user IDs (which represent installed user<br />

IDs on the <strong>OS</strong> <strong>2200</strong> QProcessor) will not allow you to remove or edit users mqm,<br />

nobody, <strong>and</strong> root. Other system users are locked as well. These user IDs cannot be<br />

deleted or the <strong>OS</strong> <strong>2200</strong> QProcessor may malfunction. Custom remote user IDs you<br />

add can be deleted or changed at any time.<br />

The –<strong>MQ</strong>S- <strong>and</strong> <strong>MQ</strong>M Mappings<br />

Two mappings are created when W<strong>MQ</strong><strong>2200</strong> is installed, the –<strong>MQ</strong>S– <strong>and</strong> <strong>MQ</strong>M<br />

mappings. The –<strong>MQ</strong>S– user ID is the default W<strong>MQ</strong><strong>2200</strong> subsystem owner. It is<br />

typically the owner of the <strong>MQ</strong>S$COMMON file in a SecOpt security environment. The<br />

W<strong>MQ</strong><strong>2200</strong> subsystem owner in a Security Option environment must be mapped to<br />

the root user <strong>and</strong> group. If you are running in the Security Option environment, <strong>and</strong><br />

your <strong>MQ</strong>S$COMMON file is owned by someone other than –<strong>MQ</strong>S–, that <strong>OS</strong> <strong>2200</strong> user<br />

ID must be mapped in the Usermap file to the root group. The <strong>MQ</strong>M user (if it exists<br />

on <strong>OS</strong> <strong>2200</strong>) always maps to the mqm user <strong>and</strong> group on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

You are not required to have an <strong>OS</strong> <strong>2200</strong> <strong>MQ</strong>M user. However, if you do have a <strong>MQ</strong>M<br />

user on <strong>OS</strong> <strong>2200</strong>, it runs as the mqm user <strong>and</strong> group on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Note: The –<strong>MQ</strong>S– <strong>and</strong> <strong>MQ</strong>M mappings are locked <strong>for</strong> editing. Do not delete or<br />

modify the mappings. Changing these mappings causes W<strong>MQ</strong><strong>2200</strong> to malfunction.<br />

User Map Changes <strong>and</strong> OAM<br />

If you change a user mapping (either remote or an <strong>OS</strong> <strong>2200</strong> user mapping), the OAM<br />

cache might become out of date. While a queue manager is running, it caches<br />

authority in<strong>for</strong>mation <strong>for</strong> each user. As each user accesses a given queue manager,<br />

the OAM service requests a list of groups the given user is a member of from the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. This list is cached <strong>for</strong> the duration of the queue managers<br />

running lifetime. If group memberships change <strong>for</strong> the given user, the OAM cache<br />

becomes out of date. <strong>WebSphere</strong> <strong>MQ</strong> does not recognize the new group membership<br />

<strong>for</strong> the user until its OAM cache has been updated. This can be done through the<br />

runmqsc REFRESH SECURITY TYPE(AUTHSERV) comm<strong>and</strong>. You must refresh the OAM<br />

cache on your queue managers after changing a user mapping.<br />

3843 3744–002 3–15


Manage Queue Manager Log Files<br />

User Mappings when OAM is Disabled<br />

When OAM is disabled on a given queue manager, authority checks are not per<strong>for</strong>med<br />

when the <strong>MQ</strong> API is used to interact with a queue manager. This means all <strong>OS</strong> <strong>2200</strong><br />

users <strong>and</strong> remote users through channels have access to the queue manager.<br />

However, the user mappings are still en<strong>for</strong>ced when an <strong>OS</strong> <strong>2200</strong> user uses the UNX<br />

shell. Although user mappings are not used <strong>for</strong> authentication when OAM is disabled<br />

on a queue manager, creating user mappings <strong>for</strong> <strong>OS</strong> <strong>2200</strong> users who use the API is<br />

still useful. This is because the <strong>OS</strong> <strong>2200</strong> QProcessor user ID in a given <strong>OS</strong> <strong>2200</strong> user is<br />

mapped <strong>and</strong> stored in the <strong>MQ</strong>MD UserIdentifier field when that <strong>OS</strong> <strong>2200</strong> user puts<br />

messages to the queues. If OAM is disabled <strong>and</strong> an <strong>OS</strong> <strong>2200</strong> user without a user<br />

mapping puts a message to a queue, the <strong>MQ</strong>MD UserIdentifier field reports a user of<br />

nobody because this is the default mapping.<br />

TIP/HVTIP Applications User Mapping<br />

TIP/HVTIP applications run as the <strong>OS</strong> <strong>2200</strong> user ID configured in the <strong>OS</strong> <strong>2200</strong> TIP<br />

System User ID. If the default TIP system user ID is used (12 ASCII spaces), the<br />

behavior of the W<strong>MQ</strong><strong>2200</strong> API depends on whether the OAM is enabled <strong>for</strong> the queue<br />

manager being accessed. In either case, if the TIP System User ID is the default, the<br />

TIP/HVTIP application runs as the nobody user <strong>and</strong> group on the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

because there is no <strong>OS</strong> <strong>2200</strong> user to map to the <strong>OS</strong> <strong>2200</strong> QProcessor identity. If OAM<br />

is not enabled on the queue manager being accessed, the W<strong>MQ</strong><strong>2200</strong> API calls will<br />

succeed <strong>and</strong> any messages put to queues will have a <strong>MQ</strong>MD UserIdentifier of<br />

nobody. If OAM is enabled on the queue manager being accessed, the TIP/HVTIP<br />

server receives a CompCode of <strong>MQ</strong>CC_FAILED (2) with Reason Code<br />

<strong>MQ</strong>RC_NOT_AUTHORIZED (2035), because the nobody group has no access to a<br />

<strong>WebSphere</strong> <strong>MQ</strong> queue manager. If TIP/HVTIP applications need to access a queue<br />

manager, you must either create the queue manager with OAM disabled or specify a<br />

valid <strong>OS</strong> <strong>2200</strong> user ID in the TIP System User ID <strong>and</strong> map that <strong>OS</strong> <strong>2200</strong> user ID on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor to a group with sufficient authority to access the given queue<br />

manager.<br />

3.5. Manage Queue Manager Log Files<br />

Log files are associated with a queue manager. These log files are essential if you<br />

need to restore a queue manager’s state in case of disk or hardware failure. If linear<br />

logging is used, these files need to be managed <strong>and</strong> archived occasionally to avoid<br />

using unnecessarily large amounts of disk. The default number of log pages in a log<br />

file is 1024 <strong>and</strong> the log file size is 4 MB.<br />

The minimum number of pages in a log file is 64, <strong>and</strong> the maximum is 65,535.<br />

Note: To adjust the number of pages in your log files, use the -lf option on the<br />

crtmqm comm<strong>and</strong> to specify the size of the log file in tracks. The crtmqm comm<strong>and</strong><br />

can be entered using the UNX shell (see Appendix F, "UNX Shell," <strong>for</strong> more<br />

in<strong>for</strong>mation) or the Manage <strong>MQ</strong> module of the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console (Refer to the QProcessor <strong>Administration</strong> Console Help <strong>for</strong> more<br />

in<strong>for</strong>mation).<br />

3–16 3843 3744–002


3.5.1. Overview<br />

Manage Queue Manager Log Files<br />

If you are using a linear log, the log files are added continuously as data is logged, <strong>and</strong><br />

the amount of space used within your W<strong>MQ</strong><strong>2200</strong> file system increases with time. If<br />

the rate of data being logged is high, new log files, also known as log extents,<br />

consume space rapidly.<br />

Over time, the older log files <strong>for</strong> a linear log are no longer required to restart the<br />

queue manager or per<strong>for</strong>m media recovery of any damaged objects. Unisys<br />

recommends that these older log files are archived. Log files can be archived using the<br />

mqsavelog comm<strong>and</strong> of the UNX shell or using the Manage <strong>MQ</strong> Log Policy module<br />

under the Management tab of the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

Periodically, the queue manager places a pair of messages into an <strong>OS</strong> <strong>2200</strong><br />

QProcessor error file to indicate which of the log files is required. Error files can be<br />

viewed using the View System Logs module under the Diagnostic tab of the <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console. There will be an error log <strong>for</strong> each queue<br />

manager that was created.<br />

• Message A<strong>MQ</strong>7467 gives the name of the oldest log file needed to restart the<br />

queue manager. This log file <strong>and</strong> all newer log files must be available during queue<br />

manager restart.<br />

• Message A<strong>MQ</strong>7468 gives the name of the oldest log file needed to do media<br />

recovery.<br />

3.5.2. If You Use the UNX Shell to Administer W<strong>MQ</strong><strong>2200</strong><br />

If you are using UNX to administer W<strong>MQ</strong><strong>2200</strong>, use the mqsavelog comm<strong>and</strong> which<br />

will query <strong>for</strong> the queue manager whose log data is to be saved <strong>and</strong> whether linear<br />

logs must be deleted after they are moved (when –i not specified).<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

mqsavelog[-i] qualifier[-s sgsfile]<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name<br />

queuemanager<br />

.<br />

.<br />

.<br />

Where:<br />

-i specifies in<strong>for</strong>mation only.<br />

qualifier specifies the <strong>OS</strong> <strong>2200</strong> qualifier to be used <strong>for</strong> the destination files. Use a<br />

unique qualifier <strong>for</strong> each queue manager, <strong>and</strong> use only one qualifier <strong>for</strong> each queue<br />

manager across multiple mqsavelog executions.<br />

sgsfile specifies the output location <strong>for</strong> SGSs generated when you use the s option.<br />

The value you provide <strong>for</strong> sgsfile must be an <strong>OS</strong> <strong>2200</strong> data file or element name.<br />

queuemanager specifies name of the queue manager.<br />

3843 3744–002 3–17


Backup of Queue Manager Data<br />

See Appendix F, “UNX Shell," <strong>for</strong> more in<strong>for</strong>mation on mqsavelog.<br />

To allow you to automate log file archival operations, W<strong>MQ</strong><strong>2200</strong> displays a message<br />

to the system console whenever new files are c<strong>and</strong>idates <strong>for</strong> archive. The console<br />

message is in the <strong>for</strong>m:<br />

>W<strong>MQ</strong>*<strong>WebSphere</strong> A<strong>MQ</strong>7467 qmgr<br />

Where qmgr is the name of the queue manager that has one or more new log files<br />

that are c<strong>and</strong>idates <strong>for</strong> archival.<br />

The execution controller <strong>for</strong> each running queue manager internally tracks log files <strong>and</strong><br />

only prints a message when there are new c<strong>and</strong>idate log files <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> which<br />

can generate multiple A<strong>MQ</strong>7467 messages <strong>for</strong> a single log file. It places these<br />

messages into the <strong>OS</strong> <strong>2200</strong> QProcessor error file mentioned above. However, if you<br />

stop your queue manager through endmqm <strong>and</strong> then restart it through strmqm, you<br />

might receive a console message that is a duplicate of the message you last received<br />

be<strong>for</strong>e stopping the queue manager. There<strong>for</strong>e, you could receive a console message<br />

when there are no new c<strong>and</strong>idate log files <strong>for</strong> archive. You can design your automated<br />

archival utilities accordingly, such that they function properly if invoked to process<br />

files when there are none to process.<br />

Note: mqsavelog attempts to maintain an internal history file to keep track of your<br />

archived log extents; however, <strong>for</strong> maximum recoverability, maintain records of<br />

archived <strong>and</strong> restored files separate from these utilities.<br />

3.5.3. If You Administer W<strong>MQ</strong><strong>2200</strong> Using <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console<br />

The <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console allows you to schedule backup of<br />

log files that are available <strong>for</strong> archival using the Manage <strong>MQ</strong> Log Policy module. This<br />

module includes options <strong>for</strong> compression <strong>and</strong> location of the archive including local,<br />

remote, or <strong>OS</strong> <strong>2200</strong> disks. The scheduling options allow you to customize when to<br />

automatically scan the queue manager <strong>for</strong> available files. With this option, the<br />

archiving is done automatically based on the criteria specified. Refer to the<br />

QProcessor <strong>Administration</strong> Console Help <strong>for</strong> more in<strong>for</strong>mation.<br />

3.6. Backup of Queue Manager Data<br />

The <strong>OS</strong> <strong>2200</strong> QProcessor provides redundant disks with disk mirroring to guard<br />

against disk failure. W<strong>MQ</strong><strong>2200</strong> system, queue, <strong>and</strong> log data (/var/mqm) are stored on<br />

these redundant disks. There are various levels of backup <strong>and</strong> restore available:<br />

• Backup of <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> <strong>OS</strong> <strong>2200</strong> configuration data include <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console data.<br />

• Backup of <strong>WebSphere</strong> <strong>MQ</strong> queue manager queue data.<br />

• Backup of <strong>WebSphere</strong> <strong>MQ</strong> queue manager log data.<br />

3–18 3843 3744–002


W<strong>MQ</strong><strong>2200</strong> Administrative Tools <strong>and</strong> Sample Programs<br />

The <strong>OS</strong> <strong>2200</strong> <strong>Administration</strong> Console Filesystem Backup module provides a default<br />

backup profile to include <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> <strong>OS</strong> <strong>2200</strong> configuration data. The<br />

<strong>WebSphere</strong> <strong>MQ</strong> queue manager log data can be saved on external disks or locally on<br />

mirrored disks. The queue manager data can be rebuilt from the logs that are saved.<br />

You might want to back up your queue manager data to provide protection against<br />

possible corruption due to hardware failures. W<strong>MQ</strong><strong>2200</strong> provides a pair of utilities,<br />

mqsave <strong>and</strong> mqload that allow you to back up <strong>and</strong> restore all the files associated with<br />

a queue manager. These comm<strong>and</strong>s are run from a UNX session <strong>and</strong> the data is stored<br />

in <strong>OS</strong> <strong>2200</strong> files. See Appendix F, "UNX Shell," <strong>for</strong> more in<strong>for</strong>mation on mqsave <strong>and</strong><br />

mqload. You can also use the Manage <strong>MQ</strong> module in the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console to backup the queue manager data. Using this module, you can<br />

per<strong>for</strong>m a one-time or scheduled backup of the /var/mqm file system or individual<br />

queue managers. Refer to the QProcessor <strong>Administration</strong> Console Help <strong>for</strong> more<br />

in<strong>for</strong>mation.<br />

Note: You can choose not to take queue manager data backups since message data<br />

is often short-lived.<br />

The status of the disk subsystems can be viewed using the System Health module in<br />

the Diagnostic category of the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console. Refer to<br />

the QProcessor <strong>Administration</strong> Console Help <strong>for</strong> more in<strong>for</strong>mation.<br />

Refer to Section 8, "Recovery Procedures," <strong>for</strong> in<strong>for</strong>mation on restoring W<strong>MQ</strong><strong>2200</strong><br />

data <strong>and</strong> logs after system failure.<br />

3.7. W<strong>MQ</strong><strong>2200</strong> Administrative Tools <strong>and</strong> Sample<br />

Programs<br />

The file W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS contains tools, utilities, <strong>and</strong> sample programs that you<br />

will find useful when using your W<strong>MQ</strong><strong>2200</strong> system.<br />

The following addstreams are useful during troubleshooting activities. Refer to Section<br />

7, "Troubleshooting", <strong>for</strong> more in<strong>for</strong>mation.<br />

• CAT/ERRORS<br />

• DEACT/BOTH<br />

• DEACT/BM<br />

• DEACT/<strong>MQ</strong>S<br />

• DIAGN/RUN<br />

• DEACT/UNX<br />

• DUMPBANKS/<strong>MQ</strong>S<br />

• DUMPBANKS/UNX<br />

3843 3744–002 3–19


Remote <strong>Administration</strong> Using <strong>WebSphere</strong> <strong>MQ</strong> Explorer<br />

The <strong>MQ</strong>SERIES/CONFIG element is a template <strong>for</strong> your W<strong>MQ</strong><strong>2200</strong> configuration file.<br />

Refer to Section 2, "<strong>Installation</strong> <strong>and</strong> Configuration," <strong>for</strong> in<strong>for</strong>mation on this file <strong>and</strong> to<br />

modify the W<strong>MQ</strong><strong>2200</strong> configuration.<br />

3.8. Remote <strong>Administration</strong> Using <strong>WebSphere</strong> <strong>MQ</strong><br />

Explorer<br />

The <strong>WebSphere</strong> <strong>MQ</strong> Explorer utility allows remote administration of <strong>WebSphere</strong> <strong>MQ</strong><br />

queue managers <strong>and</strong> objects. The <strong>WebSphere</strong> <strong>MQ</strong> Explorer utility runs on Windows<br />

<strong>and</strong> is available on the <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> Windows product from IBM. W<strong>MQ</strong><strong>2200</strong><br />

can be administered remotely with <strong>WebSphere</strong> <strong>MQ</strong> Explorer. Using <strong>WebSphere</strong><br />

Explorer you can<br />

• Create, define, or delete objects including queues, channels, processes, <strong>and</strong><br />

namelists<br />

• Browse messages on queues<br />

• Start <strong>and</strong> stop channels<br />

• View channel status<br />

Refer to the IBM <strong>WebSphere</strong> <strong>MQ</strong> System <strong>Administration</strong> manual, <strong>for</strong> details on the<br />

<strong>WebSphere</strong> <strong>MQ</strong> Explorer utility. The <strong>WebSphere</strong> <strong>MQ</strong> Explorer utility uses an <strong>MQ</strong>I<br />

client connection to communicate with <strong>WebSphere</strong> <strong>MQ</strong> queue managers. Refer to<br />

Section 5, "<strong>MQ</strong>I Client Connection," <strong>for</strong> more in<strong>for</strong>mation.<br />

3.8.1. Preparing W<strong>MQ</strong><strong>2200</strong> <strong>for</strong> Remote <strong>Administration</strong><br />

To administer W<strong>MQ</strong><strong>2200</strong> remotely with the <strong>WebSphere</strong> <strong>MQ</strong> Explorer utility, complete<br />

the following steps:<br />

1. Start the comm<strong>and</strong> server <strong>for</strong> the queue manager you want to administer. Use the<br />

STR<strong>MQ</strong>CSV comm<strong>and</strong> to start the comm<strong>and</strong> server.<br />

STR<strong>MQ</strong>CSV [queue_manager_name]<br />

2. Start a <strong>WebSphere</strong> <strong>MQ</strong> listener process.<br />

RUN<strong>MQ</strong>LSR [-m queue_manager_name] [-p port] [&]<br />

3. Define a server-connection channel called SYSTEM.ADMIN.SVRCONN. The<br />

<strong>WebSphere</strong> <strong>MQ</strong> Explorer utility requires a sever-connection channel on all queue<br />

managers being administered.<br />

>runmqsc QMGR<br />

>active:15<br />

>Starting <strong>MQ</strong>Series Comm<strong>and</strong>s.<br />

>DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) +<br />

>1: DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) +<br />

>CHLTYPE(SVRCONN)<br />

>CHLTYPE(SVRCONN)<br />

>A<strong>MQ</strong>8014: <strong>WebSphere</strong> <strong>MQ</strong> channel created.<br />

3–20 3843 3744–002


Remote <strong>Administration</strong> Using <strong>WebSphere</strong> <strong>MQ</strong> Explorer<br />

Note: The preceding comm<strong>and</strong> is a basic channel definition. You can specify<br />

additional parameters in some circumstances. Refer to the IBM document<br />

<strong>WebSphere</strong> <strong>MQ</strong> <strong>MQ</strong>SC Comm<strong>and</strong> Reference <strong>for</strong> more in<strong>for</strong>mation.<br />

3.8.2. Connecting or Disconnecting to W<strong>MQ</strong><strong>2200</strong> from the<br />

<strong>WebSphere</strong> <strong>MQ</strong> Explorer<br />

For in<strong>for</strong>mation on connecting or disconnecting to W<strong>MQ</strong><strong>2200</strong> from the <strong>WebSphere</strong><br />

<strong>MQ</strong> Explorer <strong>and</strong> <strong>for</strong> in<strong>for</strong>mation on how to use it, refer to the IBM <strong>WebSphere</strong> <strong>MQ</strong><br />

System <strong>Administration</strong> Manual.<br />

3.8.3. Restrictions<br />

The following functions in <strong>WebSphere</strong> <strong>MQ</strong> Explorer are not supported by W<strong>MQ</strong><strong>2200</strong>:<br />

• The LU 6.2 tab of a channel properties dialog box. W<strong>MQ</strong><strong>2200</strong> does not support the<br />

LU 6.2 protocol.<br />

• Only the TCP/IP protocol is supported by W<strong>MQ</strong><strong>2200</strong>. When creating or modifying<br />

a channel definition from <strong>MQ</strong>Series Explorer, do not select any other protocol in<br />

the Transmission Protocol box in the General tab of the channel properties dialog<br />

box.<br />

3843 3744–002 3–21


Remote <strong>Administration</strong> Using <strong>WebSphere</strong> <strong>MQ</strong> Explorer<br />

3–22 3843 3744–002


Section 4<br />

Application Development<br />

4.1. Exits<br />

This section discusses application development, including exits <strong>and</strong> triggers. You can<br />

write your application program in either COBOL or C language.<br />

Note: Unisys recommends that you define a default queue manager.<br />

Use the following table as a key to navigating this section.<br />

To … See subsection …<br />

Read about exits 4.1<br />

Read about triggers 4.2<br />

Use binary data in the message area 4.3<br />

Compile <strong>and</strong> link W<strong>MQ</strong><strong>2200</strong> application programs 4.4<br />

Read about sticking transactions 4.5<br />

See the W<strong>MQ</strong>$*<strong>MQ</strong>SSAMPLES.README file <strong>for</strong> in<strong>for</strong>mation on sample programs.<br />

Refer to Appendix B, "Application Development," <strong>for</strong> in<strong>for</strong>mation on recommended<br />

transaction scenarios.<br />

An exit is a point in application processing where you can develop <strong>and</strong> run your own<br />

code. For W<strong>MQ</strong><strong>2200</strong> to call your exit code, you must deploy your exit code to the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. Refer to Section 2, "<strong>Installation</strong> <strong>and</strong> Configuration," <strong>for</strong><br />

instructions on how to deploy exit code to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

4.1.1. Data Conversion Exits<br />

W<strong>MQ</strong><strong>2200</strong> does not change the application data carried in a <strong>WebSphere</strong> <strong>MQ</strong><br />

message. The Unisys default <strong>for</strong> data <strong>for</strong>mat is ISO st<strong>and</strong>ard UNICODE; the <strong>OS</strong> <strong>2200</strong><br />

QProcessor uses the default codeset ISO8859-1 - CCSID(819) - at installation time.<br />

3843 3744–002 4–1


Exits<br />

Any data conversion that is needed can be done using a data conversion exit. (This<br />

does not include network-to-host <strong>and</strong> related integer conversions, which must be<br />

h<strong>and</strong>led by the applications using the routines described in Appendix A.) A data<br />

conversion exit is a user-written exit that receives control during the processing of an<br />

<strong>MQ</strong>GET call. When writing applications that span multiple plat<strong>for</strong>ms you must consider<br />

application data conversion, <strong>for</strong>mat names, <strong>and</strong> user exits. When different plat<strong>for</strong>ms<br />

are being used, you might have to convert data sent by one application with an initial<br />

character set <strong>and</strong> encoding corresponding to its plat<strong>for</strong>m to the character set <strong>and</strong> the<br />

encoding required by the receiving application on the other plat<strong>for</strong>m. Data can be<br />

converted at the sending queue manager, or at the receiving queue manager.<br />

The exit is invoked if all of the following are true:<br />

• The <strong>MQ</strong>GMO_CONVERT option is specified on the <strong>MQ</strong>GET call.<br />

• The CodedCharSetId or encoding fields in the <strong>MQ</strong>MD structure associated with<br />

the message on the queue differ from the CodedCharSetId or encoding fields in<br />

the <strong>MQ</strong>MD structure specified on the <strong>MQ</strong>GET call (Refer to the language support<br />

tables in the IBM <strong>WebSphere</strong> <strong>MQ</strong> Intercommunication manual).<br />

• The <strong>for</strong>mat field in the <strong>MQ</strong>MD structure associated with the message is not<br />

<strong>MQ</strong>FMT_NONE (<strong>MQ</strong>FMT_STRING shows that the message consists entirely of<br />

character data).<br />

Refer to the IBM document <strong>WebSphere</strong> <strong>MQ</strong> Application Programming Reference <strong>for</strong><br />

in<strong>for</strong>mation on other conditions. The particular exit to be called is defined in the<br />

<strong>for</strong>mat field of the <strong>MQ</strong>MD structure associated with the message; it is called during<br />

<strong>MQ</strong>GET processing when conversion of data is necessary. This field is only<br />

eight-characters long. The location of data conversion exits is defined in the .ini file <strong>for</strong><br />

each queue manager (qm.ini) by the ExitsDefaultPath64 setting <strong>and</strong> defaults to<br />

/var/mqm/exits64.<br />

For data conversion exits, the actual entry point name called at runtime is a<br />

concatenation of the <strong>for</strong>mat field in the <strong>MQ</strong>MD structure <strong>and</strong> the “_r” suffix. This<br />

differs from other exit types whereby the entry point <strong>MQ</strong>Start must be defined as the<br />

entry point of the exit.<br />

4.1.2. Channel Exits<br />

Channel exits get control while processing network messages. Refer to the IBM<br />

document <strong>WebSphere</strong> <strong>MQ</strong> Intercommunication <strong>for</strong> more in<strong>for</strong>mation on channel<br />

exits.<br />

To specify channel exits <strong>for</strong> channels, use the runmqsc comm<strong>and</strong> on the desired<br />

CHANNEL definition. The exits available <strong>for</strong> definition are SCYEXIT, MSGEXIT, MREXIT,<br />

SENDEXIT, <strong>and</strong> RCVEXIT. Since these parameters require a path name similar to the<br />

data conversion exits, the file path where the exit resides is used in the same way as<br />

the ExitsDefaultPath64 in the qm.ini file of the queue manager.<br />

4–2 3843 3744–002


Example<br />

Exits<br />

This example shows the definition <strong>for</strong> a security exit using the runmqsc comm<strong>and</strong>. It<br />

defines where the exit resides on the <strong>OS</strong> <strong>2200</strong> QProcessor along with the entry point<br />

to call when a request to call an exit is received (SECEXIT). The file name <strong>and</strong> exit entry<br />

point within the inner parentheses are both case-sensitive.<br />

ALTER CHANNEL(MYCHANNEL) +<br />

CHLTYPE(SDR) +<br />

SCYEXIT(/var/mqm/exits64/myexit(SecurityFunction)')<br />

4.1.3. Creating <strong>and</strong> Using Exits<br />

Develop Code<br />

Develop code corresponding to the type of exit you are creating. For a description of<br />

the parameters that are passed to the data conversion exit <strong>and</strong> <strong>for</strong> detailed usage<br />

notes, refer to the <strong>MQ</strong>DATACONVEXIT call <strong>and</strong> the <strong>MQ</strong>DXP structure in the IBM<br />

<strong>WebSphere</strong> <strong>MQ</strong> Application Programming Reference. For a description of the<br />

parameters that are passed to a channel exit <strong>and</strong> <strong>for</strong> detailed usage notes, refer to the<br />

IBM <strong>WebSphere</strong> <strong>MQ</strong> Intercommunication manual.<br />

Data Conversion Exits<br />

For data conversion exits, use the crtmqcvx program to generate code fragments to<br />

be used within the exit to aid in the data conversion. Refer to the IBM document<br />

<strong>WebSphere</strong> System <strong>Administration</strong> <strong>for</strong> a detailed description on how to use the<br />

crtmqcvx program. Refer to the IBM <strong>WebSphere</strong> Application Programming Guide <strong>for</strong><br />

in<strong>for</strong>mation on how to build a data conversion exit.<br />

The crtmqcvx Program<br />

The crtmqcvx program produces code that uses macros defined in the amqsvmha/h<br />

header. These macros assume that the structure used as input is packed (all the bytes<br />

within the data structure are used). If a structure is unpacked, there are transparent<br />

filler bytes within the structure that are generated because all 2-byte short integers<br />

must start on a half word boundary <strong>and</strong> all 4-byte integers must start on a word<br />

boundary. For example, the declaration of a 1-byte character followed by a declaration<br />

of an integer would produce three filler bytes between the character declaration <strong>and</strong><br />

the integer declaration.<br />

Since the macros are defined in a header file, you can easily modify this header so that<br />

the macros skip the unused bytes within the structures if the structures are unpacked.<br />

Calling the network-to-host functions <strong>for</strong> integer data, described in Appendix A is<br />

currently unsupported.<br />

3843 3744–002 4–3


Triggers<br />

The data conversion exits get control when the CodedCharSetId or Encoding fields in<br />

the <strong>MQ</strong>MD structure of the message on the queue differ from the CodedCharSetId or<br />

Encoding fields in the <strong>MQ</strong>MD structure, specified on an <strong>MQ</strong>GET call. Since the<br />

crtmqcvx program takes input <strong>and</strong> produces output using a file on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor, you must copy your input code to the <strong>OS</strong> <strong>2200</strong> QProcessor be<strong>for</strong>e<br />

running the crtmqcvx program. You can use the mqimport utility in UNX to copy your<br />

<strong>OS</strong> <strong>2200</strong> input file to the /var/mqm file structure on the <strong>OS</strong> <strong>2200</strong> QProcessor. You can<br />

use mqexport to copy the output source back to the <strong>OS</strong> <strong>2200</strong> after running the<br />

crtmqcvx program.<br />

Building the Exit<br />

To build the exit code, use the buildexit utility in the UNX shell. Refer to Section 2,<br />

"<strong>Installation</strong> <strong>and</strong> Configuration," <strong>for</strong> more in<strong>for</strong>mation on building <strong>and</strong> deploying the<br />

exit.<br />

Call the Exit<br />

Initiate a sequence of events to call the exit. The data conversion exits are called if the<br />

appropriate conditions as defined in the IBM document <strong>WebSphere</strong> <strong>MQ</strong> Application<br />

Programming Guide exists <strong>for</strong> the message. The particular exit that gets control if the<br />

conditions exist is defined in the Format field of the <strong>MQ</strong>MD structure associated with<br />

the message being received through <strong>MQ</strong>GET. For channel exits, once they are<br />

configured <strong>for</strong> a channel using the runmqsc comm<strong>and</strong>, they start being called once the<br />

channel is started using the runmqchl control comm<strong>and</strong> or the runmqsc START<br />

CHANNEL comm<strong>and</strong>. For data conversion exits, the process calling <strong>MQ</strong>GET calls the<br />

exit. In the event that a channel exit aborts, it might be necessary to use the runmqsc<br />

comm<strong>and</strong> to stop <strong>and</strong> start the channels being used.<br />

4.2. Triggers<br />

A trigger event causes an <strong>MQ</strong>Series trigger message to be generated by the queue<br />

manager <strong>and</strong> sent to an initiation queue. Most commonly a trigger event is created by<br />

putting a message to a local queue that has triggering defined <strong>for</strong> it.<br />

A trigger monitor application monitors the initiation queue <strong>and</strong> processes messages<br />

on that queue.<br />

There are two types of trigger monitor programs: the default trigger monitor <strong>and</strong> a<br />

user-written trigger monitor. The default trigger monitor runs on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>and</strong> cannot be modified. The user-written trigger monitor runs on the<br />

<strong>OS</strong> <strong>2200</strong> as a batch program <strong>and</strong> can be customized.<br />

Both trigger monitors can trigger (start or schedule) <strong>OS</strong> <strong>2200</strong> Open DTP servers, batch<br />

programs, or TIP transactions.<br />

The <strong>OS</strong> <strong>2200</strong> UNX dem<strong>and</strong> processor ps comm<strong>and</strong> identifies the default trigger<br />

monitor by the name amqtrgmn. It identifies the user-written trigger monitor by the<br />

name you supply in the batch start stream of the monitor.<br />

4–4 3843 3744–002


Triggers<br />

W<strong>MQ</strong><strong>2200</strong> provides a sample trigger monitor executable (amqstrg0) <strong>and</strong> source code<br />

(amqstrg0/c) <strong>for</strong> the user-written trigger monitor in the wmq$*mqs$samples file. You<br />

can update this code to per<strong>for</strong>m any actions you wish when messages arrive on the<br />

initiation queue. There is an example build stream <strong>for</strong> the user trigger monitor in<br />

element amqstrg0/make.<br />

The default trigger monitor <strong>and</strong> the sample user trigger monitor are released to access<br />

Mode A installation of Open DTP (OTM$).<br />

If you require an alternate Open DTP installation <strong>for</strong> the default trigger monitor, rebuild<br />

W<strong>MQ</strong><strong>2200</strong> to access the desired installation of Open DTP. If you want the default<br />

trigger monitor to schedule TIP programs, set the <strong>MQ</strong>S$CONFIG.<strong>MQ</strong>SERIES/CONFIG<br />

element configuration tag, McbEntryBdi, to the MCBBNK CBD address <strong>for</strong> the desired<br />

application group.<br />

If you require an alternate Open DTP installation or application group <strong>for</strong> the<br />

user-defined trigger monitor, update element amqstrg0/make to rebuild the<br />

user-defined trigger monitor so that it calls the alternate Open DTP installation <strong>and</strong><br />

application group.<br />

4.2.1. Configuring a Local Queue <strong>for</strong> Triggering<br />

The runmqsc definition statements required to configure triggering are the DEFINE<br />

QLOCAL <strong>and</strong> the DEFINE PROCESS statements.<br />

DEFINE QLOCAL statement is required <strong>for</strong> both the local queue that causes the queue<br />

manager to trigger an event to the initiation queue when a message arrives <strong>and</strong> <strong>for</strong><br />

the initiation queue where the trigger monitor waits to start programs.<br />

For the local queue that is to be triggered, you must provide the following fields in<br />

your runmqsc definition:<br />

• INITQ (supply the name of the initiation queue)<br />

• keyword TRIGGER (to enable the triggering event)<br />

• PROCESS (to identify which program is to be started by the trigger monitor)<br />

The following are examples of initiation queue <strong>and</strong> associated local queue definitions<br />

that causes a batch job to start when a message is put to queue Q2.<br />

DEFINE QL(INITQ.<strong>2200</strong>BATCH)<br />

DEFINE QL(Q2) INITQ(INITQ.<strong>2200</strong>BATCH) TRIGGER +<br />

PROCESS(<strong>2200</strong>BATCH) TRIGTYPE(FIRST)<br />

The use of the default trigger monitor or a user-written trigger monitor is determined<br />

by the presence of a PROCESS statement on the DEFINE QLOCAL <strong>for</strong> the initiation<br />

queue. The following guidelines help you determine which trigger monitor to use.<br />

3843 3744–002 4–5


Triggers<br />

• No PROCESS name on the DEFINE QLOCAL definition of an initiation queue<br />

indicates that you are using a default trigger monitor (runs on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>and</strong> is not modifiable by you).<br />

• The specification of a PROCESS name on the DEFINE QLOCAL definition <strong>for</strong> an<br />

initiation queue indicates that you are using a user-written trigger monitor that<br />

runs on the <strong>OS</strong> <strong>2200</strong> as a batch program.<br />

Using the preceding guidelines, you can observe that in the previous example the<br />

initiation queue INITQ.<strong>2200</strong>BATCH is defined to use the default trigger monitor.<br />

The following is an example of an initiation queue definition that uses a user-written<br />

trigger monitor with a PROCESS field.<br />

DEFINE QL(INITQ.<strong>2200</strong>) PROCESS(UTRM)<br />

Defining Processes<br />

A PROCESS definition is used to<br />

• Describe the program to be started <strong>for</strong> a triggered queue, or<br />

• Provide the in<strong>for</strong>mation to start an <strong>OS</strong> <strong>2200</strong> batch user trigger monitor.<br />

PROCESS Definition <strong>for</strong> a Triggered Queue<br />

One PROCESS definition is always required on the DEFINE QLOCAL of the triggered<br />

local queue to identify the <strong>OS</strong> <strong>2200</strong> program to be started or triggered when a<br />

message arrives. For example, the following triggered local queue definition specifies<br />

that PROCESS (<strong>2200</strong>TIP) be used to determine which program to start when a<br />

message is input.<br />

DEFINE QL(Q5) DEFPSIST(yes) INITQ(INITQ.<strong>2200</strong>TIP) +<br />

TRIGGER PROCESS(<strong>2200</strong>TIP) TIGTYPE(FIRST)<br />

The PROCESS definition <strong>for</strong> <strong>2200</strong>TIP shows which program type <strong>and</strong> program name is<br />

to be started. The specification of the APPLTYPE field on the PROCESS definition<br />

determines the type of program to be activated. The APPLICID field contains either the<br />

name of the program or a batch start stream if the type is BATCH. For example, the<br />

following PROCESS definition indicates the program type to be triggered is TIP <strong>and</strong> the<br />

transaction program name (code) is TRGTIP.<br />

DEFINE PROCESS(<strong>2200</strong>TIP) DESCR('schedule TIP program') +<br />

APPLTYPE(TIP) APPLICID('TRGTIP')<br />

The specification of the APPLTYPE <strong>and</strong> APPLICID fields on a DEFINE PROCESS<br />

comm<strong>and</strong> determines the program to be activated as described in the following table.<br />

1. Set the APPLTYPE field of the PROCESS definition to OLTP, OLTPS, BATCH, or TIP,<br />

depending on how the service is to be activated.<br />

4–6 3843 3744–002


Triggers<br />

2. Set the APPLCID field <strong>for</strong> the PROCESS definition to a TIP transaction code, an<br />

OLTP service name, or <strong>for</strong> the case of a batch program, to the location of the start<br />

stream.<br />

3. When using Open DTP, you must configure the service name in the Open<br />

Distributed Transaction Processing TMSCONFIG file. Refer to the Open<br />

Distributed Transaction Processing <strong>Administration</strong> Guide Volume 1 <strong>for</strong><br />

in<strong>for</strong>mation on how to configure an Open Distributed Transaction Processing<br />

service.<br />

If the APPLTYPE<br />

field is set to …<br />

The trigger monitor …<br />

BATCH Constructs a start image using the APPLICID field from the<br />

PROCESS definition <strong>and</strong> issues the image to activate the process<br />

(that is, the batch application). The <strong>for</strong>mat of the APPLICID field is<br />

APPLICID('qual*file.elt/vers[,run-id]')<br />

where<br />

qual*file.elt/vers specifies the location of the batch application<br />

executable.<br />

setc specifies an optional octal number (not exceeding 4 digits in<br />

length) to be placed in the middle third of the condition word <strong>for</strong><br />

the batch application’s run.<br />

run-id optionally overrides the run-id specified in the started<br />

runstream.<br />

Note: qual*file.elt/vers,setc,run-id are equivalent to the first<br />

three parameters on an <strong>OS</strong> <strong>2200</strong> @START statement.<br />

To set up a single runstream to h<strong>and</strong>le multiple queues, use the<br />

setc <strong>and</strong> run-id fields of the start image. There is no method of<br />

passing trigger in<strong>for</strong>mation to this kind of application, but it is<br />

useful <strong>for</strong> activating one-time events.<br />

OLTP Makes an asynchronous call to the configured service using the<br />

XATMI function tpacall with the TPNOREPLY flag set. Since no<br />

reply is expected, the trigger monitor checks the initiation queue<br />

<strong>and</strong> makes calls to start additional processes while the first<br />

service is executing.<br />

The APPLICID field contains the name of the OLTP service in<br />

single quotes.<br />

APPLICID('service-name')<br />

Note: The released product builds the default <strong>and</strong> user trigger<br />

monitors to access the default OTM$ Open DTP installation. If<br />

you want your default trigger monitor to access an alternate<br />

Open DTP installation, you must build an alternate installation<br />

of W<strong>MQ</strong><strong>2200</strong> <strong>for</strong> that Open DTP installation. If you want your<br />

user trigger monitor to access an alternate Open DTP<br />

installation, you must update <strong>and</strong> add the A<strong>MQ</strong>STRG0/MAKE<br />

add stream in the wmq$*mqs$samples file <strong>for</strong> that Open DTP<br />

installation.<br />

3843 3744–002 4–7


Triggers<br />

If the APPLTYPE<br />

field is set to …<br />

The trigger monitor …<br />

OLTPS Makes a synchronous call to the configured service using the<br />

XATMI function tpcall with the flag TPNOTIME set. This causes<br />

the trigger monitor to wait <strong>for</strong> the called XATMI service to<br />

complete its processing be<strong>for</strong>e looking at the initiation queue <strong>for</strong><br />

additional trigger messages. After making the appropriate call,<br />

the trigger monitor continues checking <strong>and</strong> processing additional<br />

trigger messages.<br />

The APPLICID field contains the name of the OLTP service in<br />

single quotes.<br />

APPLICID('service-name')<br />

Using the OLTPS setting limits the number of triggered services<br />

that can be active to the number of trigger monitors active;<br />

however, you can also control the number of copies of the<br />

triggered service using the CONCURRENCY configuration<br />

parameter in the *SERVERS section of the TMSCONFIG file within<br />

Open Distributed Transaction Processing.<br />

Refer to the Open Distributed Transaction Processing<br />

<strong>Administration</strong> Guide Volume 1 <strong>for</strong> in<strong>for</strong>mation on how to set<br />

the CONCURRENCY parameter <strong>for</strong> an Open Distributed<br />

Transaction Processing server. Refer to the Open Distributed<br />

Transaction Processing XATMI Application Interface<br />

Programming Guide <strong>for</strong> more in<strong>for</strong>mation on Open Distributed<br />

Transaction Processing application development.<br />

Note: The released product builds the default <strong>and</strong> user trigger<br />

monitors to access the default OTM$ Open DTP installation. If<br />

you want your default trigger monitor to access an alternate<br />

Open DTP installation, you must build an alternate installation<br />

of W<strong>MQ</strong><strong>2200</strong> <strong>for</strong> that Open DTP installation. If you want your<br />

user trigger monitor to access an alternate Open DTP<br />

installation, you must update <strong>and</strong> add the A<strong>MQ</strong>STRG0/MAKE<br />

add stream in the wmq$*mqs$samples file <strong>for</strong> that Open DTP<br />

installation.<br />

TIP Makes a connection to the MCB <strong>and</strong> passes the <strong>MQ</strong>TMC2 data<br />

structure to the transaction named in APPLICID as input data.<br />

Note: The McbEntryBdi configuration tag in your<br />

<strong>MQ</strong>S$CONFIG.mqseries/config element must be set to the<br />

installed MCBBNK BDI to select the application group <strong>for</strong><br />

scheduling transactions by the default trigger monitor. The<br />

<strong>for</strong>m of the configuration tag should be 040nnnn. The MCB<br />

must have UDBASE set to 0600000 or higher. If you are using a<br />

user-written trigger monitor, update <strong>and</strong> add the<br />

A<strong>MQ</strong>STRG0/MAKE add stream in the wmq$*mqs$samples file<br />

to access the desired MCB application group.<br />

4–8 3843 3744–002


PROCESS Definition <strong>for</strong> a User-written Trigger Monitor<br />

Triggers<br />

A user trigger monitor is indicated by a PROCESS field on the initiation queue<br />

definition. The PROCESS definition <strong>for</strong> the user trigger monitor must specify<br />

APPLTYPE(BATCH) <strong>and</strong> an APPLICID containing the <strong>OS</strong> <strong>2200</strong> file name <strong>and</strong> element of<br />

the start stream <strong>for</strong> the monitor that you have compiled <strong>and</strong> linked.<br />

DEFINE QL(INITQ.<strong>2200</strong>) DEFPSIST(yes) PROCESS(UTRM)<br />

DEFINE PROCESS(UTRM) DESCR('user trm process') +<br />

APPLTYPE(BATCH) APPLICID('MYFILE*W<strong>MQ</strong>TRM.UTRM/RUN,,UTRM')<br />

4.2.2. Creating a User-Defined Trigger Monitor<br />

If the default trigger monitor program included with W<strong>MQ</strong><strong>2200</strong> does not meet your<br />

requirements, per<strong>for</strong>m the following steps to define your own trigger monitor<br />

application:<br />

1. Within the W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES file, modify the sample source code element<br />

A<strong>MQ</strong>STRG0/C to allow your trigger monitor to per<strong>for</strong>m additional processing. A<br />

new requirement <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> user trigger monitors is that the <strong>MQ</strong>GET must<br />

have the <strong>MQ</strong>GMO_CONVERT option set. This is because the <strong>MQ</strong>GET is being done<br />

from the <strong>OS</strong> <strong>2200</strong> to the <strong>OS</strong> <strong>2200</strong> QProcessor, <strong>and</strong> conversion needs to be done<br />

across plat<strong>for</strong>ms.<br />

2. After making the local modifications to the user trigger monitor program code,<br />

update the build stream in W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES.A<strong>MQ</strong>STRG0/MAKE if you want<br />

to use a different application group to schedule TIP transactions or a different<br />

Open DTP installation to start servers. Compile <strong>and</strong> link this program with this<br />

build stream.<br />

3. After compiling <strong>and</strong> linking the user-defined trigger monitor program, create a<br />

runstream in a program file element that executes the program.<br />

Example<br />

@RUN UTRM,,<br />

@DELETE,C TRMPR.<br />

@CAT,P TRMPR.<br />

@BRKPT PRINT$/TRMPR<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES.A<strong>MQ</strong>STRG<br />

<br />

@BRKPT PRINT$<br />

@EOF<br />

4. The file <strong>and</strong> element name <strong>for</strong> this runstream must be supplied in the APPLICID<br />

field of the PROCESS definition <strong>for</strong> the user trigger monitor. The <strong>for</strong>mat of the<br />

DEFINE PROCESS comm<strong>and</strong> <strong>for</strong> this scenario is as follows:<br />

DEFINE PROCESS(process-name) DESCR(string)<br />

APPLTYPE(BATCH) APPLICID('qual*file.elt/vers[,,run-id]')<br />

3843 3744–002 4–9


Triggers<br />

where:<br />

process-name is the name of the <strong>MQ</strong>Series PROCESS definition supplied on the<br />

initiation queue’s DEFINE QLOCAL definition.<br />

string is a plain-text comment describing this PROCESS definition.<br />

qual*file.elt/vers specifies the location of the batch trigger monitor executable.<br />

run-id optionally overrides the run-id specified in the started runstream.<br />

Notes:<br />

• qual*file.elt/vers,,run-id are equivalent to the first three parameters on an<br />

<strong>OS</strong> <strong>2200</strong> @START statement.<br />

• If you wish to re-use a <strong>MQ</strong>S<strong>2200</strong> user-written trigger monitor, you must add<br />

the <strong>MQ</strong>GMO_CONVERT option to the <strong>MQ</strong>GET call since the initiation queue<br />

now resides on the Specialty Processor. Recompile <strong>and</strong> re-link the user<br />

trigger monitor be<strong>for</strong>e starting it.<br />

• The W<strong>MQ</strong><strong>2200</strong> subsystem per<strong>for</strong>ms the @START of the user-written trigger<br />

monitor runstream <strong>and</strong> the W<strong>MQ</strong><strong>2200</strong> subsystem user ID is mapped to the<br />

root user ID on the <strong>OS</strong> <strong>2200</strong> QProcessor. There<strong>for</strong>e, the root user on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor must be a member of the mqm group if the queue<br />

manager that the trigger monitor uses has the OAM component enabled.<br />

You can do this with the rootmod –a comm<strong>and</strong> in the UNX shell.<br />

4.2.3. Trigger Monitor Processing<br />

When a message is put on a queue that is configured <strong>for</strong> triggering, the queue<br />

manager places a trigger message on the initiation queue associated with the queue.<br />

The default or user-defined trigger monitor programs loop in <strong>MQ</strong>GET on the initiation<br />

queue, waiting to receive the trigger messages. Normally, the trigger monitor starts a<br />

program to process the queued message. Refer to the IBM <strong>MQ</strong>Series Application<br />

Programming Guide <strong>for</strong> more in<strong>for</strong>mation on triggering.<br />

The trigger monitor passes the trigger message <strong>and</strong> the in<strong>for</strong>mation in it to the<br />

application it starts in an <strong>MQ</strong>Series <strong>MQ</strong>TMC2 data structure. Refer to the <strong>MQ</strong>Series<br />

Application Programming Reference <strong>for</strong> more in<strong>for</strong>mation on the <strong>MQ</strong>TMC2 <strong>for</strong>mat.<br />

Note: If the triggered application is an <strong>OS</strong> <strong>2200</strong> batch program, the <strong>MQ</strong>TMC2 is not<br />

provided to the batch program. If you want the batch program to have that<br />

in<strong>for</strong>mation, you might need to enhance a user trigger monitor program to place the<br />

trigger message on an <strong>MQ</strong>Series queue from which the triggered batch program can<br />

retrieve the trigger in<strong>for</strong>mation.<br />

The default trigger monitor program relies on the W<strong>MQ</strong><strong>2200</strong> subsystem to per<strong>for</strong>m<br />

the MCB transaction scheduling functions <strong>and</strong> the Open DTP TP API calls. You must<br />

set the McbEntryBdi <strong>MQ</strong>S$CONFIG.mqseries/config configuration tag to the installed<br />

MCBBNK BDI <strong>for</strong> which you wish to schedule transactions.<br />

4–10 3843 3744–002


Triggers<br />

The released W<strong>MQ</strong><strong>2200</strong> subsystem installation is built to call servers with the default<br />

OTM$ Open DTP. You need to rebuild <strong>and</strong> install an alternate version of the W<strong>MQ</strong><strong>2200</strong><br />

product, if you are planning to use default trigger monitors <strong>and</strong> require an alternate<br />

Open DTP installation.<br />

The user-defined trigger monitor program does not rely on the W<strong>MQ</strong><strong>2200</strong> subsystem<br />

to per<strong>for</strong>m MCB transaction scheduling functions or the Open DTP TP API calls. The<br />

scheduling of TIP transactions <strong>and</strong> TP API calls are done by the user trigger monitor<br />

program itself. The released sample trigger monitor is built to schedule transactions<br />

with the MCBBNK BDI 0402277 <strong>and</strong> to invoke servers in the default OTM$ Open DTP<br />

installation. If you are planning to employ user trigger monitors <strong>and</strong> you require an<br />

alternate application group or Open DTP installation, you must update <strong>and</strong> add the<br />

amqstrg0/make element in file wmq$*mqs$samples to make a new executable zoom.<br />

4.2.4. Configuration Examples<br />

The following example shows some definitions using runmqsc comm<strong>and</strong>s to<br />

configure trigger services. These examples define local queues, initiation queues, <strong>and</strong><br />

processes.<br />

The local queues Q1A to Q1D are connected to the initiation queue INITQ1, which is<br />

using a default trigger monitor. The local queues Q2A to Q2D are connected to the<br />

initiation queue INITQ2, which is using a user-defined trigger monitor identified by<br />

PROCESS (QMON2).<br />

The PROCESS field on the DEFINE QLOCAL comm<strong>and</strong> <strong>for</strong> INITQ2 specifies that a<br />

user-defined trigger monitor will be started.<br />

Define the initiation queues.<br />

DEFINE QLOCAL(INITQ1) DEFPSIST(YES)<br />

DEFINE QLOCAL(INITQ2) DEFPSIST(YES) PROCESS(QMON2)<br />

Define local queues <strong>for</strong> triggering. Associate them with an initiation queue <strong>and</strong> the<br />

program to start when a message arrives.<br />

DEFINE QLOCAL(Q1A) DEFPSIST(YES) INITQ(INITQ1) TRIGGER PROCESS(TRIG1)<br />

DEFINE QLOCAL(Q1B) DEFPSIST(YES) INITQ(INITQ1) TRIGGER PROCESS(TRIG2)<br />

DEFINE QLOCAL(Q1C) DEFPSIST(YES) INITQ(INITQ1) TRIGGER PROCESS(TRIG3)<br />

DEFINE QLOCAL(Q1D) DEFPSIST(YES) INITQ(INITQ1) TRIGGER PROCESS(TRIG4)<br />

DEFINE QLOCAL(Q2A) DEFPSIST(YES) INITQ(INITQ2) TRIGGER PROCESS(TRIG1)<br />

DEFINE QLOCAL(Q2B) DEFPSIST(YES) INITQ(INITQ2) TRIGGER PROCESS(TRIG2)<br />

DEFINE QLOCAL(Q2C) DEFPSIST(YES) INITQ(INITQ2) TRIGGER PROCESS(TRIG3)<br />

DEFINE QLOCAL(Q2D) DEFPSIST(YES) INITQ(INITQ2) TRIGGER PROCESS(TRIG4)<br />

Define the programs to be started or triggered.<br />

DEFINE PROCESS(TRIG1) DESCR('Triggered OLTP tpacall service') +<br />

APPLTYPE(OLTP) APPLICID('Service1')<br />

DEFINE PROCESS(TRIG2) DESCR('Triggered OLTP tpcall service') +<br />

APPLTYPE(OLTPS) APPLICID('Service2')<br />

3843 3744–002 4–11


Triggers<br />

DEFINE PROCESS(TRIG3) DESCR('Triggered batch application') +<br />

APPLTYPE(BATCH) APPLICID('my*batchapps.trig3/run')<br />

DEFINE PROCESS(TRIG4) DESCR('Triggered TIP service') +<br />

APPLTYPE(TIP) APPLICID('tipsvc')<br />

Define the user trigger monitor program.<br />

DEFINE PROCESS(QMON2) DESCR('User-defined batch trigger monitor') +<br />

APPLTYPE(BATCH) APPLICID('trigger*trigfile.samptrig/run,,STRGR')<br />

The following runstream, samptrig/run, references the sample user-defined trigger<br />

monitor executable provided in the W<strong>MQ</strong>$*<strong>MQ</strong>S$SAMPLES file, amqstrg0. The<br />

sample source code requests the initiation queue name <strong>and</strong> the queue manager name<br />

at execution time. The example queue manager name is QM1.<br />

@RUN STRGR,,PROJID<br />

@DELETE,C TRIGPR.<br />

@CAT,P TRIGPR.<br />

@BRKPT PRINT$/TRIGPR<br />

@TRIGGER*TRIGFILE.A<strong>MQ</strong>STRG<br />

INITQ2 QM1<br />

@BRKPT PRINT$<br />

@EOF<br />

4.2.5. Starting the Trigger Monitors<br />

Use the <strong>OS</strong> <strong>2200</strong> UNX dem<strong>and</strong> processor runmqtrm comm<strong>and</strong> to start your trigger<br />

monitors. The <strong>for</strong>mat is the same <strong>for</strong> either the default trigger monitor or a<br />

user-written trigger monitor.<br />

runmqtrm -m -q <br />

You can start the default trigger monitor with the following comm<strong>and</strong> in the UNX<br />

dem<strong>and</strong> processor:<br />

runmqtrm -m QM1 -q INITQ1<br />

Similarly, you can start the user-defined trigger monitor with the following comm<strong>and</strong><br />

in the UNX dem<strong>and</strong> processor:<br />

runmqtrm -m QM1 -q INITQ2<br />

4.2.6. Terminating a Trigger Monitor<br />

There are two ways to terminate a trigger monitor:<br />

• End the queue manager<br />

• Disable initiation queue get<br />

If you end the queue manager with the UNX dem<strong>and</strong> processor endmqm comm<strong>and</strong>, all<br />

trigger monitors active <strong>for</strong> that queue manager terminate automatically.<br />

4–12 3843 3744–002


Using Binary Data in the Message Area<br />

To terminate a single trigger monitor, disable the get capability of the initiation queue<br />

after starting runmqsc under the UNX dem<strong>and</strong> processor, as follows:<br />

alter qlocal(INITQ1) get(DISABLED)<br />

Note: The W<strong>MQ</strong><strong>2200</strong> daemon will not shutdown if any default trigger monitors are<br />

triggering <strong>OS</strong> <strong>2200</strong> programs. This is because they are still attached to <strong>and</strong> using the<br />

connection that the daemon established between the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. You must stop all active default trigger monitors be<strong>for</strong>e stopping the<br />

W<strong>MQ</strong><strong>2200</strong> daemon.<br />

4.3. Using Binary Data in the Message Area<br />

4.3.1. The <strong>OS</strong><strong>2200</strong> Architecture<br />

The <strong>OS</strong> <strong>2200</strong> environment is a 36-bit, one’s-complement, big-endian architecture with<br />

four 9-bit bytes in every 36-bit word. When data is transferred over a TCP/IP network<br />

connection from the <strong>OS</strong> <strong>2200</strong> environment, the data is re<strong>for</strong>matted from 36 bits to 32<br />

bits. This re<strong>for</strong>matting is accomplished by sending the lower 8 bits of every 9-bit byte<br />

<strong>and</strong> ignoring the ninth bit. When data is received from the network, the <strong>OS</strong> <strong>2200</strong><br />

system receives a stream of 8-bit bytes. These 8-bit bytes are stored into the 9-bit<br />

bytes <strong>and</strong> the ninth bit of every byte is ignored.<br />

4.3.2. The <strong>OS</strong> <strong>2200</strong> QProcessor Architecture<br />

The <strong>OS</strong> <strong>2200</strong> QProcessor environment that the queue managers run on natively is a<br />

64-bit two’s complement, little endian architecture with eight 8-bit bytes in every<br />

64-bit word.<br />

4.3.3. Data Transmission <strong>and</strong> Conversion Challenges<br />

When transmitting data between the <strong>OS</strong> <strong>2200</strong> system <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessor,<br />

there are two challenges that must be overcome. First, as described above, the<br />

<strong>OS</strong> <strong>2200</strong> system uses 9-bits per byte while the <strong>OS</strong> <strong>2200</strong> QProcessor uses 8-bits per<br />

byte. This must be accounted <strong>for</strong> when data is sent or received between the two<br />

plat<strong>for</strong>ms. All multi-byte data must be adjusted to account <strong>for</strong> these architectural<br />

differences so that when the data arrives on the other system the data is represented<br />

correctly. Second, since the <strong>OS</strong> <strong>2200</strong> is a big-endian byte ordering architecture <strong>and</strong> the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor is a little-endian byte ordering architecture, multi-byte data (<strong>for</strong><br />

example shorts, integers, <strong>and</strong> longs) are represented differently on each plat<strong>for</strong>m <strong>and</strong><br />

must be converted so that they are represented properly on the given system. This<br />

conversion is called byte swapping.<br />

3843 3744–002 4–13


Using Binary Data in the Message Area<br />

4.3.4. <strong>WebSphere</strong> <strong>MQ</strong> Encodings<br />

<strong>WebSphere</strong> <strong>MQ</strong> uses the terminology “encoding” to refer to the endianness (or byte<br />

ordering) of multi-byte data. <strong>WebSphere</strong> <strong>MQ</strong> requires that multi-byte data passed as<br />

parameters on <strong>MQ</strong> API calls in a server environment always be in the local encoding<br />

(or endianness) of the queue manager. This means that a queue manager running on<br />

little-endian architecture requires parameters passed in <strong>MQ</strong> API calls to be in<br />

little-endian byte ordering. Since the <strong>OS</strong> <strong>2200</strong> applications are running on big-endian<br />

architecture, this must be accounted <strong>for</strong>. The W<strong>MQ</strong><strong>2200</strong> subsystem compensates <strong>for</strong><br />

this by per<strong>for</strong>ming the necessary conversion be<strong>for</strong>e <strong>and</strong> after the <strong>MQ</strong> API calls so that<br />

all parameters are presented to the queue manager in little-endian byte ordering <strong>and</strong><br />

are returned to the <strong>OS</strong> <strong>2200</strong> application in its native big-endian byte ordering. This is<br />

completely transparent to the <strong>OS</strong> <strong>2200</strong> application <strong>and</strong> <strong>WebSphere</strong> <strong>MQ</strong> queue<br />

managers. Message data on the other h<strong>and</strong> can be in any byte ordering (<strong>and</strong><br />

sometimes is a mix of byte orderings) subject to specific limitations. This means it is<br />

valid <strong>for</strong> an application to put messages containing big-endian data to a queue<br />

manager on a little-endian byte ordering architecture or vice versa. It is also valid to<br />

put messages with data containing both byte-orderings to a queue manager, subject<br />

to specific rules <strong>and</strong> limitations. In the case of message data, this might be transparent<br />

to the user application.<br />

4.3.5. Message Formats: Built-In versus User-Defined<br />

Message data can be composed of built-in or user-defined message data or a<br />

combination of both. Built-in message <strong>for</strong>mats are those which are defined by<br />

<strong>WebSphere</strong> <strong>MQ</strong>. These include structures defined by <strong>WebSphere</strong> <strong>MQ</strong> that can be<br />

included in message data. Examples include the <strong>MQ</strong>RFH (Reference Header), <strong>MQ</strong>MDE<br />

(Message Descriptor Extension), as well as many others. <strong>WebSphere</strong> <strong>MQ</strong> is<br />

responsible <strong>for</strong> conversion of built-in message <strong>for</strong>mats since it knows the structure of<br />

these <strong>for</strong>mats. User-defined <strong>for</strong>mats are defined as message <strong>for</strong>mats that the user<br />

application defines. These <strong>for</strong>mats are unknown to <strong>WebSphere</strong> <strong>MQ</strong> <strong>and</strong> there<strong>for</strong>e<br />

cannot be converted by <strong>WebSphere</strong> <strong>MQ</strong> natively. It is up to the user application or a<br />

user-written exit to convert this data if necessary.<br />

4.3.6. Built-In Message Format Conversion<br />

When user applications put or retrieve messages containing built-in message <strong>for</strong>mats,<br />

<strong>WebSphere</strong> <strong>MQ</strong> is responsible <strong>for</strong> all conversions of data. The W<strong>MQ</strong><strong>2200</strong> subsystem<br />

<strong>and</strong> queue manager per<strong>for</strong>m all necessary conversion to transfer messages containing<br />

built-in message <strong>for</strong>mats between architectures successfully. Transferring built-in<br />

message <strong>for</strong>mats in message data in any encoding (or endianness) is fully supported<br />

in both directions. This means you can put or get messages containing big or little<br />

endian built-in <strong>for</strong>mat data. This is generally transparent to the <strong>OS</strong> <strong>2200</strong> user<br />

application. However, see the sections regarding the <strong>MQ</strong>MDE <strong>and</strong> <strong>MQ</strong>GMO_CONVERT<br />

option <strong>for</strong> important considerations when developing applications in a W<strong>MQ</strong><strong>2200</strong><br />

environment.<br />

4–14 3843 3744–002


4.3.7. Special <strong>MQ</strong>MDE Considerations<br />

Using Binary Data in the Message Area<br />

In almost all cases, a queue manager accepts messages containing built-in message<br />

<strong>for</strong>mat data in any encoding. However, there are very specific situations where this is<br />

not always true. The use of <strong>MQ</strong>MDE presents just such a case. The <strong>MQ</strong>MDE allows a<br />

user application that uses a V1 <strong>MQ</strong>MD a way to provide extra V2 <strong>MQ</strong>MD data to the<br />

queue manager. To do this, the application must pass the <strong>MQ</strong>MDE data at the<br />

beginning of the message data. If the <strong>MQ</strong>MDE is honored by the queue manager, the<br />

<strong>MQ</strong>MDE data is combined with the V1 <strong>MQ</strong>MD passed on the <strong>MQ</strong>PUT/<strong>MQ</strong>PUT1 call to<br />

generate a V2 <strong>MQ</strong>MD that is included with the message when it is retrieved with an<br />

<strong>MQ</strong>GET later. However, <strong>for</strong> the <strong>MQ</strong>MDE to be recognized by the queue manager<br />

special requirements must be satisfied. Refer to the IBM <strong>WebSphere</strong> <strong>MQ</strong> Application<br />

Programming Reference manual <strong>for</strong> details on the requirements. The requirement<br />

that is most important to note in a W<strong>MQ</strong><strong>2200</strong> environment is that the <strong>MQ</strong>MDE<br />

provided in the user message must be in the queue manager’s local encoding. Since<br />

the <strong>OS</strong> <strong>2200</strong> application is running in a big-endian environment, <strong>and</strong> the queue<br />

manager is running in a little-endian environment, this requirement is not satisfied by<br />

default. To overcome this, W<strong>MQ</strong><strong>2200</strong> provides mechanisms, both manual <strong>and</strong><br />

automatic, that user applications can use to convert <strong>MQ</strong>MDE in message data into a<br />

<strong>for</strong>mat that the queue manager on the <strong>OS</strong> <strong>2200</strong> QProcessor will honor. First, the<br />

Convert<strong>MQ</strong>MDE configuration tag is provided in the W<strong>MQ</strong><strong>2200</strong> subsystem. If enabled,<br />

the subsystem automatically converts <strong>MQ</strong>MDE data in user messages to the queue<br />

manager’s local encoding when messages are put <strong>and</strong> converts <strong>MQ</strong>MDE data back to<br />

the <strong>OS</strong> <strong>2200</strong> encoding if present in the user message when retrieved. This allows <strong>for</strong><br />

legacy application support. Refer to Section 2, "<strong>Installation</strong> <strong>and</strong> Configuration," <strong>for</strong> more<br />

in<strong>for</strong>mation on the Convert<strong>MQ</strong>MDE tag. The second option <strong>for</strong> user applications to<br />

convert <strong>MQ</strong>MDE in message data to <strong>and</strong> from the queue manager’s local encoding is<br />

to use macros provided by W<strong>MQ</strong><strong>2200</strong>. These macros are only available <strong>for</strong> C<br />

application development. The macros are provided in cmqc.h <strong>and</strong> are named<br />

PREP_<strong>MQ</strong>MDE_FOR_PUT <strong>and</strong> PREP_<strong>MQ</strong>MDE_AFTER_GET. For more in<strong>for</strong>mation, see<br />

the cmqc.h file in the <strong>MQ</strong>S$LIB file. In both cases, the following rules must be<br />

followed:<br />

• The <strong>MQ</strong>MDE must be at the beginning of the message buffer<br />

• The <strong>MQ</strong>MD.Format must be <strong>MQ</strong>FMT_MD_EXTENSION<br />

• The message must be long enough to contain an <strong>MQ</strong>MDE structure.<br />

Note that <strong>for</strong> the queue manager to honor the <strong>MQ</strong>MDE, it must meet all other rules<br />

set <strong>for</strong>th by <strong>WebSphere</strong> <strong>MQ</strong> as documented in the IBM <strong>WebSphere</strong> <strong>MQ</strong> Application<br />

Programming Reference manual. If the <strong>MQ</strong>MDE is not honored, the message is still<br />

accepted, but the <strong>MQ</strong>MDE remains in the message data <strong>and</strong> is not used by the queue<br />

manager. Instead, it is treated as ordinary message data.<br />

3843 3744–002 4–15


Using Binary Data in the Message Area<br />

4.3.8. Special <strong>MQ</strong>GMO_CONVERT Considerations<br />

The <strong>MQ</strong>GMO_CONVERT option used on the <strong>MQ</strong>GET call is used to request that the<br />

queue manager attempt to convert message data to the requested encoding (byte<br />

ordering) <strong>and</strong> character set be<strong>for</strong>e the message is returned. If the message data<br />

contains built-in message <strong>for</strong>mats, W<strong>MQ</strong><strong>2200</strong> per<strong>for</strong>ms conversion transparently.<br />

Certain legacy <strong>OS</strong> <strong>2200</strong> applications that retrieve messages containing built-in<br />

message <strong>for</strong>mats are most affected by the use or non-use of the <strong>MQ</strong>GMO_CONVERT<br />

option. If the <strong>MQ</strong>GMO_CONVERT option is not used, the message is returned to the<br />

user in the encoding <strong>and</strong> character set it was originally put in. Legacy <strong>OS</strong> <strong>2200</strong><br />

applications that primarily retrieve messages that are generated by the queue<br />

manager that do not use the <strong>MQ</strong>GMO_CONVERT option on the <strong>MQ</strong>GET malfunctions<br />

in a W<strong>MQ</strong><strong>2200</strong> environment. The reason is that the queue manager is now running on<br />

a different architecture encoding than the <strong>OS</strong> <strong>2200</strong> application. This means that the<br />

queue manager generates little-endian byte ordered messages. If a user application<br />

does not per<strong>for</strong>m an <strong>MQ</strong>GET with the <strong>MQ</strong>GMO_CONVERT option, messages originally<br />

generated by the queue manager is returned in the wrong encoding <strong>for</strong> the <strong>OS</strong> <strong>2200</strong>.<br />

Applications that might retrieve messages that include built-in message <strong>for</strong>mats,<br />

particularly messages generated by the queue manager, must use the<br />

<strong>MQ</strong>GMO_CONVERT option when per<strong>for</strong>ming an <strong>MQ</strong>GET to ensure that the message<br />

data is returned in the native <strong>OS</strong> <strong>2200</strong> <strong>for</strong>mat. In addition, the <strong>MQ</strong>MD.Encoding must<br />

be reset to <strong>MQ</strong>ENC_NATIVE be<strong>for</strong>e each <strong>MQ</strong>GET call to ensure that the queue<br />

manager is instructed to convert the built-in message data to big-endian <strong>for</strong>mat be<strong>for</strong>e<br />

returning each message. The applications most likely to encounter this problem are<br />

trigger monitors, dead letter queue monitors, event monitors, <strong>and</strong> other applications<br />

that primarily retrieve messages generated by queue managers.<br />

4.3.9. Chained Message Headers<br />

W<strong>MQ</strong><strong>2200</strong> supports messages containing chains of <strong>WebSphere</strong> <strong>MQ</strong> headers. This is<br />

known as chained message headers. A chained message is one in which the message<br />

data contains multiple built-in message <strong>for</strong>mats, one after the other contiguously <strong>and</strong><br />

ending at some point. For example, a message could contain an <strong>MQ</strong>MDE, followed by<br />

an <strong>MQ</strong>RFH, followed by a <strong>MQ</strong>CFH (PCF) header. Messages with chains can also<br />

contain user-defined message data, but it must be at the end of the message. To<br />

construct a chain of message headers, you must use the <strong>MQ</strong>MD in the <strong>MQ</strong>PUT or<br />

<strong>MQ</strong>PUT1 call to specify the <strong>for</strong>mat <strong>and</strong> encoding of the first header in the message.<br />

Next, you use the Format <strong>and</strong> Encoding fields of each header in the message to<br />

specify the <strong>for</strong>mat <strong>and</strong> encoding of the next header in the message. It is valid, but<br />

uncommon, to have a mix of big <strong>and</strong> little endian data in a message chain. The entire<br />

contents of each header must be in the same encoding, but each header can use a<br />

different encoding if required. This is fully supported by W<strong>MQ</strong><strong>2200</strong> subject to<br />

<strong>WebSphere</strong> <strong>MQ</strong> rules as documented in the IBM <strong>WebSphere</strong> <strong>MQ</strong> Application<br />

Programming Reference manual.<br />

4–16 3843 3744–002


Compiling <strong>and</strong> Linking W<strong>MQ</strong><strong>2200</strong> Application Programs<br />

4.3.10. User-Defined Message Format Conversion<br />

When user applications put or retrieve messages containing user-defined message<br />

<strong>for</strong>mats, <strong>WebSphere</strong> <strong>MQ</strong> is not responsible <strong>for</strong> conversion of the data. This is because<br />

the <strong>for</strong>mat is unknown to <strong>WebSphere</strong> <strong>MQ</strong>, so the queue manager does not know how<br />

to convert the data. The user application or an exit is responsible <strong>for</strong> message<br />

conversion. Message data must be converted by user applications be<strong>for</strong>e sending <strong>and</strong><br />

after receipt to ensure the message data is transferred correctly. It is not necessary<br />

<strong>for</strong> the message data to be converted to the queue manager’s local encoding. The<br />

message data can be put in the <strong>OS</strong> <strong>2200</strong> local encoding (big endian). The queue<br />

manager returns user-defined message data in its original encoding when the<br />

message is retrieved. However, the user application must still account <strong>for</strong> the 8-bit to<br />

9-bit differences so that message data is transferred without corruption. If message<br />

data contains no multi-byte data, no conversion is necessary. However, if multi-byte<br />

data is included in the message, it must be converted be<strong>for</strong>e the <strong>MQ</strong>PUT or <strong>MQ</strong>PUT1<br />

<strong>and</strong> after the <strong>MQ</strong>GET to compensate <strong>for</strong> the 8 to 9 bit differences. To assist the user<br />

application in compensating <strong>for</strong> this re<strong>for</strong>matting, <strong>MQ</strong>S<strong>2200</strong> supplies libraries <strong>and</strong> a C<br />

header file. See Appendix A, "Data Formatting between Multiple Plat<strong>for</strong>ms," <strong>for</strong> more<br />

details.<br />

4.3.11. User Application Development Recommendations<br />

When developing applications <strong>for</strong> W<strong>MQ</strong><strong>2200</strong>, use the following recommendations to<br />

ensure conversion is h<strong>and</strong>led appropriately:<br />

• Use the <strong>MQ</strong>GMO_CONVERT option on the <strong>MQ</strong>GET call to ensure that the queue<br />

manager converts the message data to the <strong>OS</strong> <strong>2200</strong> encoding when possible.<br />

• Always reset the <strong>MQ</strong>MD.Encoding field to <strong>MQ</strong>ENC_NATIVE be<strong>for</strong>e each <strong>MQ</strong>GET<br />

call to ensure messages are returned in the native <strong>OS</strong> <strong>2200</strong> <strong>for</strong>mat when the<br />

<strong>MQ</strong>GMO_CONVERT option is used.<br />

• Try to avoid using multi-byte data in user message data to avoid the complexities of<br />

message conversion. Use byte streams or character data where possible.<br />

4.4. Compiling <strong>and</strong> Linking W<strong>MQ</strong><strong>2200</strong> Application<br />

Programs<br />

This section includes examples of compiling, linking, <strong>and</strong> executing new C <strong>and</strong> COBOL<br />

programs in the W<strong>MQ</strong><strong>2200</strong> environment. See the migration section <strong>for</strong> an explanation<br />

of how to use your current <strong>MQ</strong>S<strong>2200</strong> application programs in the W<strong>MQ</strong><strong>2200</strong><br />

environment.<br />

Note: W<strong>MQ</strong><strong>2200</strong> does not provide the <strong>MQ</strong>I client libraries. However, W<strong>MQ</strong><strong>2200</strong><br />

accepts connections from remote <strong>MQ</strong>I clients. Refer to Section 5, "<strong>MQ</strong>I Client<br />

Connections," <strong>for</strong> more in<strong>for</strong>mation.<br />

3843 3744–002 4–17


Compiling <strong>and</strong> Linking W<strong>MQ</strong><strong>2200</strong> Application Programs<br />

4.4.1. C Programs<br />

Use the following examples to assist you in compiling, linking, <strong>and</strong> executing C<br />

programs.<br />

Compile Example<br />

@use uc$pf,wmq$*mqs$lib<br />

@uc,s myqual*myfile.myprog,.myprog/om<br />

@eof<br />

Link Example<br />

@link,se ,myqual*myfile.myprog<br />

include myqual*myfile.myprog/om<br />

include wmq$*mqs$lib.mqs$entry<br />

resolve all references using local_defs, sys$lib$*emomrts, lcn<br />

process <strong>for</strong> extended<br />

output zoom<br />

@eof<br />

Execution Example<br />

Run this program using the following comm<strong>and</strong>:<br />

@myqual*myfile.myprog<br />

Building a Batch Open DTP <strong>MQ</strong>I Server Program<br />

The following in<strong>for</strong>mation shows how to build an Open DTP batch server that<br />

incorporates a messaging service routine.<br />

1. Compile your service routine(s). All <strong>MQ</strong>I application programs require the inclusion<br />

of the <strong>MQ</strong>Series header file cmqc.h to define the function prototypes <strong>and</strong><br />

definitions used by the <strong>MQ</strong>I calls. This header is found in the *mqs$lib file.<br />

@use uc$pf.,otm$*tm$lib.<br />

@use uc$pf1.,wmq$*mqs$lib.<br />

@uc,e my*workfile.putsvc/c,my*workfile.putsvc/o<br />

2. Call the Open DTP MAS processor supplying the make-<strong>for</strong>m parameters. Refer to<br />

the Open DTP <strong>Administration</strong> Guide, Volume 2 <strong>for</strong> exact details.<br />

@otm$*tm$util.mas,nc ,my*workfile.makeserver/putsvrbat,putsvrbat,wmq$<br />

*PARAMETERS<br />

*FILES<br />

AP my*workfile<br />

XQT my*workfile<br />

*ROUTINES<br />

0 putsvc - - putsvc/o<br />

@eof<br />

4–18 3843 3744–002


Compiling <strong>and</strong> Linking W<strong>MQ</strong><strong>2200</strong> Application Programs<br />

3. Edit the generated MAKESERVER addstream to insert this additional include<br />

directive in the link of the batch server.<br />

include wmq$*mqs$lib.mqs$entry<br />

The updated MAKESERVER link stream is as follows:.<br />

@link,le ,workfile.putsvrbat<br />

include tm$util.server$main/o<br />

include tlib$.ap$name/o<br />

include tlib$.sreptable/o<br />

include local$.tpsvrinit/o<br />

include local$.tpsvrdone/o<br />

include ap$.putsvc/o<br />

include wmq$*mqs$lib.mqs$entry<br />

resolve all references using tm$lib, rts$, lcn<br />

process <strong>for</strong> extended<br />

delete all definitions except start$<br />

@eof<br />

Add the MAKESERVER addstream to create the batch server.<br />

Building a Batch Open DTP 2PC <strong>MQ</strong>I Client Program<br />

The following procedure shows how to build an Open DTP client application that uses<br />

both the TX API <strong>and</strong> the <strong>MQ</strong>Series API (<strong>MQ</strong>I).<br />

1. Compile the client code.<br />

@use uc$pf.,otm$*tm$lib.<br />

@use uc$pf1.,wmq$*mqs$lib.<br />

@uc,e workfile.mqapp/c,workfile.mqapp/o<br />

@masm,e workfile.ap$name/msm-mqapp,.ap$name/mqapp<br />

@eof<br />

2. Link the client application.<br />

@use tm$lib.,otm$*tm$lib.<br />

@use rts$.,sys$lib$*emomrts.<br />

@ .<br />

@link,le , workfile.mqapp<br />

include workfile.mqapp/o<br />

include workfile.ap$name/mqapp<br />

include wmq$*mqs$lib.mqs$entry<br />

resolve all references using tm$lib, rts$, libcodename<br />

delete all definitions except start$<br />

process <strong>for</strong> extended<br />

@eof<br />

3843 3744–002 4–19


Sticking Transactions<br />

4.4.2. COBOL Programs<br />

Use the following examples to assist you in compiling, linking, <strong>and</strong> executing COBOL<br />

application programs.<br />

Compile Example<br />

@use cob$pf,wmq$*mqs$lib.<br />

@ucob,s myqual*myfile.myprog,my-om.myprog/o<br />

Link Example<br />

@link,s ,my-exe.myprog<br />

disallow unresolved references<br />

include my-om.myprog/o<br />

include wmq$*mqs$lib.cbl$entry<br />

output zoom<br />

process <strong>for</strong> extended<br />

resolve all references using lcn<br />

@EOF<br />

Execution Example<br />

The @XQT execution method is required <strong>for</strong> running your program <strong>and</strong> the sample<br />

programs on the <strong>MQ</strong>Series release tape. If @XQT is not done, the input from the<br />

terminal does not work correctly.<br />

Correct<br />

@XQT MY-EXE.MYPROG<br />

Incorrect<br />

@MY-EXE.MYPROG<br />

4.5. Sticking Transactions<br />

Your <strong>MQ</strong>S<strong>2200</strong> sticking transaction programs continue to stick without relinking in the<br />

new W<strong>MQ</strong><strong>2200</strong> environment if you have installed W<strong>MQ</strong><strong>2200</strong> at the default or same<br />

BDIs as the original <strong>MQ</strong>S<strong>2200</strong>. However, they process slower because of the interface<br />

transition required to operate in the new environment. It is recommended that you<br />

relink your <strong>MQ</strong>S<strong>2200</strong> sticking transaction programs with the new environment to take<br />

advantage of improved processing speed.<br />

With <strong>MQ</strong>S<strong>2200</strong>, there was a need to include the special object module mqs$entryst in<br />

your sticking transaction link. With W<strong>MQ</strong><strong>2200</strong> the special object module is no longer<br />

necessary. You include object modules mqs$entry (<strong>for</strong> C programs) or cbl$entry (<strong>for</strong><br />

COBOL programs) in your sticking transaction program links as you would <strong>for</strong> a<br />

non-sticking TIP/HVTIP, batch, or dem<strong>and</strong> user application.<br />

You still need to have the “I” option set in the STA field of your sticking transaction<br />

valtab to indicate to the <strong>OS</strong> <strong>2200</strong> that your transaction should be re-used.<br />

4–20 3843 3744–002


Sticking Transactions<br />

The following example demonstrates how to compile <strong>and</strong> link a UC TIP sticking<br />

transaction program <strong>for</strong> W<strong>MQ</strong><strong>2200</strong>.<br />

@use uc$pf.,ngo*mqs$lib.<br />

@uc,e stick.tipput/c,.tipput/o<br />

@ .<br />

@use link$pf.,sys$lib$*app$9.<br />

@use mcb$.,mcb9*mcb$.<br />

@ .<br />

@link,s,stick.tipput<br />

include stick.tipput/o<br />

include wmq$*mqs$lib.mqs$entry<br />

resolve all references using mcb$., sys$lib$*emomrts., LCN<br />

set size = 0720000 <strong>for</strong> urts$tables<br />

process <strong>for</strong> extended fast load<br />

delete all definitions except start$<br />

@eof<br />

There are no known restrictions or limitations with sticking TIP or HVTIP transactions<br />

in the new W<strong>MQ</strong><strong>2200</strong> environment. The mqs$entry object module can be linked into<br />

sticking HVTIP subprograms or ICP.<br />

The ability to stick is allowed through the W<strong>MQ</strong><strong>2200</strong> xa_ interface. The mqs$entry<br />

module can be included in the link <strong>for</strong> Open Distributed Transaction Processing TIP or<br />

HVTIP programs that use the <strong>MQ</strong>I <strong>and</strong> are a part of a global, 2PC transaction using<br />

W<strong>MQ</strong><strong>2200</strong> as a resource manager.<br />

3843 3744–002 4–21


Sticking Transactions<br />

4–22 3843 3744–002


Section 5<br />

<strong>MQ</strong>I Client Connections<br />

This section discusses W<strong>MQ</strong><strong>2200</strong> support of <strong>MQ</strong>I client connections.<br />

To … See subsection …<br />

Read about client applications 5.1<br />

Prepare W<strong>MQ</strong><strong>2200</strong> to accept client connections 5.2<br />

Read about scaling considerations <strong>and</strong> limitations 5.3<br />

Read about restrictions in <strong>MQ</strong>I client support 5.4<br />

5.1. <strong>WebSphere</strong> <strong>MQ</strong> Client Applications<br />

A <strong>WebSphere</strong> <strong>MQ</strong> client application is an application that is linked to the <strong>WebSphere</strong><br />

<strong>MQ</strong> client libraries. The <strong>WebSphere</strong> <strong>MQ</strong> client libraries enable <strong>WebSphere</strong> <strong>MQ</strong> client<br />

applications to connect to queue managers on remote machines. While W<strong>MQ</strong><strong>2200</strong><br />

does not provide the <strong>WebSphere</strong> <strong>MQ</strong> client libraries on the <strong>OS</strong> <strong>2200</strong>, it accepts<br />

connections from <strong>WebSphere</strong> <strong>MQ</strong> client applications. This enables applications<br />

running on remote machines to connect to W<strong>MQ</strong><strong>2200</strong> <strong>and</strong> interact with W<strong>MQ</strong><strong>2200</strong><br />

queue managers as if they were running on <strong>OS</strong> <strong>2200</strong>. Refer to the IBM document<br />

<strong>WebSphere</strong> <strong>MQ</strong> Clients <strong>for</strong> more in<strong>for</strong>mation on the <strong>WebSphere</strong> <strong>MQ</strong> client interface.<br />

5.2. Preparing W<strong>MQ</strong><strong>2200</strong> to Accept Client<br />

Connections<br />

To enable W<strong>MQ</strong><strong>2200</strong> to accept client connections complete the following steps:<br />

1. Define a Server-Connection Channel<br />

<strong>WebSphere</strong> <strong>MQ</strong> client applications connect to queue managers through<br />

server-connection channels. You must define a server-connection channel on your<br />

W<strong>MQ</strong><strong>2200</strong> queue manager <strong>for</strong> clients to use as follows:<br />

>runmqsc QMGR<br />

>DEFINE CHANNEL(SVRCHANNEL) +<br />

>1: DEFINE CHANNEL(SVRCHANNEL) +<br />

>CHLTYPE(SVRCONN)<br />

>CHLTYPE(SVRCONN)<br />

>A<strong>MQ</strong>8014: <strong>WebSphere</strong> <strong>MQ</strong> channel created.<br />

3843 3744–002 5–1


Scaling Considerations<br />

Note: The comm<strong>and</strong> used is a basic channel definition. You might need to<br />

specify additional parameters in some circumstances. Refer to the IBM<br />

document <strong>WebSphere</strong> <strong>MQ</strong> <strong>MQ</strong>SC Comm<strong>and</strong> Reference <strong>for</strong> more in<strong>for</strong>mation.<br />

2. Start a <strong>WebSphere</strong> <strong>MQ</strong> Listener Process<br />

To start a <strong>WebSphere</strong> <strong>MQ</strong> listener process, enter the following:<br />

runmqlsr [-m queue_manager_name] [-p port] [&]<br />

5.3. Scaling Considerations<br />

Several factors affect the number of concurrent client connections W<strong>MQ</strong><strong>2200</strong> can<br />

support. This includes but is not limited to the following:<br />

• The presence <strong>and</strong> value of the MaxActiveChannels attribute in the queue manager<br />

qm.ini file.<br />

• The presence <strong>and</strong> value of the -b (backlog) option on the listener (RUN<strong>MQ</strong>LSR)<br />

process.<br />

5.3.1. MaxActiveChannels Attribute<br />

The MaxActiveChannels attribute is an attribute that can be added to the queue<br />

manager’s qm.ini configuration file. It defines the maximum number of channels that<br />

can run at a time. Each client connection creates a new active channel. The default is<br />

100, or the value of the MaxChannels attribute if it is defined in the queue manager’s<br />

qm.ini configuration file. Refer to the IBM document <strong>WebSphere</strong> <strong>MQ</strong> System<br />

<strong>Administration</strong> <strong>for</strong> more in<strong>for</strong>mation about these attributes <strong>and</strong> how to change them.<br />

5.3.2. Listener Backlog Option<br />

The <strong>WebSphere</strong> <strong>MQ</strong> listener process supports an optional parameter (-b) that defines<br />

the maximum listener backlog. The listener backlog is defined as the number of<br />

queued incoming connections waiting <strong>for</strong> service at any given time. The default limit is<br />

20. If you expect large number of clients to initiate connections to W<strong>MQ</strong><strong>2200</strong> at a<br />

time, use this value when starting the listener process. If the maximum backlog limit is<br />

reached, all client connections over this limit will receive a<br />

<strong>MQ</strong>RC_QMGR_NOT_AVAILABLE reason code when they attempt an <strong>MQ</strong>CONN or<br />

<strong>MQ</strong>CONNX to connect to the W<strong>MQ</strong><strong>2200</strong> queue manager. Refer to the IBM document<br />

<strong>WebSphere</strong> <strong>MQ</strong> Intercommunication <strong>for</strong> more in<strong>for</strong>mation.<br />

5–2 3843 3744–002


5.4. Restrictions<br />

The following items relating to <strong>MQ</strong>I clients are restricted by W<strong>MQ</strong><strong>2200</strong>:<br />

• Clients can only connect using the TCP/IP communications protocol.<br />

Restrictions<br />

• Client-connection (CLNTCONN) channels are not supported. Additionally, you<br />

cannot export the <strong>MQ</strong>Series client channel definition table file (A<strong>MQ</strong>CLCHL.TAB)<br />

from <strong>MQ</strong>S<strong>2200</strong> <strong>for</strong> use on another plat<strong>for</strong>m. However, you can define<br />

client-connection channels on other queue managers that point to<br />

server-connection (SVRCONN) channels on <strong>MQ</strong>S<strong>2200</strong>. Your client applications can<br />

then use the A<strong>MQ</strong>CLCHL.TAB file created by the other queue managers to point<br />

to server-connection channels on <strong>MQ</strong>S<strong>2200</strong>. Refer to the IBM document<br />

<strong>MQ</strong>Series Clients <strong>for</strong> more in<strong>for</strong>mation on <strong>MQ</strong>CHLLIB <strong>and</strong> <strong>MQ</strong>CHLTAB<br />

environment variables.<br />

• Clients connecting to W<strong>MQ</strong><strong>2200</strong> must not use versions of <strong>MQ</strong> structures greater<br />

than the following:<br />

<strong>MQ</strong>MD - <strong>MQ</strong>MD_VERSION_2<br />

<strong>MQ</strong>MDE - <strong>MQ</strong>MDE_VERSION_2<br />

<strong>MQ</strong>PMO - <strong>MQ</strong>PMO_VERSION_2<br />

<strong>MQ</strong>GMO - <strong>MQ</strong>GMO_VERSION_3<br />

<strong>MQ</strong>OD - <strong>MQ</strong>OD_VERSION_3<br />

3843 3744–002 5–3


Restrictions<br />

5–4 3843 3744–002


Section 6<br />

High Availability<br />

This section discusses the High Availability (HA) feature <strong>for</strong> W<strong>MQ</strong><strong>2200</strong>.<br />

To … See subsection …<br />

Obtain in<strong>for</strong>mation about the HA feature 6.1<br />

Obtain in<strong>for</strong>mation on W<strong>MQ</strong><strong>2200</strong> specific changes with<br />

the HA feature<br />

Maximize per<strong>for</strong>mance with queue managers managed by<br />

the HA cluster<br />

6.1. Introduction<br />

The <strong>OS</strong> <strong>2200</strong> QProcessor provides a clustering capability <strong>for</strong> high availability known as<br />

HA cluster. This clustering is separate <strong>and</strong> distinct from queue manager clustering,<br />

which is an internal feature of <strong>WebSphere</strong> <strong>MQ</strong>. For more in<strong>for</strong>mation on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor HA feature, refer to the ClearPath Specialty Engine <strong>for</strong> <strong>OS</strong> <strong>2200</strong><br />

Configuration Guide.<br />

6.2. W<strong>MQ</strong><strong>2200</strong> Specific Changes to Support HA<br />

The W<strong>MQ</strong><strong>2200</strong> implementation differs from other <strong>WebSphere</strong> <strong>MQ</strong> distributions in<br />

specific ways to support the high availability solution we offer. These include:<br />

• The comm<strong>and</strong> server must be running if you wish to have trigger monitors,<br />

brokers, or channel initiators managed by the HA cluster. The comm<strong>and</strong> server<br />

starts when the queue manager is started. If the queue manager is managed by<br />

the HA cluster, do not stop the comm<strong>and</strong> server manually while the queue<br />

manager is running. If you stop the comm<strong>and</strong> server, the cluster restarts the<br />

comm<strong>and</strong> server automatically.<br />

• The HA software creates a hidden file named .ha in the directory of the queue<br />

manager when it is added to the cluster. This file is removed when the queue<br />

manager is removed from the cluster or the queue manager is deleted.<br />

W<strong>MQ</strong><strong>2200</strong> queue managers use this file to determine if they are being managed<br />

by the HA cluster. If the file exists, certain functions are restricted in the UNX shell<br />

on the queue manager, including starting, stopping, <strong>and</strong> deleting the queue<br />

manager.<br />

3843 3744–002 6–1<br />

6.2<br />

6.3


Recommendations<br />

• The W<strong>MQ</strong><strong>2200</strong> UNX shell always connects to the node of the HA cluster where<br />

/var/mqm is currently mounted. In an HA environment, the /var/mqm file system is<br />

mounted on only one node at a time. You cannot use UNX on any other node of an<br />

HA cluster.<br />

• The W<strong>MQ</strong><strong>2200</strong> daemon supports automatic reconnects. If configured, the daemon<br />

attempts to reestablish communications with the <strong>OS</strong> <strong>2200</strong> QProcessor after the<br />

connection is lost. This automates the reestablishment of the <strong>MQ</strong> API link after<br />

any type of a failure, including a failover of the queue managers to another node in<br />

the HA cluster.<br />

• W<strong>MQ</strong><strong>2200</strong> queue managers create a service named W<strong>MQ</strong><strong>2200</strong>.SERVICE when<br />

they are initially created. This service provides a start <strong>and</strong> stop script that run<br />

when the queue manager is started or ended. This allows users to configure<br />

comm<strong>and</strong>s to run after the queue manager starts <strong>and</strong> ends. These scripts are<br />

used to ensure automatic restarts <strong>and</strong> terminations of HA managed queue<br />

managers. They are also used to start or stop all required components of the<br />

queue manager. The scripts are empty by default <strong>and</strong> do not execute any<br />

comm<strong>and</strong>s. Note that you cannot start <strong>OS</strong> <strong>2200</strong> programs or run ECL comm<strong>and</strong>s<br />

from these scripts. The comm<strong>and</strong>s that are executed must be from the UNX shell.<br />

6.3. Recommendations<br />

When running one or more queue managers managed by the HA cluster, use the<br />

following recommendations to maximize the per<strong>for</strong>mance <strong>and</strong> availability of the queue<br />

managers:<br />

• Always set DaemonRetryInt to a non-zero value in the W<strong>MQ</strong><strong>2200</strong> configuration<br />

file so that the daemon reestablishes communications with the <strong>OS</strong> <strong>2200</strong><br />

QProcessor after failures.<br />

• Do not attempt to stop or start the <strong>WebSphere</strong> <strong>MQ</strong> queue managers or objects<br />

under those queue managers that are managed by an HA cluster using the UNX<br />

shell. Use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to manage queue<br />

managers in the cluster.<br />

• Do not modify or delete the queue manager service named W<strong>MQ</strong><strong>2200</strong>.SERVICE.<br />

Modifying or deleting this service might cause the queue manager to malfunction.<br />

It might also affect the per<strong>for</strong>mance of the HA cluster if the queue manager is in<br />

the cluster. If you accidentally delete the service, it is recreated on the next queue<br />

manager restart.<br />

• Use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to configure the start <strong>and</strong><br />

stop scripts used by W<strong>MQ</strong><strong>2200</strong>.SERVICE. Do not add comm<strong>and</strong>s that do not<br />

return control immediately. For example, if you want to start a listener from the<br />

start script, use ‘&’ to start the listener in the background. If a comm<strong>and</strong> does not<br />

return, it might cause the queue manager to malfunction or the endmqm<br />

comm<strong>and</strong> to hang.<br />

• Do not modify or delete the .ha file in the directory of the queue manager if it<br />

exists. This file is used by <strong>WebSphere</strong> <strong>MQ</strong> to determine if the queue manager is in<br />

the HA cluster. This file is automatically added or removed from the directory of<br />

the queue manager when the queue manager is added or removed from the HA<br />

cluster.<br />

6–2 3843 3744–002


Recommendations<br />

• Do not use the DOWN or SHUTDOWN keyins on the W<strong>MQ</strong><strong>2200</strong> daemon when the<br />

HA cluster is active. Per<strong>for</strong>ming these keyins shuts down the API link between the<br />

<strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>and</strong> prevents user applications from<br />

accessing queue managers on the <strong>OS</strong> <strong>2200</strong> QProcessor. The daemon does not<br />

reestablish communication automatically in these cases because the user initiated<br />

the shutdown of the API link. You must per<strong>for</strong>m a UP keyin or restart the daemon<br />

to reestablish communication with the <strong>OS</strong> <strong>2200</strong> QProcessor in these cases.<br />

• If you add a user-defined trigger monitor that runs on the <strong>OS</strong> <strong>2200</strong> to the HA<br />

cluster, do not disconnect the W<strong>MQ</strong><strong>2200</strong> daemon from the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

using the DOWN or SHUTDOWN keyins. The user-defined trigger monitor cannot<br />

access queue managers if the API link is terminated. In addition, the HA cluster<br />

cannot start or monitor the user-defined trigger monitor when the API link is<br />

down. Once the API link is reestablished, the user-defined trigger monitor can be<br />

restarted or monitored. Because the user-defined trigger monitor is dependent on<br />

the W<strong>MQ</strong><strong>2200</strong> daemon <strong>and</strong> the daemon is not controllable by the HA software,<br />

configure the user-defined trigger monitor so that it does not <strong>for</strong>ce a failover of<br />

the cluster. In cases where the user-defined trigger monitor cannot be started or<br />

monitored because the API link is down, a failover does not solve the problem <strong>and</strong><br />

must there<strong>for</strong>e be avoided in most cases. Instead, you can configure user-defined<br />

trigger monitors to stop after exhausting its failure threshold <strong>for</strong> migration.<br />

• Avoid using both HA managed <strong>and</strong> unmanaged queue managers on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor that is part of an HA cluster. If you use an unmanaged queue manager<br />

on the <strong>OS</strong> <strong>2200</strong> QProcessor that is part of an HA cluster, keep in mind that it may<br />

have the file system unmounted from it during an HA failover <strong>and</strong> might be<br />

damaged <strong>and</strong>/or experience data loss. This damage may prevent it from being<br />

restarted. For this reason, if you use an unmanaged queue manager on an HA<br />

enabled <strong>OS</strong> <strong>2200</strong> QProcessor, it should only be used <strong>for</strong> non-critical work.<br />

3843 3744–002 6–3


Recommendations<br />

6–4 3843 3744–002


Section 7<br />

Troubleshooting<br />

This section provides troubleshooting in<strong>for</strong>mation to help you diagnose, report, or<br />

solve problems you might encounter during installation <strong>and</strong> operation.<br />

Use the following table as a key to navigating this section.<br />

To … See subsection …<br />

Gather system <strong>and</strong> queue manager status in<strong>for</strong>mation 7.1<br />

Obtain error in<strong>for</strong>mation 7.2<br />

Obtain queue manager traces 7.3<br />

Obtain a W<strong>MQ</strong><strong>2200</strong> core dump 7.4<br />

Use the daemon background run to obtain in<strong>for</strong>mation <strong>and</strong><br />

control W<strong>MQ</strong><strong>2200</strong><br />

Gather diagnostic in<strong>for</strong>mation 7.6<br />

Obtain in<strong>for</strong>mation about real-time run priorities 7.7<br />

Recover an unstable W<strong>MQ</strong><strong>2200</strong> system 7.8<br />

Refer to the IBM document <strong>MQ</strong>Series System <strong>Administration</strong> <strong>for</strong> more in<strong>for</strong>mation<br />

on troubleshooting.<br />

7.1. Gather System <strong>and</strong> Queue Manager Status<br />

In<strong>for</strong>mation<br />

As you begin to troubleshoot your W<strong>MQ</strong><strong>2200</strong> system, you might want to start by<br />

analyzing the queue manager status or system wide status. This can be done in the<br />

following ways:<br />

• Using the UNX Shell<br />

• Using the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console<br />

Note: More in<strong>for</strong>mation on the UNX Shell can be found in Appendix F, "UNX Shell."<br />

More in<strong>for</strong>mation on the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console can be found<br />

in the help <strong>for</strong> the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

3843 3744–002 7–1<br />

7.5


Gather System <strong>and</strong> Queue Manager Status In<strong>for</strong>mation<br />

7.1.1. Gather System Status<br />

You can use the UNX Shell to gather in<strong>for</strong>mation about the system. The following<br />

comm<strong>and</strong>s are available:<br />

Comm<strong>and</strong> Description<br />

ss Displays system in<strong>for</strong>mation<br />

diskinfo Displays the names <strong>and</strong> sizes of all files in the /var/mqm tree<br />

cpuinfo Displays CPU in<strong>for</strong>mation<br />

mquserlist Lists all <strong>OS</strong> <strong>2200</strong> users <strong>and</strong> their associated <strong>OS</strong> <strong>2200</strong><br />

QProcessor users <strong>and</strong> groups<br />

meminfo –v Displays memory in<strong>for</strong>mation<br />

uname Displays local name of the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

uptime Displays how long the <strong>OS</strong> <strong>2200</strong> QProcessor has been up<br />

sysinfo Displays system status in<strong>for</strong>mation<br />

dspmqver Displays the <strong>MQ</strong>S<strong>2200</strong> version in<strong>for</strong>mation<br />

fileinfo –s Displays the names <strong>and</strong> sizes of all files in the /var/mqm tree<br />

These comm<strong>and</strong>s can be put into a UNX runstream or run in a UNX dem<strong>and</strong> session.<br />

If you use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console, you can use the following<br />

modules to determine the system status:<br />

Module Category Description<br />

Running Processes Diagnostics Available <strong>for</strong> the root user under the<br />

Diagnostic section. This displays<br />

in<strong>for</strong>mation on CPU, memory, <strong>and</strong><br />

disk utilization.<br />

Manage User<br />

Mappings<br />

Management Displays the <strong>OS</strong> <strong>2200</strong> users <strong>and</strong> their<br />

<strong>OS</strong> <strong>2200</strong> QProcessor users <strong>and</strong><br />

groups.<br />

System Health Diagnostics Displays the status of disks on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Initial Configuration<br />

Wizard<br />

Configuration Displays network <strong>and</strong> host name<br />

in<strong>for</strong>mation.<br />

Package Management Management Displays the levels of all W<strong>MQ</strong><strong>2200</strong><br />

software packages installed on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor.<br />

7–2 3843 3744–002


7.1.2. Gather Queue Manager Status<br />

Gather System <strong>and</strong> Queue Manager Status In<strong>for</strong>mation<br />

To detect the status of the active queue managers in W<strong>MQ</strong><strong>2200</strong> either the UNX Shell<br />

or the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console can be used.<br />

You can use the UNX Shell to gather in<strong>for</strong>mation about the queue managers. The<br />

following comm<strong>and</strong>s are available:<br />

Comm<strong>and</strong> Description<br />

ps Displays in<strong>for</strong>mation about active users <strong>and</strong> processes in<br />

W<strong>MQ</strong><strong>2200</strong>. It displays the uid, the user ID, the parent process,<br />

process ID, the wall time of the process, <strong>and</strong> the executable<br />

name <strong>and</strong> its arguments. Particular in<strong>for</strong>mation on channels,<br />

listeners, agents, queue managers, <strong>and</strong> users can be extracted.<br />

dspmq Displays the status of all defined queue managers.<br />

dspmqtrn_all Displays status of managed transactions <strong>for</strong> all queue managers.<br />

These comm<strong>and</strong>s can be put into a UNX runstream or run in a UNX dem<strong>and</strong> session.<br />

If you use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console, you can use the following<br />

modules to determine the queue manager status:<br />

Module Category Description<br />

Manage <strong>MQ</strong> Management Displays the status of all defined queue<br />

managers. Allows the administrator to<br />

edit, start or stop each queue manager if<br />

root is included in the mqm group.<br />

Running Processes Diagnostics Available <strong>for</strong> the root user under the<br />

Diagnostic category. This displays<br />

in<strong>for</strong>mation on active users <strong>and</strong><br />

processes running on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor. It also includes CPU,<br />

memory <strong>and</strong> disk utilization <strong>for</strong> the<br />

running <strong>MQ</strong> processes.<br />

3843 3744–002 7–3


Obtaining Error In<strong>for</strong>mation<br />

7.1.3. Gather Queue Manager Configuration In<strong>for</strong>mation<br />

To view the queue manager configuration files or the configuration <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> you<br />

can use the UNX shell or the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

To use the UNX shell the following comm<strong>and</strong>s are available:<br />

Comm<strong>and</strong> Description<br />

dumpini Displays mqs.ini <strong>for</strong> qm.ini file of each queue manager.<br />

savemgr_all Displays runmqsc definitions <strong>for</strong> all queue managers.<br />

These comm<strong>and</strong>s can be used with the mqimport/mqexport comm<strong>and</strong>s to update the<br />

contents from a dem<strong>and</strong> session.<br />

If you use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console, you can use the following<br />

modules to determine the queue manager status:<br />

Module Category Description<br />

Manage <strong>MQ</strong> – Edit<br />

mqs.ini<br />

Manage <strong>MQ</strong> – Edit<br />

mq.ini<br />

Management Displays <strong>and</strong> allows editing of the<br />

mqs.ini file.<br />

7.2. Obtaining Error In<strong>for</strong>mation<br />

Management Displays <strong>and</strong> allows editing of mq.ini file<br />

of any queue manager.<br />

You can use the UNX shell or the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to<br />

obtain error in<strong>for</strong>mation if you are experiencing a problem with W<strong>MQ</strong><strong>2200</strong> <strong>and</strong> you<br />

have already checked the queue manager <strong>and</strong> system status.<br />

The following comm<strong>and</strong>s are available if you choose to use the UNX shell.<br />

Comm<strong>and</strong> Description<br />

errors Displays system error log files from the<br />

/var/mqm/errors/ directory.<br />

logs Displays in<strong>for</strong>mation about all or a particular queue<br />

manager’s error log files. This in<strong>for</strong>mation is extracted<br />

from the queue manager’s errors directory<br />

/var/mqm/qmgrs//errors/.<br />

To view the contents from a breakpoint file, use these comm<strong>and</strong>s in a UNX dem<strong>and</strong><br />

session or in an addstream.<br />

7–4 3843 3744–002


Obtain Queue Manager Traces<br />

The following module helps you determine the queue manager status if you use the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

Module Category Description<br />

View System Logs Diagnostics Allows the administrator to view the<br />

system error log files or the log files<br />

<strong>for</strong> a particular queue manager or the<br />

W<strong>MQ</strong><strong>2200</strong> SOLAR install log. The logs<br />

can be viewed on-line <strong>and</strong> then<br />

downloaded to a local PC.<br />

7.3. Obtain Queue Manager Traces<br />

W<strong>MQ</strong><strong>2200</strong> provides two trace levels.<br />

• <strong>MQ</strong>S traces – reflect events within the W<strong>MQ</strong><strong>2200</strong> engine itself.<br />

You will need to provide <strong>MQ</strong>S traces to Unisys support personnel when obtaining<br />

their assistance in analyzing <strong>and</strong> resolving a problem.<br />

• UNX Shell traces – reflect events within the UNX Shell.<br />

Note: Since tracing adversely affects per<strong>for</strong>mance, use discretion when enabling<br />

tracing.<br />

7.3.1. <strong>MQ</strong>S Traces<br />

Use the st<strong>and</strong>ard <strong>WebSphere</strong> <strong>MQ</strong> comm<strong>and</strong>s strmqtrc, endmqtrc, <strong>and</strong> dspmqtrc to<br />

start, end, <strong>and</strong> <strong>for</strong>mat W<strong>MQ</strong><strong>2200</strong> traces, as shown in the following steps:<br />

1. Start <strong>MQ</strong>S traces:<br />

>@wmq$*mqs$exe.unx<br />

>strmqtrc -m QMGR1 -t all<br />

>exit<br />

2. Execute the application test.<br />

3. Stop <strong>MQ</strong>S traces:<br />

>@wmq$*mqs$exe.unx<br />

>endmqtrc -a<br />

>exit<br />

4. Generate a listing of error in<strong>for</strong>mation as described in 7.2.<br />

5. Locate the .trc files generated in directory /var/mqm/trace.<br />

6. Format the .trc files. Do this in breakpoint <strong>for</strong> each file:<br />

>@wmq$*mqs$exe.unx<br />

>dspmqtrc /var/mqm/trace/A<strong>MQ</strong> nn.TRC<br />

>exit<br />

3843 3744–002 7–5


Obtain Queue Manager Traces<br />

where nn is the numeric identifier <strong>for</strong> a specific .trc file. This numeric identifier<br />

corresponds to the process identifier assigned to the process by <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

To recover disk space on your <strong>OS</strong> <strong>2200</strong> QProcessor, occasionally you must delete<br />

A<strong>MQ</strong>nn.TRC files that are no longer needed.<br />

7.3.2. Using <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to<br />

Gather Trace In<strong>for</strong>mation<br />

You can gather trace in<strong>for</strong>mation using the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console Collect <strong>MQ</strong> Traces module which is located in the Diagnostic category. This<br />

module allows the administrator to create a trace archive, download it to the local PC<br />

<strong>and</strong> send the result to Unisys support personnel. Traces <strong>for</strong> all queue managers are<br />

included.<br />

7.3.3. UNX Shell Traces<br />

You must turn traces on <strong>for</strong> debugging if there is a problem in UNX shell.<br />

Use the UNX trace comm<strong>and</strong> to generate UNX shell traces.<br />

Format<br />

trace anything<br />

Parameters<br />

anything turns on the tracing at verbose level <strong>for</strong> your UNX shell session. So, a trace<br />

comm<strong>and</strong> followed by anything will turn on the traces <strong>for</strong> UNX shell. You can add any<br />

input after the trace comm<strong>and</strong>.<br />

Also, a trace comm<strong>and</strong> with no input turns off verbose tracing. In this case, UNX shell<br />

will run as IC_INFO tracing.<br />

Example of Turning ON Traces<br />

Or<br />

>trace 1<br />

>trace ON<br />

Example of Turning OFF Traces<br />

>trace<br />

7–6 3843 3744–002


7.4. Core Dump<br />

Core Dump<br />

If a serious problem occurs, you might be requested by Unisys support personnel to<br />

obtain additional in<strong>for</strong>mation <strong>for</strong> use in problem resolution using the UNX shell core<br />

comm<strong>and</strong>.<br />

Format<br />

core<br />

This comm<strong>and</strong> <strong>for</strong>ces a Programmers Advanced Debugging System (PADS) dump into<br />

a file. The name of the file is displayed in a message both on the user’s screen <strong>and</strong> on<br />

the operator’s console.<br />

Example<br />

This example shows the file naming convention used.<br />

>@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>Unx - 6R1 - 2009 Mar 27 Fri 11:22:43<br />

>core<br />

><strong>WebSphere</strong> <strong>MQ</strong> dump taken to <strong>MQ</strong>S$COREDUMP*032709112257<br />

7.5. The W<strong>MQ</strong><strong>2200</strong> Daemon Background Run<br />

The W<strong>MQ</strong><strong>2200</strong> daemon background run now<br />

• Integrates the keyins of the <strong>MQ</strong>ADMIN interface<br />

• Allows console operators <strong>and</strong> users at dem<strong>and</strong> terminals having console keyin<br />

privileges to send administrative comm<strong>and</strong>s to the W<strong>MQ</strong><strong>2200</strong> system.<br />

Daemon is a background process that fields keyin requests, takes action on those<br />

requests, <strong>and</strong> responds to the requestor. The daemon background run is useful <strong>for</strong><br />

troubleshooting as it allows the administrator to obtain in<strong>for</strong>mation <strong>and</strong> control<br />

operations of the W<strong>MQ</strong><strong>2200</strong> system.<br />

7.5.1. Starting Daemon Keyin<br />

Be<strong>for</strong>e starting Daemon Keyin, make sure the user ID starting it has security privileges<br />

to allow it to use the Executive request (ER) KEYIN$. To start daemon, you can refer to<br />

the following example:<br />

Example<br />

>@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.STARTUP<br />

>Daemon started successfully.<br />

>Daemon connected to QProcessor successfully!<br />

>API is ready <strong>for</strong> use.<br />

The daemon utility begins to run in the background. The batch user ID is W<strong>MQ</strong> by<br />

default.<br />

3843 3744–002 7–7


The W<strong>MQ</strong><strong>2200</strong> Daemon Background Run<br />

Note: The programs will not be able to connect to the <strong>OS</strong> <strong>2200</strong> QProcessor if the<br />

daemon run is not started.<br />

7.5.2. Background Process Output File<br />

W<strong>MQ</strong><strong>2200</strong> provides output <strong>for</strong> the Daemon background run by using the <strong>MQ</strong>SRUN<br />

element.<br />

The <strong>MQ</strong>SRUN element, found in W<strong>MQ</strong>$*<strong>MQ</strong>S$RUN.<strong>MQ</strong>SRUN, is used by W<strong>MQ</strong><strong>2200</strong><br />

to start the Daemon background run. The Daemon output provides diagnostic<br />

in<strong>for</strong>mation <strong>and</strong> might help to determine the cause of the problem. The Daemon<br />

background run generates output into W<strong>MQ</strong>$*DAEMON$OUT. Each Daemon<br />

background run creates a new cycle of W<strong>MQ</strong>$*DAEMON$OUT file.<br />

7.5.3. Using Daemon Keyin<br />

Daemon Keyin is used to send administrative comm<strong>and</strong>s from the system console or<br />

from a dem<strong>and</strong> terminal that has console keyin privileges. All input is converted to<br />

uppercase, so if you want to use daemon to administer your W<strong>MQ</strong><strong>2200</strong> system use<br />

only uppercase.<br />

Format<br />

@@CONS keyin-id comm<strong>and</strong>[,option] [parameters]<br />

Parameters<br />

keyin-id is the keyin prefix configured <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> administrative background<br />

run, DaemonKeyId. Default is W<strong>MQ</strong>, but you can configure W<strong>MQ</strong><strong>2200</strong> to use a<br />

different keyin prefix. Refer to Section 2, "<strong>Installation</strong> <strong>and</strong> Configuration," <strong>for</strong> more<br />

in<strong>for</strong>mation.<br />

comm<strong>and</strong> is one of the following comm<strong>and</strong>s:<br />

APISTATUS Prints W<strong>MQ</strong><strong>2200</strong> subsystem status <strong>and</strong> API connection<br />

in<strong>for</strong>mation.<br />

CORE Generates a W<strong>MQ</strong><strong>2200</strong> subsystem core dump <strong>for</strong> debugging.<br />

DOWN Disconnects the W<strong>MQ</strong><strong>2200</strong> subsystem from the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

FORCE STOP Same as SHUTDOWN except that it also terminates the connect to<br />

the <strong>OS</strong> <strong>2200</strong> QProcessor even if there are connected <strong>MQ</strong> activities.<br />

HELP Displays valid keyins or provides help with a specific keyin if<br />

specified.<br />

ICLOG Adjusts the Interconnect log/trace level. This is useful in diagnosing<br />

connection issues with the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

<strong>MQ</strong>LOG Adjusts the W<strong>MQ</strong><strong>2200</strong> subsystem log/trace level.<br />

OHIGH Changes the maximum number of activities allowed to use the<br />

W<strong>MQ</strong><strong>2200</strong> API at any given time.<br />

OLOW Changes the minimum number of servicing applications.<br />

7–8 3843 3744–002


SHUTDOWN Shuts down the W<strong>MQ</strong><strong>2200</strong> daemon background run.<br />

STATS Used to turn on <strong>and</strong> off statistics on current API usage.<br />

UP Enables API <strong>for</strong> use.<br />

option specifies an option on the comm<strong>and</strong>.<br />

Diagnostic Gathering<br />

parameters are optional parameters available <strong>for</strong> some comm<strong>and</strong>s, as noted in<br />

Appendix F.<br />

See Appendix E, "W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility," <strong>for</strong> more in<strong>for</strong>mation on<br />

the comm<strong>and</strong>s to use with the Daemon background run.<br />

7.6. Diagnostic Gathering<br />

The diagnostic gathering utility (DIAG/RUN) improves the reliability <strong>and</strong> supportability<br />

of W<strong>MQ</strong><strong>2200</strong> on customer production systems. It contains a set of automated<br />

procedures that collect all necessary diagnostic <strong>and</strong> logging in<strong>for</strong>mation from various<br />

W<strong>MQ</strong><strong>2200</strong> sources to minimize the occurrence of incomplete diagnostics <strong>and</strong><br />

associated cost of delays. When reporting a problem through UCF or CONTACT, use<br />

this procedure to help you gather diagnostic in<strong>for</strong>mation.<br />

The Gather Usysreport module located in the Diagnostic category of the <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console helps you gather all system in<strong>for</strong>mation,<br />

download it to your PC <strong>and</strong> send it to Unisys support personnel. This tool takes a<br />

snapshot of the current system <strong>and</strong> contains key files needed to diagnose a problem.<br />

These diagnostics help the engineers determine the source of the problem effectively<br />

<strong>and</strong> decrease the need <strong>for</strong> requesting more in<strong>for</strong>mation on UCFs or CONTACTs.<br />

7.6.1. Check UNX Shell Processor Availability<br />

The UNX Shell processor must be available in order to execute the diagnostic<br />

correlation procedure. To verify its availability, enter the following:<br />

>@wmq$*mqs$exe.unx<br />

where W<strong>MQ</strong>$ is the qualifier of your <strong>MQ</strong>S$EXE file.<br />

The UNX shell processor will respond with output similar to the following:<br />

> Unx - 6R1 - 2010 May 27 Fri 11:22:43<br />

><br />

If the output is not similar, or it appears that your UNX Shell processor is hung, you<br />

will not be able to use the diagnostics gathering utility. You must manually obtain as<br />

much relevant in<strong>for</strong>mation as possible.<br />

3843 3744–002 7–9


Diagnostic Gathering<br />

Manually capture <strong>and</strong> submit the relevant diagnostic in<strong>for</strong>mation using <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console Usysreport Diagnostics module.<br />

• Console log in<strong>for</strong>mation<br />

• EXEC online dump (dump)<br />

7.6.2. Diagnostic Gathering Utility (DIAGN/RUN)<br />

This procedure queries the user <strong>for</strong> the <strong>MQ</strong>S$EXE file qualifier, date, <strong>and</strong> time be<strong>for</strong>e<br />

<strong>and</strong> after the error occurred in order to display the console log in<strong>for</strong>mation. The<br />

DIAGN/RUN breakpoints the CAT/ERRORS output <strong>and</strong> number of other items into the<br />

output file DIAGN<strong>OS</strong>. Refer to the CAT/ERRORS section <strong>for</strong> more in<strong>for</strong>mation.<br />

The following in<strong>for</strong>mation is captured by DIAGN/RUN:<br />

• Daemon print file output<br />

• Console log In<strong>for</strong>mation<br />

• <strong>OS</strong> <strong>2200</strong> DDP logs <strong>and</strong> traces<br />

• Daemon apistatus output<br />

• Subsystem bank in<strong>for</strong>mation<br />

• Owner of the subsystem files<br />

• <strong>Installation</strong> in<strong>for</strong>mation <strong>for</strong> the following products: IC<strong>2200</strong>, COMAPI, DDP-LTR,<br />

<strong>MQ</strong>S<strong>2200</strong>, <strong>and</strong> W<strong>MQ</strong><strong>2200</strong><br />

• Content of the configuration file<br />

• Content of mqsrun file<br />

The names of core dump files will be listed in the output file as<br />

<strong>MQ</strong>S$COREDUMP-name.<br />

This alerts the user to the existence of these files so they can be included in the<br />

materials to be sent.<br />

Diagnostic Gathering Usage<br />

To execute the Diagnostic Gathering Utility, view the<br />

W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS.CAT/ERRORS runstream to verify that its output is not<br />

breakpointed to a file. If it has breakpoint statements in its runstream, remove them.<br />

Execute the Diagnostic Gathering runstream as follows:<br />

1. Type the following:<br />

>@add wmq$*mqstools.diagn/run<br />

The following prompt is displayed:<br />

>Enter the qualifier of your <strong>MQ</strong>S$EXE file<br />

7–10 3843 3744–002


2. Answer with the FileSystem configuration value (W<strong>MQ</strong>$, most likely).<br />

The following prompt is displayed:<br />

Diagnostic Gathering<br />

>Enter a start time, preferably an hour be<strong>for</strong>e the problem occurred,<br />

in <strong>for</strong>mat yymmdd/hhmmss ><br />

3. Type the date <strong>and</strong> time values approximately an hour be<strong>for</strong>e you encountered the<br />

problem. Enter the date in the <strong>for</strong>mat yymmdd/hhmmss (two digits each <strong>for</strong> year,<br />

month, day, hour, minute, <strong>and</strong> second).<br />

The following prompt is displayed:<br />

>Enter an end time, preferably an hour after the problem occurred, in<br />

<strong>for</strong>mat yymmdd/hhmmss ><br />

4. Type a date <strong>and</strong> time approximately an hour after you encountered the problem<br />

using the <strong>for</strong>mat yymmdd/hhmmss.<br />

Note: You can ignore ICADMIN in<strong>for</strong>mation in the screen DIAGN/RUN was<br />

executed.<br />

When the run completes, verify the output in file DIAGN<strong>OS</strong>. Scan the output <strong>for</strong> any<br />

warnings or errors.<br />

7.6.3. Gathering Usysreport Diagnostics<br />

To gather Usysreport per<strong>for</strong>m the following procedure:<br />

1. Log in to the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console.<br />

2. Click the Diagnostics link on the top.<br />

3. Click the Usysreport Diagnostics link.<br />

4. Click Run Usysreport.<br />

5. When the Usysreport is generated, look at the Archived Usysreport Files <strong>and</strong> click<br />

the Download link to save the zip file onto your PC.<br />

7.6.4. List of Files to RSS to Engineering<br />

Provide the following files to engineering:<br />

• The DIAGN<strong>OS</strong> file containing diagnostic in<strong>for</strong>mation.<br />

• The diagnostic files associated with any relevant core dump files. Core dump files<br />

that have names with the convention grunidyymmdd*msecs., where grunid is the<br />

generated run-id of the batch run (that is, W<strong>MQ</strong>, W<strong>MQ</strong>A, <strong>and</strong> so <strong>for</strong>th), yymmdd is<br />

the date on which the file name was generated, <strong>and</strong> msecs is the time past<br />

midnight, in milliseconds, that the file name was generated.<br />

3843 3744–002 7–11


Diagnostic Gathering<br />

• Any core dump files reported in the DIAGN<strong>OS</strong> file.<br />

• Output of Usysreport.<br />

7.6.5. Running the CAT/ERRORS Addstream Manually<br />

You can use this addstream template, found in W<strong>MQ</strong>$*W<strong>MQ</strong>TOOLS.CAT/ERRORS, as<br />

a starting point <strong>for</strong> an addstream. It gathers error <strong>and</strong> diagnostic in<strong>for</strong>mation from the<br />

W<strong>MQ</strong><strong>2200</strong> file system <strong>and</strong> places it in your output stream. This addstream uses the<br />

UNX comm<strong>and</strong>s to gather W<strong>MQ</strong><strong>2200</strong> in<strong>for</strong>mation <strong>and</strong> also some system in<strong>for</strong>mation.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

echo<br />

#<br />

# Generate a core dump<br />

#<br />

core<br />

#<br />

date<br />

#<br />

# Display the W<strong>MQ</strong><strong>2200</strong> version in<strong>for</strong>mation.<br />

#<br />

dspmqver<br />

#<br />

# Display the status of all defined queue managers.<br />

#<br />

dspmq<br />

#<br />

#<br />

# Display system error log files from the /var/mqm/errors/ directory.<br />

#<br />

errors<br />

#<br />

# Display each queue manager's error log files, found in each queue<br />

# manager's errors directory (/var/mqm/qmgrs//errors/).<br />

#<br />

logs<br />

#<br />

# Display active processes<br />

ps<br />

#<br />

# Display share memory in<strong>for</strong>mation<br />

ss<br />

#<br />

# Display disk in<strong>for</strong>mation<br />

#<br />

diskinfo<br />

#<br />

# Display the names <strong>and</strong> sizes of all files in the /var/mqm tree.<br />

#<br />

fileinfo -s<br />

#<br />

7–12 3843 3744–002


Diagnostic Gathering<br />

# Display mqs.ini file <strong>and</strong> each queue manager's qm.ini file.<br />

#<br />

dumpini -a<br />

#<br />

# Display CPU in<strong>for</strong>mation<br />

#<br />

cpuinfo<br />

#<br />

# List all <strong>2200</strong> userids with their associated groups<br />

#<br />

mquserlist<br />

#<br />

# Display memory in<strong>for</strong>mation<br />

#<br />

meminfo -v<br />

#<br />

# Display system in<strong>for</strong>mation<br />

#<br />

uname<br />

#<br />

# Display how long the system has been up<br />

#<br />

uptime<br />

#<br />

# Displays system status in<strong>for</strong>mation<br />

#<br />

sysinfo<br />

#<br />

# Display runmqsc definitions <strong>for</strong> all queue managers<br />

#<br />

saveqmgr_all<br />

#<br />

# Display status of managed transactions <strong>for</strong> all queue managers<br />

#<br />

dspmqtrn_all<br />

#<br />

exit<br />

You can run the addstream in breakpoint mode to obtain the following in<strong>for</strong>mation:<br />

• PADS diagnostic memory dump (through the UNX Shell core comm<strong>and</strong>)<br />

• W<strong>MQ</strong><strong>2200</strong> version in<strong>for</strong>mation<br />

• The status of all defined queue managers<br />

• The contents of various error <strong>and</strong> log files within <strong>OS</strong> <strong>2200</strong> QProcessor. This also<br />

includes the error log <strong>for</strong> each queue manager (through the UNX shell errors <strong>and</strong><br />

logs comm<strong>and</strong>s)<br />

• Active processes (through the UNX ps comm<strong>and</strong>)<br />

• The system status<br />

• Shared memory in<strong>for</strong>mation<br />

3843 3744–002 7–13


Real-Time Run Priorities<br />

• Names <strong>and</strong> sizes of all files in the /var/mqm tree<br />

• The top-level internal configuration file <strong>for</strong> your <strong>OS</strong> <strong>2200</strong> QProcessor (mqs.ini) <strong>and</strong><br />

configuration file <strong>for</strong> each of your queue managers (qm.ini)<br />

• Amount of CPU available<br />

• List of <strong>OS</strong> <strong>2200</strong> user IDs with their associated groups <strong>for</strong> <strong>OS</strong> <strong>2200</strong> QProcessor<br />

• System in<strong>for</strong>mation<br />

• How long the system has been up<br />

• System status in<strong>for</strong>mation<br />

• Runmqsc definitions <strong>for</strong> all queue managers<br />

• Status of managed transactions <strong>for</strong> all queue managers<br />

Refer to the IBM documents <strong>MQ</strong>Series System <strong>Administration</strong> <strong>and</strong> <strong>MQ</strong>Series<br />

Application Programming Reference <strong>for</strong> details on error codes.<br />

7.7. Real-Time Run Priorities<br />

<strong>OS</strong> <strong>2200</strong> system hangs caused by user applications that access the <strong>MQ</strong>I could be the<br />

result of incorrect run priorities set between the user application programs <strong>and</strong> the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. Hangs can occur when program run priorities are set incorrectly<br />

on systems with only one or two processors running at a lowered SCP (software<br />

controlled per<strong>for</strong>mance) value along with user applications that have multiple,<br />

real-time looping activities.<br />

The guideline to follow regarding user applications that call the <strong>MQ</strong>I is to be sure not<br />

to run the application at a higher real-time priority than the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Think of W<strong>MQ</strong><strong>2200</strong> as a service provider. If you use the <strong>MQ</strong>I in application programs<br />

executing at a real-time priority greater than the service provider, the service provider<br />

(W<strong>MQ</strong><strong>2200</strong>) might not be able to per<strong>for</strong>m the work requested by the application. The<br />

application might preempt the W<strong>MQ</strong><strong>2200</strong> work.<br />

You set the real-time level <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> batch runs with the RealTimeLevel<br />

parameter in element mqseries/config in file wmq$*mqs$config.<br />

The Exec System Software <strong>Administration</strong> Reference Manual points out some<br />

impacts of running on a controlled per<strong>for</strong>mance machine. A system with controlled<br />

per<strong>for</strong>mance less than 100 percent per<strong>for</strong>ms differently from a system without the<br />

control, even though it provides the required MIPS. The number of processors on a<br />

system running at less than 100 percent can have different per<strong>for</strong>mance<br />

characteristics. For example, a system with two processors, running at 50 percent,<br />

with a looping real-time task consumes one processor. The system appears to<br />

operate as a system with one processor.<br />

7–14 3843 3744–002


Recover an Unstable W<strong>MQ</strong><strong>2200</strong> System<br />

7.8. Recover an Unstable W<strong>MQ</strong><strong>2200</strong> System<br />

There are two methods to recover from an unstable W<strong>MQ</strong><strong>2200</strong> system. If you find<br />

that the W<strong>MQ</strong><strong>2200</strong> system has become corrupted or unstable, you can attempt one<br />

or both of the methods described in section 7.8.1 <strong>and</strong> 7.8.2. Unisys advises that you<br />

use extreme caution when taking any actions in this section. Be<strong>for</strong>e per<strong>for</strong>ming any of<br />

the steps in this section, you must ensure that your W<strong>MQ</strong><strong>2200</strong> system is quiescent<br />

(that is, no applications are attempting to per<strong>for</strong>m work). Also ensure that you have<br />

saved any in<strong>for</strong>mation needed <strong>for</strong> problem reporting. Refer to Section 8, "Recovery<br />

Procedures," if you are in a recovery situation.<br />

7.8.1. Deactivating W<strong>MQ</strong><strong>2200</strong> Subsystems<br />

The W<strong>MQ</strong><strong>2200</strong> installation provides the following utility addstreams to allow you to<br />

deactivate your W<strong>MQ</strong><strong>2200</strong> subsystems:<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS.DEACT/<strong>MQ</strong>S deactivates the <strong>MQ</strong>S subsystem, which<br />

contains the <strong>WebSphere</strong> <strong>MQ</strong> engine.<br />

• W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS.DEACT/UNX deactivates the UNX subsystem.<br />

7.8.2. Reinitializing the <strong>OS</strong> <strong>2200</strong> QProcessor System<br />

You can run init comm<strong>and</strong> from UNX shell (W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX), if you find that the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor system has become corrupted or unusable. You must be<br />

mapped as root on the <strong>OS</strong> <strong>2200</strong> QProcessor to per<strong>for</strong>m an init.<br />

You can use the mqstatus comm<strong>and</strong> in the UNX shell to verify if all <strong>MQ</strong> activity has<br />

been stopped be<strong>for</strong>e running the init.<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqstatus<br />

>There are no <strong>MQ</strong> activities. It is safe to shut down.<br />

Note: You must shut down all <strong>MQ</strong> processes be<strong>for</strong>e you can per<strong>for</strong>m the init<br />

comm<strong>and</strong>. If the init detects <strong>MQ</strong> activity, it will print a list <strong>and</strong> abort.<br />

Use the following procedure to per<strong>for</strong>m an init:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>init<br />

>*****************WARNING!!!*******************<br />

>* This comm<strong>and</strong> will initialize your /var/mqm *<br />

>* file system. ALL queue manager data will *<br />

>* will be DESTROYED! *<br />

>**********************************************<br />

>Are you sure you want to proceed (y,n)?<br />

Answer ‘y’ to the query.<br />

3843 3744–002 7–15


Recover an Unstable W<strong>MQ</strong><strong>2200</strong> System<br />

You will then be prompted one more time to confirm:<br />

>To confirm you really wish to initialize /var/mqm<br />

>enter 'y' again. Entering 'y' will DESTROY all<br />

>queue manager data, logs, errors, <strong>and</strong> files.<br />

>Proceed (y,n)?<br />

Answer ‘y’ again <strong>and</strong> the init will attempt to start.<br />

If the init is successful, you will see the following message:<br />

>Init started...Please wait.<br />

>Init completed.<br />

After you have reinitialized your <strong>OS</strong> <strong>2200</strong> QProcessor you can restore saved queue<br />

manager in<strong>for</strong>mation using the <strong>MQ</strong>LOAD utility. Refer to Section 3,"<strong>Administration</strong>,"<br />

<strong>and</strong> Appendix F, "UNX Shell," <strong>for</strong> more in<strong>for</strong>mation.<br />

You can also restore archived log files using the <strong>MQ</strong>LOADLOG utility. Refer to<br />

Section 3,"<strong>Administration</strong>," <strong>and</strong> Appendix F, "UNX Shell," <strong>for</strong> more in<strong>for</strong>mation.<br />

7–16 3843 3744–002


Section 8<br />

Message Recovery Procedures<br />

This section discusses message recovery procedures <strong>for</strong> various error events in the<br />

W<strong>MQ</strong><strong>2200</strong> environment. In case of a failure, try to collect as much diagnostic<br />

in<strong>for</strong>mation as you can at the time of the failure <strong>and</strong> be<strong>for</strong>e reestablishing operations.<br />

Refer to Section 7, "Troubleshooting", <strong>for</strong> a description of the diagnostics to collect.<br />

The W<strong>MQ</strong><strong>2200</strong> product relies upon <strong>and</strong> continues to provide the st<strong>and</strong>ard <strong>WebSphere</strong><br />

<strong>MQ</strong> recovery capabilities.<br />

To … See subsection …<br />

Obtain in<strong>for</strong>mation about various recovery capabilities 8.1<br />

Obtain in<strong>for</strong>mation on manually resolving incomplete<br />

global transactions<br />

8.1. <strong>WebSphere</strong> <strong>MQ</strong> Recovery Capabilities<br />

<strong>WebSphere</strong> <strong>MQ</strong> incorporates logging, check pointing, <strong>and</strong> recovery mechanisms to<br />

restore persistent messages. Recovery logs are written to ensure three types of<br />

recovery:<br />

1. Restart recovery, when you stop <strong>WebSphere</strong> <strong>MQ</strong> in a planned way.<br />

2. Crash recovery, when a failure stops <strong>WebSphere</strong> <strong>MQ</strong>.<br />

3. Media recovery, to restore damaged objects.<br />

All recoveries require the use of <strong>WebSphere</strong> <strong>MQ</strong> log files. The log files keep records<br />

of queue manager changes <strong>and</strong> of queue updates <strong>for</strong> use by the restart process, <strong>and</strong><br />

enable you to restore data after a hardware or software failure.<br />

<strong>WebSphere</strong> <strong>MQ</strong> recovery takes place when the queue manager is restarted. Internal<br />

recovery restores the queue manager to the state it was in when the queue manager<br />

stopped. Any non-2PC, in-progress transactions are rolled back, removing any updates<br />

that were in progress from the queues. Recovery restores all persistent messages;<br />

non-persistent messages might be lost.<br />

Circular logging provides restart or crash recovery to the end of the current log file.<br />

Linear logging additionally provides media recovery <strong>and</strong> recovery to an earlier state.<br />

3843 3744–002 8–1<br />

8.2


<strong>WebSphere</strong> <strong>MQ</strong> Recovery Capabilities<br />

8.1.1. Differences with <strong>MQ</strong>S<strong>2200</strong><br />

In <strong>MQ</strong>S<strong>2200</strong>, <strong>OS</strong> <strong>2200</strong> integrated recovery of TIP System Services files was available<br />

as a separate <strong>and</strong> distinct layer of recoverability in addition to the recovery <strong>and</strong><br />

restoration procedures provided by <strong>MQ</strong>Series. <strong>OS</strong> <strong>2200</strong> integrated recovery of<br />

System Services files is not an option in the new W<strong>MQ</strong><strong>2200</strong> environment. The<br />

<strong>OS</strong> <strong>2200</strong> System Services files no longer exist. All queue manager objects <strong>and</strong> queue<br />

data reside on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

8.1.2. Media Recovery<br />

You can back up your queue manager data periodically to an <strong>OS</strong> <strong>2200</strong> file to provide<br />

some protection against possible corruption due to hardware or software failures.<br />

Keep in mind that this periodic back up is not meant to recover recent messages. Use<br />

the W<strong>MQ</strong><strong>2200</strong> mqsave <strong>and</strong> mqload utilities to re-create your queue manager data<br />

from the saved in<strong>for</strong>mation. These utilities save <strong>and</strong> restore queue manager objects as<br />

well as the queue manager log files whether circular or linear.<br />

Refer to Section 3, "<strong>Administration</strong>," <strong>for</strong> details on how to use these utilities.<br />

An alternative method of media recovery is to use the <strong>WebSphere</strong> <strong>MQ</strong> rcdmqimg<br />

comm<strong>and</strong> to write an image of an object, or group of objects, to the log files on the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. The rcdmqimg comm<strong>and</strong> can only be used with linear logging. If<br />

your queue manager is damaged, you can then use the rcrmqobj comm<strong>and</strong> to<br />

re-create the queue manager from the images contained in the log files.<br />

Recreate Linear Log Queue Manager from Log Files<br />

The recoverqmgr utility is used to restore a linear log queue manager to another<br />

<strong>OS</strong> <strong>2200</strong> QProcessor or the same <strong>OS</strong> <strong>2200</strong> QProcessor after a reimage. The utility<br />

recreates a queue manager that uses linear logging since these queue managers are<br />

the only ones recoverable through log files. The recoverqmgr utility uses the log files<br />

of the queue manager, a backed up copy of its qm.ini file, <strong>and</strong> a special recovery script<br />

to recreate the queue manager. After the queue manager is recreated, the backed up<br />

logs are used to start the queue manager to recover the objects of the queue<br />

manager. In this way, the queue manager can be recovered to its last state.<br />

After each successful strmqm, W<strong>MQ</strong><strong>2200</strong> copies the qm.ini to the log directory of the<br />

queue manager. It also creates a special script named regencrtmqm.sh under the log<br />

directory of the queue manager. This script contains the necessary crtmqm comm<strong>and</strong><br />

to recreate the queue manager.<br />

The recoverqmgr utility takes the following inputs in the comm<strong>and</strong> line:<br />

• The name of the queue manager being restored, which is required.<br />

• The log path of the queue manager if it is not in the default location of<br />

/var/mqm/log/ can be specified, which is optional. The “-l” option<br />

followed by the log path need to be used. The path you give must be the full path<br />

to the log directory.<br />

8–2 3843 3744–002


The recoverqmgr utility per<strong>for</strong>ms the following tasks:<br />

<strong>WebSphere</strong> <strong>MQ</strong> Recovery Capabilities<br />

1. Backs up the log files of the queue manager in a compressed <strong>for</strong>mat to<br />

/var/mqm/log/.tar.gz.<br />

2. Deletes the old log tree of the queue manager.<br />

3. Executes the regencrtmqm.sh script, which creates the queue manager.<br />

4. Deletes the new log files that are empty.<br />

5. Extracts the log files of the original queue manager from the compressed backup,<br />

back to its original location.<br />

6. Copies the qm.ini from backup to the qmgrs directory of the queue manager,<br />

which restores previous settings <strong>and</strong> updates the log directory to point to the old<br />

log directory location.<br />

7. Starts the queue manager to <strong>for</strong>ce a rebuild of the objects of the queue manager<br />

from the original log files.<br />

8. Queries the user if they want to delete backup copy of the log directory of the<br />

queue manager. The user must to answer ‘y’ to delete the archived log files, or ‘n’<br />

to retain the archived log files.<br />

If there are more queue managers that you want to restore, the recoverqmgr utility<br />

must be executed <strong>for</strong> each queue manager. After the queue manager has finished its<br />

first start from the log files, its objects will be recovered <strong>and</strong> restored. You can then<br />

per<strong>for</strong>m a normal startup of your queue manager components <strong>and</strong> applications.<br />

Example<br />

The following example illustrates a queue manager (qm1) recovery:<br />

@wmq$*mqs$exe.unx<br />

>recoverqmgr qm1<br />

Backing up log files of the queue manager to '/var/mqm/log/qm1.tar.gz'.<br />

Running 'regencrtmqm.sh' script to create the queue manager.<br />

<strong>WebSphere</strong> <strong>MQ</strong> queue manager created.<br />

Creating or replacing default objects <strong>for</strong> qm1.<br />

Default objects statistics : 40 created. 0 replaced. 0 failed.<br />

Completing setup.<br />

Setup completed.<br />

Restoring log files of the queue manager from '/var/mqm/log/qm1.tar.gz'.<br />

<strong>WebSphere</strong> <strong>MQ</strong> queue manager 'qm1' starting.<br />

194 log records accessed on queue manager 'qm1' during the log replay phase.<br />

Log replay <strong>for</strong> queue manager 'qm1' complete.<br />

Transaction manager state recovered <strong>for</strong> queue manager 'qm1'.<br />

<strong>WebSphere</strong> <strong>MQ</strong> queue manager 'qm1' started.<br />

3843 3744–002 8–3


<strong>WebSphere</strong> <strong>MQ</strong> Recovery Capabilities<br />

Log files of the queue manager are backed up to '/var/mqm/log/qm1.tar.gz'.<br />

Do you want to delete queue manager 'qm1' backup log files, y/n?<br />

>y<br />

The backup log files of the queue manager are deleted.<br />

8.1.3. Point-in-time Message Recovery<br />

You can use the mqsave, mqload <strong>and</strong> mqsavelog, mqloadlog utilities to revert the<br />

<strong>WebSphere</strong> <strong>MQ</strong> environment to the time of the save. You can also use backups<br />

created in the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console to revert the entire<br />

/var/mqm file system or a specific queue manager back to a point-in-time.<br />

You can use mqsave <strong>and</strong> mqload with either circular or linear log file systems. These<br />

utilities save <strong>and</strong> restore the entire queue manager environment to the point of the<br />

last mqsave, <strong>and</strong> can be used in a damaged queue manager situation. These utilities<br />

are run when the queue manager is ended.<br />

Use mqsavelog <strong>and</strong> mqloadlog only with a linear log file system. mqsavelog removes<br />

stale log files from the system that are no longer needed <strong>for</strong> queue manager message<br />

recovery. You must remove the stale log files on a regular basis with a linear log file<br />

queue manager to free up disk space. You can then use mqloadlog to restore the<br />

queue manager to a previous point of processing. These utilities assume the queue<br />

manager itself is operational <strong>and</strong> not damaged. You can run the mqsavelog <strong>and</strong><br />

mqloadlog utilities with the queue manager running or ended.<br />

Using backups created with the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console, you can<br />

restore your entire <strong>MQ</strong> file structure or a specific queue manager back to a<br />

point-in-time. The restored queue managers are stopped to use the restore feature.<br />

The <strong>Administration</strong> Console stops the queue managers in question be<strong>for</strong>e the restore<br />

if necessary <strong>and</strong> can restart the queue managers after the restoration is completed.<br />

You can per<strong>for</strong>m a one-time backup of queue managers or schedule backups to run<br />

on a regular or periodic basis.<br />

Note: Whenever a backup is per<strong>for</strong>med, the affected queue managers are shut<br />

down <strong>and</strong> are unavailable <strong>for</strong> the duration of the backup.<br />

Regardless of the method you use <strong>for</strong> recovery or restoration, note that a<br />

point-in-time restoration restores the queue manager data back to the time when the<br />

backup was per<strong>for</strong>med. This means messages that were stored on the queue<br />

manager at the time of the backup are restored. The applications <strong>and</strong> environment<br />

must be able to properly h<strong>and</strong>le messages that may be restored <strong>and</strong> consumed after<br />

the original backup. If message duplication is an issue in your environment, you might<br />

want to consider backing up the queue manager object definitions, object authorities,<br />

<strong>and</strong> queue manager configuration scripts as an alternative to point-in-time backups of<br />

queue managers.<br />

8–4 3843 3744–002


8.1.4. <strong>OS</strong> <strong>2200</strong> Database Synchronization<br />

<strong>WebSphere</strong> <strong>MQ</strong> Recovery Capabilities<br />

Coordinating recovery of both the <strong>WebSphere</strong> <strong>MQ</strong> data <strong>and</strong> an <strong>OS</strong> <strong>2200</strong> database to<br />

the same point in time involves manual procedures to synchronize the <strong>WebSphere</strong><br />

<strong>MQ</strong> saves <strong>and</strong> loads with the <strong>OS</strong> <strong>2200</strong> database IRU dumps <strong>and</strong> reloads. It is best to<br />

halt all database <strong>and</strong> message queuing activity when capturing this data.<br />

Processing messages <strong>and</strong> database work within global transactions is the best way to<br />

ensure <strong>WebSphere</strong> <strong>MQ</strong> data <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> database synchronization <strong>for</strong> restart <strong>and</strong><br />

crash recoveries.<br />

8.1.5. Open DTP Subsystem Abort <strong>and</strong> Deactivation<br />

If the Open DTP subsystem deactivates while processing global transactions that<br />

involve W<strong>MQ</strong><strong>2200</strong> as a resource manager, reload tmsconfig, rerun the RMINSTALL<br />

addstream that registers W<strong>MQ</strong><strong>2200</strong> as a resource manager, <strong>and</strong> then restart the Open<br />

DTP background run TMSC. This resolves any broken in-flight transactions.<br />

8.1.6. <strong>OS</strong> <strong>2200</strong> Application Group Abort<br />

The W<strong>MQ</strong><strong>2200</strong> subsystem will have no knowledge of an application group abort <strong>and</strong><br />

must remain running through application group recovery.<br />

8.1.7. <strong>OS</strong> <strong>2200</strong> Daemon Abort<br />

Save the wmq$*daemon$out file <strong>for</strong> error reporting. Restart the <strong>OS</strong> <strong>2200</strong> daemon:<br />

@wmq$*mqs$exe.startup<br />

8.1.8. <strong>OS</strong> <strong>2200</strong> System Stop<br />

After a system stop, per<strong>for</strong>m the following steps:<br />

1. Recover the application groups.<br />

2. Restart the W<strong>MQ</strong><strong>2200</strong> daemon.<br />

3. Reload the Open DTP tmsconfig <strong>and</strong> run rminstall (if using Open DTP 2PC with<br />

<strong>MQ</strong>I).<br />

4. Restart Open DTP background run, TMSC.<br />

Step 1 restores the <strong>OS</strong> <strong>2200</strong> databases to an operable state.<br />

Step 2 reestablishes connectivity to the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>for</strong> message access.<br />

Step 3 allows Open DTP to resolve broken in-flight transactions.<br />

3843 3744–002 8–5


<strong>WebSphere</strong> <strong>MQ</strong> Recovery Capabilities<br />

8.1.9. <strong>OS</strong> <strong>2200</strong> QProcessor Stop<br />

The <strong>OS</strong> <strong>2200</strong> daemon reports that the connection is broken when the <strong>OS</strong> <strong>2200</strong><br />

QProcessor stops.<br />

W<strong>MQ</strong>*WARNING: IC connection has unexpectedly terminated!<br />

W<strong>MQ</strong>*<strong>MQ</strong> applications will not be able to access queue<br />

W<strong>MQ</strong>*managers until the IC connection is restored.<br />

W<strong>MQ</strong>*Use the UP keyin to restore the connection<br />

W<strong>MQ</strong>*after the problem is resolved.<br />

W<strong>MQ</strong>*Check logs <strong>for</strong> diagnostics.<br />

After the <strong>OS</strong> <strong>2200</strong> QProcessor system is recovered, per<strong>for</strong>m the following steps to<br />

recover <strong>and</strong> restart message processing:<br />

1. Restart the queue managers.<br />

2. Restart the Interconnect Service program.<br />

3. Enter keyin @@cons wmq to the <strong>OS</strong> <strong>2200</strong> daemon.<br />

Step 1 per<strong>for</strong>ms <strong>WebSphere</strong> <strong>MQ</strong> recovery.<br />

For step 2, use the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console. Click Configuration<br />

in the menu bar, <strong>and</strong> then click the Interconnect Configuration icon to see <strong>and</strong> act<br />

upon the Interconnect Service status.<br />

Step 3 causes the <strong>OS</strong> <strong>2200</strong> background daemon run to reestablish the message<br />

queuing connection to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

8.1.10. <strong>OS</strong> <strong>2200</strong> QProcessor Disk Failure<br />

Your <strong>OS</strong> <strong>2200</strong> QProcessor comes with three disks, any of which can fail. Failed disks<br />

can be detected by viewing the System Health module in the Diagnostic category of<br />

the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console. The module shows which disk might<br />

have failed <strong>and</strong> provides a mechanism to rebuild the replacement disk.<br />

Two of the disks are mirrored. The mirrored disks contain the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

operating system, system software, <strong>and</strong> the <strong>WebSphere</strong> <strong>MQ</strong> /var/mqm/log directory.<br />

If one of the mirrored disks fails, replace the bad disk as soon as possible. The system<br />

will continue to run. Once the replacement disk is in place, the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

automatically starts to resynchronize the disks. This should not affect the running<br />

applications.<br />

The unmirrored disk contains the contents of the <strong>WebSphere</strong> <strong>MQ</strong> /var/mqm directory,<br />

which holds the queue manager objects <strong>and</strong> message data. If this disk fails, replace it<br />

with a new disk <strong>and</strong> per<strong>for</strong>m the following steps to recover <strong>and</strong> return to message<br />

processing:<br />

1. Set an environment variable: export UNISYS_IGNORE_LOG_PATH_LOCK=1. This<br />

allows you to use the –ld option on crtmqm so that you can specify a new log<br />

path.<br />

8–6 3843 3744–002


Manually Resolving Incomplete Global Transactions<br />

2. Re-create your queue manager with a new log file path using the –ld option on<br />

your crtmqm comm<strong>and</strong>.<br />

3. In an <strong>OS</strong> <strong>2200</strong> UNX shell, copy the saved qm.ini file over the re-created queue<br />

manager qm.ini file.<br />

4. Enter the strmqm comm<strong>and</strong>.<br />

Restart channels <strong>and</strong> trigger monitors to return to message processing.<br />

For step 2, make sure all other crtmqm parameters are the same, as when you first<br />

created the queue manager. The –ld option on the crtmqm comm<strong>and</strong> allows you to<br />

specify an alternate path <strong>for</strong> the location of the log files of the queue manager. This is<br />

done to avoid destroying the original queue manager log files.<br />

Step 3 points the queue manager to the original log files of the queue manager. This<br />

allows the newly created queue manager to recover from the original log files. In an<br />

<strong>OS</strong> <strong>2200</strong> UNX shell session, enter the following comm<strong>and</strong> to copy the original qm.ini<br />

file over the newly created qm.ini file.<br />

cp /var/mqm/backup_data/ini_backups//qm.ini<br />

/var/mqm/qmgrs//qm.ini<br />

Replace with the name of the real queue manager name.<br />

Step 4 causes the queue manager to recover messages.<br />

8.1.11. W<strong>MQ</strong><strong>2200</strong> Subsystem Abort <strong>and</strong> Deactivation<br />

Restart the <strong>OS</strong> <strong>2200</strong> daemon using the following comm<strong>and</strong>:<br />

@wmq$*mqs$exe.startup<br />

8.2. Manually Resolving Incomplete Global<br />

Transactions<br />

You will experience messages residing on queues that cannot be removed or cleared<br />

if they are part of an incomplete global transaction. In cases where the global<br />

transactions involving W<strong>MQ</strong><strong>2200</strong> as a resource manager cannot be completed or<br />

resolved by Open Distributed Transaction Processing, use the dspmqtrn <strong>and</strong> rsvmqtrn<br />

comm<strong>and</strong>s to display <strong>and</strong> manually resolve the transaction within W<strong>MQ</strong><strong>2200</strong>.<br />

Committing <strong>and</strong> Rolling Back Messages<br />

To decide whether to commit or roll back a message, use the Open Distributed<br />

Transaction Processing TMADMIN processor to display the current status of broken<br />

transactions:<br />

@otm$*tm$run.tmadmin<br />

r a<br />

3843 3744–002 8–7


Manually Resolving Incomplete Global Transactions<br />

If there is a log entry showing a transaction state of recovery commit <strong>for</strong> the XID<br />

number, this entry is from the root node <strong>and</strong> shows that all branches have returned a<br />

ready <strong>for</strong> the prepare request. You must see log entries with a state of recovery<br />

ready <strong>for</strong> the subordinate branches involved in the global transaction. This means that<br />

all branches have logged a ready state <strong>and</strong> all resource managers involved in the<br />

transaction can commit their work. You can decide to either commit or rollback the<br />

work in this case. You can commit the W<strong>MQ</strong><strong>2200</strong> message as long as you can also<br />

commit the other branches to keep the databases synchronized; otherwise, rollback<br />

the message.<br />

Conversely, if no log entry exists showing a transaction state of commit <strong>for</strong> the XID<br />

number, but recovery ready log entries exist, or a recovery rollback state exists <strong>for</strong><br />

the XID number, roll back the W<strong>MQ</strong><strong>2200</strong> message.<br />

When you restart TMSC, the commit log entry <strong>for</strong> the root node (if it exists) <strong>and</strong> the<br />

log entries <strong>for</strong> the subordinate or branch nodes that have been manually committed<br />

are removed or rolled back from the Open Distributed Transaction Processing<br />

recovery log file.<br />

Example<br />

The following is a sample display from the TMADMIN processor that shows two<br />

branch nodes in the recovery ready state <strong>and</strong> the root node in the recovery commit<br />

state. The first log entry is <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> branch, <strong>and</strong> the message must be<br />

manually committed. When you restart TMSC, the root node <strong>and</strong> second branch (a<br />

Universal Database Control branch in this case) is committed by the recovery server<br />

<strong>and</strong> all log entries <strong>for</strong> this transaction are removed.<br />

Comm<strong>and</strong>: -r a<br />

XID: 950011945 6 53125798 11043 1<br />

7 3<br />

STEP_ID: 000000000000 000000000000<br />

AG_ID: 0 STATE: RECOVERY READY FILE INDEX: 0<br />

XID: 950011945 6 53125798 11043 1<br />

6 0<br />

STEP_ID: 000000000000 000000000000<br />

AG_ID: 0 STATE: RECOVERY COMMIT FILE INDEX: 1<br />

XID: 950011945 6 53125798 11043 1<br />

5 4<br />

STEP_ID: 440333147606 000732070000<br />

AG_ID: 8 STATE: RECOVERY READY FILE INDEX: 2<br />

EOF<br />

8–8 3843 3744–002


dspmqtrn comm<strong>and</strong><br />

Manually Resolving Incomplete Global Transactions<br />

Use the dspmqtrn comm<strong>and</strong> to display the status of externally managed transactions<br />

<strong>for</strong> a queue manager.<br />

Formats<br />

dspmqtrn -e -m q-mgr-name<br />

dspmqtrn -m q-mgr-name -e<br />

dspmqtrn<br />

dspmqtrn -e (displays transactions <strong>for</strong> the default queue manager)<br />

Options <strong>and</strong> Parameters<br />

-e requests details of externally coordinated in-doubt transactions.<br />

-m q-mgr-name specifies the name of the queue manager whose transactions are to<br />

be displayed.<br />

Note: The -i option is not available with W<strong>MQ</strong><strong>2200</strong>.<br />

Outcome<br />

A message is displayed either describing a transaction or in<strong>for</strong>ming you that no<br />

prepared transactions exist. The message is similar to the following:<br />

A<strong>MQ</strong>7056: Transaction number 0,7.<br />

XID: <strong>for</strong>matID 2, gtrid_length 20, bqual_length 8<br />

gtrid [7E0C603406000000B440F701D037000001000000]<br />

gtridTM<strong>2200</strong>: 878709886 6 32981172 14288 1<br />

bqual [0700000003000000]<br />

bqualTM<strong>2200</strong>: 7 3<br />

The gtrid <strong>and</strong> bqual are displayed in two <strong>for</strong>ms. One is the <strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong>mat <strong>and</strong><br />

the other is the Open DTP <strong>for</strong>mat. This is done to allow you to match the XID in the<br />

message with the XID shown by the Open DTP TMADMIN processor. The Open DTP<br />

<strong>for</strong>ms <strong>for</strong> gtrid <strong>and</strong> bqual have the suffix TM<strong>2200</strong> in this display.<br />

An important piece of in<strong>for</strong>mation to note <strong>for</strong> manually resolving the branch with the<br />

rsvmqtrn comm<strong>and</strong> is the transaction number 0,7.<br />

rsvmqtrn comm<strong>and</strong><br />

Use the rsvmqtrn comm<strong>and</strong> to either commit or roll back externally coordinated<br />

in-doubt or incomplete transactions.<br />

Format to commit<br />

rsvmqtrn -m q-mgr-name -c n,n<br />

Format to roll back<br />

rsvmqtrn -m q-mgr-name -b n,n<br />

3843 3744–002 8–9


Manually Resolving Incomplete Global Transactions<br />

Options <strong>and</strong> Parameters<br />

-m q-mgr-name specifies the name of the queue manager.<br />

-c specifies commit.<br />

-b specifies roll back.<br />

n,n specifies the transaction number as displayed in the dspmqtrn message (in the<br />

preceding example, the transaction number is 0,7).<br />

Note: The -a <strong>and</strong> -r options are not available with W<strong>MQ</strong><strong>2200</strong>.<br />

8–10 3843 3744–002


Appendix A<br />

Data Formatting Between Multiple<br />

Plat<strong>for</strong>ms<br />

This appendix contains details on the libraries <strong>and</strong> C header files that are supplied with<br />

W<strong>MQ</strong><strong>2200</strong> to assist the user application in re<strong>for</strong>matting data between multiple<br />

plat<strong>for</strong>ms.<br />

To … See subsection …<br />

Obtain in<strong>for</strong>mation about the hton/o library routines A.1<br />

Obtain in<strong>for</strong>mation about the htondb/o library routines A.2<br />

Obtain in<strong>for</strong>mation about the hton-ucob/o library routines A.3<br />

Obtain in<strong>for</strong>mation about the htondb-ucob/o library<br />

routines<br />

Obtain in<strong>for</strong>mation about the h9ton8/o library routines A.5<br />

A.1. Library hton/o<br />

The library hton/o is compatible with the C language <strong>and</strong> includes the following<br />

routines a user application can call. Include hton/o in your user application.<br />

A.1.1. Host-to-Network Functions<br />

htonl<br />

This section contains descriptions <strong>for</strong> the host-to-network functions <strong>for</strong> C programs.<br />

These functions assist in passing integer values within the message area. Include the<br />

hton.h header file to use these functions in your application.<br />

Prototype<br />

Unsigned long htonl (unsigned long hostlong)<br />

Description<br />

Converts a 36-bit unsigned integer in 9-bit bytes to a 32-bit unsigned integer in<br />

8-bit bytes. htonl() ignores the 4 leftmost bits of the value in hostlong. For<br />

example, an input value of 4294967296 truncates to zero, <strong>and</strong> 68719476735<br />

truncates to 4294967295.<br />

3843 3744–002 A–1<br />

A.4


Library hton/o<br />

shtonl<br />

htons<br />

Arguments<br />

hostlong is an input argument containing a 36-bit unsigned integer in the range<br />

zero to 4294967295.<br />

Return Value<br />

htonl() returns a 36-bit integer in which the 8 rightmost bits of each byte <strong>for</strong>m a<br />

32-bit unsigned integer in network <strong>for</strong>mat.<br />

Prototype<br />

Signed long shtonl (signed long hostlong)<br />

Description<br />

Converts a 36-bit signed one's complement integer in 9-bit bytes to a 32-bit<br />

signed two's complement integer in 8-bit bytes. If the value in hostlong is less<br />

than -2147483648, shtonl() returns -2147483648. If the value in hostlong is greater<br />

than 2147483647, shtonl() returns 2147483647.<br />

Arguments<br />

hostlong is an input argument containing a 36-bit signed integer in the range<br />

-2147483648 to 2147483647.<br />

Return Value<br />

shtonl() returns a 36-bit integer in which the 8 rightmost bits of each byte <strong>for</strong>m a<br />

32-bit signed integer in network <strong>for</strong>mat.<br />

Prototype<br />

Unsigned short htons (unsigned short hostshort)<br />

Description<br />

Converts an 18-bit unsigned integer in 9-bit bytes to a 16-bit unsigned integer in<br />

8-bit bytes. It ignores the 2 leftmost bits of the value in hostshort. For example, an<br />

input value of 65536 truncates to zero, <strong>and</strong> 262143 truncates to 65535.<br />

Arguments<br />

hostshort is an input argument containing an 18-bit unsigned integer in the range<br />

zero to 65535.<br />

Return Value<br />

htons() returns an 18-bit integer in which the 8 rightmost bits of each byte <strong>for</strong>m a<br />

16-bit unsigned integer in network <strong>for</strong>mat.<br />

A–2 3843 3744–002


shtons<br />

Prototype<br />

Signed short shtons (signed short hostshort)<br />

Description<br />

Library hton/o<br />

Converts an 18-bit signed one's complement integer in 9-bit bytes to a 16-bit<br />

signed two's complement integer in 8-bit bytes. If the value in hostshort is less<br />

than -32768, shtons() returns -32768. If the value in hostshort is greater than<br />

32767, shtons() returns 32767.<br />

Arguments<br />

hostshort is an input argument containing an 18-bit signed integer in the range<br />

-32768 to 32767.<br />

Return Value<br />

shtons() returns an 18-bit integer in which the 8 rightmost bits of each byte <strong>for</strong>m a<br />

16-bit signed integer in network <strong>for</strong>mat.<br />

A.1.2. Network-to-Host Functions<br />

ntohl<br />

This section contains descriptions <strong>for</strong> the network-to-host functions <strong>for</strong> C programs.<br />

These functions assist in passing integer values within the message area. Include the<br />

hton.h header file to use these functions in your application.<br />

Prototype<br />

Unsigned long ntohl (unsigned long networklong)<br />

Description<br />

Converts a 32-bit unsigned integer in 8-bit bytes to a 36-bit integer in 9-bit bytes.<br />

Arguments<br />

networklong is an input argument containing a 36-bit integer in which the 8<br />

rightmost bits of each byte <strong>for</strong>m a 32-bit unsigned integer in network <strong>for</strong>mat.<br />

Return Value<br />

ntohl() returns a 36-bit unsigned integer.<br />

3843 3744–002 A–3


Library hton/o<br />

sntohl<br />

ntohs<br />

sntohs<br />

Prototype<br />

Signed long sntohl (signed long networklong)<br />

Description<br />

Converts a 32-bit signed two’s complement integer in 8-bit bytes to a 36-bit<br />

signed one’s complement integer in 9-bit bytes.<br />

Arguments<br />

networklong is an input argument containing a 36-bit integer in which the 8<br />

rightmost bits of each byte <strong>for</strong>m a 32-bit signed integer in network <strong>for</strong>mat.<br />

Return Value<br />

sntohl() returns a 36-bit signed integer.<br />

Prototype<br />

Unsigned short ntohs (unsigned short networkshort)<br />

Description<br />

Converts a 16-bit unsigned integer in 8-bit bytes to an 18-bit unsigned integer in<br />

9-bit bytes.<br />

Arguments<br />

networkshort is an input argument containing an 18-bit integer in which the 8<br />

rightmost bits of each byte <strong>for</strong>m a 16-bit unsigned integer in network <strong>for</strong>mat.<br />

Return Value<br />

ntohs() returns an 18-bit unsigned integer.<br />

Prototype<br />

Signed short sntohs (signed short networkshort)<br />

Description<br />

Converts a 16-bit signed two's complement integer in 8-bit bytes to an 18-bit<br />

signed one's complement integer in 9-bit bytes.<br />

Arguments<br />

networkshort is an input argument containing an 18-bit integer in which the 8<br />

rightmost bits of each byte <strong>for</strong>m a 16-bit signed integer in network <strong>for</strong>mat.<br />

A–4 3843 3744–002


Return Value<br />

sntohs() returns an 18-bit signed integer.<br />

A.2. Library htondb/o<br />

Library htondb/o<br />

The library htondb/o is compatible with the C language <strong>and</strong> includes the same routines<br />

as the hton/o library. Use this library when debugging your application. It verifies that<br />

bits are not lost when converting host data to network data <strong>for</strong> the routines htonl(),<br />

htons(), shtonl(), <strong>and</strong> shtons(). If the system detects a loss, it displays a warning<br />

message on stdout of the application that is calling the function. Your application<br />

continues to execute; however, data is lost on the receiving end of the connection.<br />

A.3. Library hton-ucob/o<br />

The library hton-ucob/o is compatible with the COBOL language <strong>and</strong> contains the<br />

routines described in the following subsections.<br />

A.3.1. Host-to-Network Functions<br />

HTONL<br />

SHTONL<br />

This section contains descriptions <strong>for</strong> the host-to-network functions <strong>for</strong> COBOL<br />

programs. These functions assist in passing integer values within the message area.<br />

Description<br />

Converts a 36-bit unsigned integer in 9-bit bytes to a 32-bit unsigned integer in 8-bit<br />

bytes. HTONL ignores the 4 leftmost bits of the input value. For example, an input<br />

value of 4294967296 truncates to zero, <strong>and</strong> 68719476735 truncates to 4294967295.<br />

Syntax<br />

CALL 'HTONL' USING host-36bit-binary network-long.<br />

Argument In/Out Comments<br />

host-36bit-binary Input 36-bit unsigned fixed-point binary integer in<br />

the range zero to 4294967295<br />

network-long Output 36-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 32-bit unsigned integer in<br />

network <strong>for</strong>mat<br />

Description<br />

Converts a 36-bit signed one's complement integer in 9-bit bytes to a 32-bit signed<br />

two's complement integer in 8-bit bytes. If the input value is less than -2147483648,<br />

SHTONL returns -2147483648. If the input value is greater than 2147483647, SHTONL<br />

returns 2147483647.<br />

3843 3744–002 A–5


Library hton-ucob/o<br />

HTONS<br />

SHTONS<br />

Syntax<br />

CALL 'SHTONL' USING host-36bit-binary network-long.<br />

Argument In/Out Comments<br />

host-36bit-binary Input 36-bit signed fixed-point binary integer in the<br />

range -2147483648 to 2147483647<br />

network-long Output 36-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 32-bit signed integer in<br />

network <strong>for</strong>mat<br />

Description<br />

Converts an 18-bit unsigned integer in 9-bit bytes to a 16-bit unsigned integer in 8-bit<br />

bytes. HTONS ignores the 2 leftmost bits of the input value. For example, an input<br />

value of 65536 truncates to zero, <strong>and</strong> 262143 truncates to 65535.<br />

Syntax<br />

CALL 'HTONS' USING host-18bit-binary network-short.<br />

Argument In/Out Comments<br />

host-18bit-binary Input 18-bit unsigned fixed-point binary integer in<br />

the range zero to 65535<br />

network-short Output 18-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 16-bit unsigned integer in<br />

network <strong>for</strong>mat<br />

Description<br />

Converts an 18-bit signed one's complement integer in 9-bit bytes to a 16-bit signed<br />

two's complement integer in 8-bit bytes. If the input value is less than -32768,<br />

SHTONS returns -32768. If the input value is greater than 32767, SHTONS returns<br />

32767.<br />

Syntax<br />

CALL 'SHTONS' USING host-18bit-binary network-short.<br />

Argument In/Out Comments<br />

host-18bit-binary Input 18-bit signed fixed-point binary integer in the<br />

range -32768 to 32767<br />

network-short Output 18-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 16-bit signed integer in<br />

network <strong>for</strong>mat<br />

A–6 3843 3744–002


A.3.2. Network-to-Host Functions<br />

NTOHL<br />

SNTOHL<br />

Library hton-ucob/o<br />

This section contains descriptions <strong>for</strong> the network-to-host functions <strong>for</strong> COBOL<br />

programs. These functions assist in passing integer values within the message area.<br />

Description<br />

Converts a 32-bit unsigned integer in 8-bit bytes to a 36-bit integer in 9-bit bytes.<br />

Syntax<br />

CALL 'NTOHL' USING network-long host-36bit-binary.<br />

Argument In/Out Comments<br />

network-long Input 36-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 32-bit unsigned integer in<br />

network <strong>for</strong>mat<br />

host-36bit-binary Output 36-bit unsigned fixed-point binary integer<br />

Description<br />

Converts a 32-bit signed two’s complement integer in 8-bit bytes to a 36-bit signed<br />

one's complement integer in 9-bit bytes.<br />

Syntax<br />

CALL 'SNTOHL' USING network-long host-36bit-binary.<br />

Argument In/Out Comments<br />

network-long Input 36-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 32-bit signed integer in<br />

network <strong>for</strong>mat<br />

host-36bit-binary Output 36-bit signed fixed-point binary integer<br />

3843 3744–002 A–7


Library htondb-ucob/o<br />

NTOHS<br />

SNTOHS<br />

Description<br />

Converts a 16-bit unsigned integer in 8-bit bytes to an 18-bit unsigned integer in 9-bit<br />

bytes.<br />

Syntax<br />

CALL 'NTOHS' USING network-short host-18bit-binary.<br />

Argument In/Out Comments<br />

network-short Input 18-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 16-bit unsigned integer in<br />

network <strong>for</strong>mat<br />

host-18bit-binary Output 18-bit unsigned fixed-point binary integer<br />

Description<br />

Converts a 16-bit signed two's complement integer in 8-bit bytes to an 18-bit signed<br />

one’s complement integer in 9-bit bytes.<br />

Syntax<br />

CALL 'SNTOHS' USING network-short host-18bit-binary.<br />

Argument In/Out Comments<br />

network-short Input 18-bit integer in which the 8 rightmost bits of<br />

each byte <strong>for</strong>m a 16-bit signed integer in<br />

network <strong>for</strong>mat<br />

host-18bit-binary Output 18-bit signed fixed-point binary integer<br />

A.4. Library htondb-ucob/o<br />

The library htondb-ucob/o is compatible with the COBOL language <strong>and</strong> includes the<br />

same routines as the hton-ucob/o library. Use this library when debugging your<br />

application. It verifies that bits are not lost when converting host data to network data<br />

<strong>for</strong> the routines HTONL, HTONS, SHTONL, <strong>and</strong> SHTONS. If the system detects a loss,<br />

it displays a warning message on stdout of the application that is calling the function.<br />

Your application continues to execute; however, data is lost on the receiving end of<br />

the connection.<br />

A–8 3843 3744–002


A.5. Library h9ton8/o<br />

Library h9ton8/o<br />

The library h9ton8/o contains routines that allow user applications to successfully<br />

transmit binary data from one <strong>OS</strong> <strong>2200</strong> plat<strong>for</strong>m to another <strong>OS</strong> <strong>2200</strong> plat<strong>for</strong>m across<br />

an <strong>MQ</strong>Series network, possibly through intermediate non-<strong>OS</strong> <strong>2200</strong> stages.<br />

The library h9ton8/o is compatible with C <strong>and</strong> COBOL languages <strong>and</strong> includes the<br />

following routines a user application can call. Include hton/h in your user application or.<br />

A.5.1. Host-to-Network Function<br />

h9ton8<br />

This function assists in passing binary data within the message area. Include the hton.h<br />

header file to use this function in your C application.<br />

C Prototype<br />

Signed long h9ton8 (void *input, signed long size, void *output)<br />

COBOL Prototype<br />

CALL "H9TON8" USING INPUT, SIZE, OUTPUT, BY REFERENCE STATUS.<br />

(Both SIZE <strong>and</strong> STATUS must be defined as PIC S9(9) COMP-5.)<br />

Description<br />

Converts a 36-bits-per-word input buffer into an output buffer suitable <strong>for</strong><br />

transmission across the network interface. This routine converts each 9-bit byte of<br />

the input buffer to an 8-bit byte by stripping the sign bit (the high order bit) <strong>and</strong><br />

then moving the remaining 8 bits to the output buffer. It then packs the sign bits<br />

<strong>and</strong> places them at the end of the output buffer.<br />

Arguments<br />

input is a pointer to a buffer containing host data to be converted. This buffer<br />

must begin on a word boundary.<br />

size is the size of the input buffer in 9-bit bytes.<br />

output is a pointer to a buffer that contains the re<strong>for</strong>matted data. This buffer must<br />

be 20 percent larger than the input buffer to contain the additional packed sign<br />

bits. This buffer must begin on a word boundary.<br />

Return Value<br />

h9ton8 returns a 36-bit integer that contains the size in bytes of the re<strong>for</strong>matted<br />

output buffer or an error value.<br />

3843 3744–002 A–9


Library h9ton8/o<br />

Error Values<br />

-1 wrong number of arguments<br />

-2 input buffer access failed or input buffer not on word boundary<br />

-3 output buffer access failed or output buffer not on word boundary<br />

A.5.2. Network-to-Host Function<br />

n8toh9<br />

This function assists in passing binary data within the message area. Include the hton.h<br />

header file to use this function in your C application.<br />

C Prototype<br />

Signed long n8toh9 (void *input, signed long size, void *output)<br />

COBOL Prototype<br />

CALL “N8TOH9” USING INPUT, SIZE, OUTPUT, BY REFERENCE STATUS.<br />

(Both SIZE <strong>and</strong> STATUS must be defined as PIC S9(9) COMP-5.)<br />

Description<br />

Converts an input buffer created by h9ton8() back into the original data <strong>for</strong>mat <strong>and</strong><br />

moves it to the output buffer. This routine recombines each byte of the input<br />

buffer with its stripped sign bit (the high-order bit), <strong>and</strong> then moves it to the<br />

output buffer.<br />

Arguments<br />

input is a pointer to a buffer containing h9ton8() data to be converted. This buffer<br />

must begin on a word boundary.<br />

size is the size of the input buffer in bytes.<br />

output is a pointer to a buffer that contains the re<strong>for</strong>matted data. This buffer must<br />

begin on a word boundary.<br />

Return Value<br />

n8toh9 returns a 36-bit integer that contains the size in bytes of the re<strong>for</strong>matted<br />

output buffer or an error value.<br />

Error Values<br />

-1 wrong number of arguments<br />

-2 input buffer access failed or input buffer not on word boundary<br />

-3 output buffer access failed or output buffer not on word boundary<br />

-4 invalid buffer type (not created by h9ton8 function)<br />

-5 invalid buffer size<br />

A–10 3843 3744–002


Appendix B<br />

Sample TX/W<strong>MQ</strong><strong>2200</strong> API Scenarios<br />

<strong>and</strong> Recommendations<br />

This appendix shows the suggested sequence of Open Distributed Transaction<br />

Processing TX verbs <strong>and</strong> W<strong>MQ</strong><strong>2200</strong> application interface verbs. Remember that <strong>for</strong><br />

any put or get call to W<strong>MQ</strong><strong>2200</strong> to be a recoverable part of an Open Distributed<br />

Transaction Processing global transaction, you must use the <strong>MQ</strong>Series Syncpoint<br />

option on the request.<br />

Unisys recommends that the tx_ calls bracket the rest of the calls. In other words,<br />

your client should per<strong>for</strong>m the tx_open <strong>and</strong> tx_begin calls first, then per<strong>for</strong>m service<br />

calls, <strong>and</strong> then per<strong>for</strong>m the tx_commit/tx_rollback <strong>and</strong> tx_close calls. The generalized<br />

sequence of calls <strong>for</strong> a client application would then be<br />

tx_open<br />

tx_begin<br />

. . .<br />

XATMI call (<strong>for</strong> example, tpcall or tpacall) or <strong>MQ</strong>I calls (<strong>for</strong> example,<br />

<strong>MQ</strong>CONN, <strong>MQ</strong>OPEN, <strong>MQ</strong>PUT/<strong>MQ</strong>GET, <strong>MQ</strong>CL<strong>OS</strong>E, <strong>MQ</strong>DISC)<br />

XATMI call (<strong>for</strong> example, tpcall or tpacall) or <strong>MQ</strong>I calls (<strong>for</strong> example,<br />

<strong>MQ</strong>CONN, <strong>MQ</strong>OPEN, <strong>MQ</strong>PUT/<strong>MQ</strong>GET, <strong>MQ</strong>CL<strong>OS</strong>E, <strong>MQ</strong>DISC)<br />

XATMI call (<strong>for</strong> example, tpcall or tpacall) or <strong>MQ</strong>I calls (<strong>for</strong> example,<br />

<strong>MQ</strong>CONN, <strong>MQ</strong>OPEN, <strong>MQ</strong>PUT/<strong>MQ</strong>GET, <strong>MQ</strong>CL<strong>OS</strong>E, <strong>MQ</strong>DISC)<br />

. . .<br />

tx_commit/tx_rollback<br />

tx_close<br />

The XATMI <strong>and</strong> <strong>MQ</strong>I calls can occur in any order, depending on your business<br />

application logic needs. Unisys recommends this generalized sequence because it<br />

corresponds most closely to a st<strong>and</strong>ard transaction processing multi-tier architecture<br />

<strong>and</strong> is the cleanest approach.<br />

3843 3744–002 B–1


Sample TX/W<strong>MQ</strong><strong>2200</strong> API Scenarios <strong>and</strong> Recommendations<br />

Transaction Manager (TM) Guidelines<br />

Important <strong>MQ</strong>Series XA rules regarding use of Open Distributed Transaction<br />

Processing with W<strong>MQ</strong><strong>2200</strong> <strong>for</strong> TX/<strong>MQ</strong>S API sequences include<br />

• The xa_info structure passed on any xa_open call by the TM includes the name of<br />

a non-default queue manager. If xa_info is left blank, <strong>MQ</strong>Series invokes the default<br />

queue manager.<br />

• Only one queue manager at a time can participate in a transaction coordinated by<br />

an external TM.<br />

• Applications calling an external TM can connect only to the queue manager<br />

participating in the transaction.<br />

• The queue manager that is participating in a transaction must be started be<strong>for</strong>e<br />

the transaction starts.<br />

B–2 3843 3744–002


Appendix C<br />

Editing W<strong>MQ</strong><strong>2200</strong> QProcessor Files<br />

Occasionally you might need to modify a text file that provides configuration<br />

in<strong>for</strong>mation to W<strong>MQ</strong><strong>2200</strong>. These files are physically located on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor, so direct editing of a file is not allowed. This appendix describes how to<br />

use the TED line editor <strong>for</strong> editing a file.<br />

TED is a line editor that contains functionality similar to that of line oriented editors<br />

such as the @ED processor in the <strong>OS</strong> <strong>2200</strong> environment. Care must be taken to edit<br />

only text files because displaying a binary file can cause strange behavior with some<br />

terminal emulators.<br />

To get out of insert mode <strong>and</strong> back to comm<strong>and</strong> mode use @EOF. The @EOF sends<br />

CTRL-D to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Note: You can only edit files in your current working directory. For example, if you<br />

want to update mqs.ini, you cannot use ted /var/mqm/mqs.ini, instead use cd<br />

/var/mqm/ followed by ted mqs.ini.<br />

Format<br />

ted [-p] [-s] file<br />

Options<br />

-s Suppress diagnostics.<br />

-p Specifies a comm<strong>and</strong> prompt.<br />

file Is the file to be read.<br />

Example 1<br />

Change LogSecondaryFiles from 2 to 6 in qm.ini<br />

>@wmq$*mqs$exe.unx<br />

>cd /var/mqm/qmgrs/logqm<br />

>ted qm.ini<br />

-1100<br />

>,s/LogSecondaryFiles=2/LogSecondaryFiles=6/g<br />

>@eof<br />

-?<br />

>wq<br />

-1100<br />

3843 3744–002 C–1


In the above example, LogSecondaryFiles is changed from 2 to 6.<br />

Example 2<br />

Create a new file using TED <strong>and</strong> append content<br />

>ted<br />

>a<br />

>new file has been created.<br />

>@eof<br />

>wq file1.txt<br />

-27<br />

Editing W<strong>MQ</strong><strong>2200</strong> QProcessor Files<br />

The above example creates a new file called file1.txt with the content “new file has<br />

been created.”<br />

Example 3<br />

TED Options<br />

Insert text into file1.txt that was created in example 2.<br />

>ted file1.txt<br />

>i<br />

testing "I" comm<strong>and</strong> <strong>for</strong> ted.<br />

@eof<br />

wq<br />

The following lists some of the TED options:<br />

-s Suppress diagnostics.<br />

-p Specifies a comm<strong>and</strong> prompt. The p option can be used to<br />

toggle on <strong>and</strong> off.<br />

file Indicates the name of the file to be processed.<br />

C–2 3843 3744–002


Editing W<strong>MQ</strong><strong>2200</strong> QProcessor Files<br />

TED Comm<strong>and</strong>s<br />

The following table lists some of the TED comm<strong>and</strong>s.<br />

Table C–1. TED Comm<strong>and</strong>s<br />

Comm<strong>and</strong> Description<br />

(.) a Appends text to the file as an input mode.<br />

(.,.) c Changes lines in the file as an input mode.<br />

(.,.) d Deletes addressed lines from file.<br />

(.) i Inserts text into the file be<strong>for</strong>e the current line as an input<br />

mode.<br />

(.,.) m (.) Moves lines in the file.<br />

q Quits TED editor.<br />

($) r file Reads file in<strong>for</strong>mation. The default file name is used if a file<br />

name is not specified.<br />

(.,.)s/old/new/g Globally replaces old with new. If ‘g’ is not specified, only<br />

the first occurrence will be replaced.<br />

u Undo the last per<strong>for</strong>med comm<strong>and</strong>.<br />

w file Writes the content to the file.<br />

wq file Writes the content to the file <strong>and</strong> then quits the TED editor.<br />

W file Appends the content to the end of the file.<br />

($)= Displays the line number of the file.<br />

3843 3744–002 C–3


Editing W<strong>MQ</strong><strong>2200</strong> QProcessor Files<br />

C–4 3843 3744–002


Appendix D<br />

Restrictions <strong>and</strong> Known Limitations<br />

The following are the concepts <strong>and</strong> objects that are part of the <strong>WebSphere</strong> <strong>MQ</strong> family<br />

of products but are not supported or are restricted in W<strong>MQ</strong><strong>2200</strong> 6R1:<br />

• Using W<strong>MQ</strong><strong>2200</strong> as a dynamic resource manager (RM).<br />

• FASTPATH <strong>for</strong> user-written applications.<br />

• <strong>MQ</strong>BEGIN <strong>MQ</strong>I call <strong>for</strong> global units of work; Open Distributed Transaction<br />

Processing is required <strong>for</strong> resource manager coordination.<br />

• <strong>MQ</strong>CMIT <strong>and</strong> <strong>MQ</strong>BACK <strong>MQ</strong>I calls used with global units of work (with <strong>MQ</strong>BEGIN),<br />

with <strong>MQ</strong>S<strong>2200</strong> functioning as the coordinating transaction manager.<br />

• -i option of the dspmqtrn comm<strong>and</strong>.<br />

• -a <strong>and</strong> -r options of the rsvmqtrn comm<strong>and</strong>.<br />

• W<strong>MQ</strong> does not support the <strong>MQ</strong>I <strong>MQ</strong>ZEP comm<strong>and</strong> (<strong>for</strong> adding a component entry<br />

point <strong>for</strong> pluggable naming <strong>and</strong> authorization services).<br />

• <strong>MQ</strong>CNO Version 1 is supported <strong>for</strong> the <strong>MQ</strong>CONNX <strong>MQ</strong>I call. The <strong>MQ</strong>CNO options<br />

flags <strong>MQ</strong>CNO_HANDLE_SHARE_BLOCK, <strong>MQ</strong>CNO_HANDLE_SHARE_NO_BLOCK,<br />

<strong>and</strong> <strong>MQ</strong>CNO_FASTPATH_BINDING are accepted but ignored.<br />

• A distribution list cannot be larger than 500 items.<br />

• The maximum message size supported is 100 megabytes.<br />

• Exit code must be deployed on the <strong>OS</strong> <strong>2200</strong> QProcessor. Exit code running on the<br />

<strong>OS</strong> <strong>2200</strong> is not supported. If data conversion exits are currently being used to<br />

convert multi-byte data, the conversions must be done in the user application on<br />

the <strong>OS</strong> <strong>2200</strong> be<strong>for</strong>e sending or after receiving the message.<br />

• The <strong>OS</strong> <strong>2200</strong> auditing of <strong>MQ</strong> data is not currently supported. This implies no IRU<br />

dumps <strong>and</strong> restoration of the container files.<br />

• <strong>WebSphere</strong> <strong>MQ</strong> structures <strong>MQ</strong>RMH (bulk message header), <strong>MQ</strong>AIR<br />

(authentication header <strong>for</strong> the <strong>MQ</strong>I client), <strong>MQ</strong>CSP (authentication header), <strong>and</strong><br />

<strong>MQ</strong>SCO (SSL configuration structure), <strong>MQ</strong>CIH (CICS header) <strong>and</strong> <strong>MQ</strong>WIH (work<br />

info header) are not supported in <strong>OS</strong> <strong>2200</strong> user applications.<br />

• Simple Object Access Protocol (SOAP) is not supported.<br />

3843 3744–002 D–1


Restrictions <strong>and</strong> Known Limitations<br />

• The <strong>WebSphere</strong> <strong>MQ</strong> client library is not available on the <strong>OS</strong> <strong>2200</strong>.<br />

• C++ applications are not supported on the <strong>OS</strong> <strong>2200</strong>.<br />

• TCP/IP is the only supported communications protocol <strong>for</strong> channels. The LU6.2<br />

protocol is not supported.<br />

• The W<strong>MQ</strong><strong>2200</strong> product has not been validated <strong>for</strong> message recovery in an XTC<br />

environment on a remote or alternate host.<br />

• Restricted mode queue managers (application groups) are not supported.<br />

D–2 3843 3744–002


Appendix E<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative<br />

Utility<br />

E.1. The Daemon Administrative Utility<br />

The daemon administrative utility allows console operators <strong>and</strong> users at dem<strong>and</strong><br />

terminals having console keyin privileges to send administrative comm<strong>and</strong>s to the<br />

W<strong>MQ</strong><strong>2200</strong> system. Daemon is a background process that fields keyin requests, takes<br />

action on those requests, <strong>and</strong> responds to the requestor. It also creates API<br />

connection between the <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

E.1.1. Starting the Daemon Utility<br />

Be<strong>for</strong>e starting daemon keyin, make sure the user ID starting it has security privileges<br />

to allow it to use the Executive request (ER) KEYIN$. To start the daemon utility, refer<br />

to the following example:<br />

Example<br />

>@W<strong>MQ</strong>$<strong>MQ</strong>S$EXE.STARTUP<br />

>Daemon started successfully.<br />

>Daemon connected to QProcessor successfully!<br />

>API is ready <strong>for</strong> use.<br />

The daemon utility begins to run in the background. The batch user ID is W<strong>MQ</strong> by<br />

default.<br />

Note: The programs will not be able to connect to the <strong>OS</strong> <strong>2200</strong> QProcessor if the<br />

daemon run is not started.<br />

E.1.2. Using the Daemon Keyin<br />

The daemon keyin is used to send administrative comm<strong>and</strong>s from the system console<br />

or from a dem<strong>and</strong> terminal that has console keyin privileges. All input is converted to<br />

uppercase. If you want to use daemon to administer your W<strong>MQ</strong><strong>2200</strong> system, use only<br />

uppercase.<br />

Format<br />

@@CONS keyin-id comm<strong>and</strong>[,option] [parameters]<br />

3843 3744–002 E–1


W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

Parameters<br />

keyin-id is the keyin prefix configured <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> administrative background<br />

run, DaemonKeyId. The default is W<strong>MQ</strong>, but you can configure W<strong>MQ</strong><strong>2200</strong> to use a<br />

different keyin prefix. Refer to Section 2, "<strong>Installation</strong> <strong>and</strong> Configuration," <strong>for</strong> more<br />

in<strong>for</strong>mation.<br />

comm<strong>and</strong> is one of the following comm<strong>and</strong>s:<br />

APISTATUS Prints W<strong>MQ</strong><strong>2200</strong> subsystem status <strong>and</strong> API connection<br />

in<strong>for</strong>mation.<br />

CORE Generates a W<strong>MQ</strong><strong>2200</strong> subsystem core dump <strong>for</strong> debugging.<br />

DOWN Disconnects the W<strong>MQ</strong><strong>2200</strong> subsystem from the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

FORCE STOP Same as SHUTDOWN, except that it also terminates the connect<br />

to the <strong>OS</strong> <strong>2200</strong> QProcessor even if there are connected <strong>MQ</strong><br />

activities.<br />

HELP Displays valid keyins or provides help with a specific keyin if<br />

specified.<br />

ICLOG Adjusts the Interconnect log/trace level.<br />

<strong>MQ</strong>LOG Adjusts the W<strong>MQ</strong><strong>2200</strong> subsystem log/trace level.<br />

OHIGH Changes the maximum number of activities allowed to use the<br />

W<strong>MQ</strong><strong>2200</strong> API at any given time.<br />

OLOW Changes the minimum number of servicing applications.<br />

SHUTDOWN Shuts down the W<strong>MQ</strong><strong>2200</strong> daemon background run.<br />

START* Starts one queue manager or all created queue managers.<br />

STATS Used to turn on <strong>and</strong> off statistics on current API usage.<br />

STATUS* Shows active <strong>and</strong> inactive queue managers, or displays more<br />

detailed in<strong>for</strong>mation.<br />

TERM* Terminates one queue manager or all queue managers.<br />

UP Enables API <strong>for</strong> use.<br />

VERSION* Displays the current version of the software.<br />

Note: * indicates a comm<strong>and</strong> previously supported through the <strong>MQ</strong>Admin<br />

<strong>Administration</strong> Utility.<br />

option specifies an option on the comm<strong>and</strong>. For details, see the following in<strong>for</strong>mation<br />

blocks.<br />

parameters are optional parameters available <strong>for</strong> some comm<strong>and</strong>s, as noted below.<br />

E–2 3843 3744–002


APISTATUS<br />

CORE<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

The comm<strong>and</strong> displays in<strong>for</strong>mation about the current W<strong>MQ</strong><strong>2200</strong> subsystem <strong>and</strong> API<br />

background daemon status.<br />

Format<br />

@@CONS keyin-id APISTATUS<br />

Example<br />

>@@CONS W<strong>MQ</strong> APISTATUS<br />

This responds with output similar to the following:<br />

STATUS:<br />

-------------------------------<br />

Connection Status: Connected<br />

Configuration:<br />

QProcessor IP/Hostname: 192.63.222.48<br />

QProcessor Port: 22719<br />

RealTime Level: 0<br />

API trace: Enabled<br />

API log level (<strong>OS</strong><strong>2200</strong>): <strong>MQ</strong>_VERB<strong>OS</strong>E<br />

IC log level (<strong>OS</strong><strong>2200</strong>): IC_VERB<strong>OS</strong>E<br />

IC log level (QProc): IC_VERB<strong>OS</strong>E<br />

Offloads In Use: 1<br />

Low Offload Count: 100<br />

High Offload Count: 100<br />

Max Offload Count: 1000<br />

Statistics: Disabled<br />

Automatic Reconnect: Yes<br />

Currently Retrying: No<br />

Reconnect Interval: 4<br />

IC Version: 18<br />

Build Level: 1922<br />

The comm<strong>and</strong> generates a diagnostic dump of the W<strong>MQ</strong><strong>2200</strong> subsystem.<br />

Format<br />

@@CONS keyin-id CORE<br />

Example<br />

>@@CONS W<strong>MQ</strong> CORE<br />

This responds with output similar to the following:<br />

User requested <strong>MQ</strong> core request completed.<br />

3843 3744–002 E–3


W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

DOWN<br />

This terminates the connection with the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>and</strong> disables the API link<br />

in the <strong>OS</strong> <strong>2200</strong> QProcessor. The UNX shell processor is not affected by the DOWN<br />

keyin <strong>and</strong> continues to function. Only the <strong>OS</strong> <strong>2200</strong> user application connectivity with<br />

the <strong>WebSphere</strong> <strong>MQ</strong> API is affected. This is an administrative way to stop all<br />

<strong>WebSphere</strong> <strong>MQ</strong> API activity between <strong>OS</strong> <strong>2200</strong> <strong>and</strong> the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Format<br />

@@CONS keyin-id DOWN<br />

Example<br />

FORCE STOP<br />

>@@CONS W<strong>MQ</strong> DOWN<br />

This responds with output similar to the following:<br />

Attempting to down IC - please wait.<br />

This may take a minute if there are <strong>MQ</strong> activities.<br />

IC disconnected from QProcessor.<br />

Automatic reconnects are now disabled.<br />

Or the following message appears if the IC is down already:<br />

IC already disconnected.<br />

This comm<strong>and</strong> is same as the SHUTDOWN keyin, except it shuts down the daemon<br />

<strong>and</strong> terminates the connection to the <strong>OS</strong> <strong>2200</strong> QProcessor even if there are<br />

connected <strong>MQ</strong> activities (like trigger monitors) using the connection to communicate<br />

with the <strong>OS</strong> <strong>2200</strong> system.<br />

Format<br />

@@CONS keyin-id FORCE STOP<br />

Example<br />

>@@CONS W<strong>MQ</strong> FORCE STOP<br />

This responds with output similar to the following:<br />

> W<strong>MQ</strong>$ daemon terminating.<br />

> Daemon may take a minute to end.<br />

> W<strong>MQ</strong>$ daemon terminated.<br />

E–4 3843 3744–002


HELP<br />

ICLOG<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

This comm<strong>and</strong> lists valid keyin comm<strong>and</strong>s that the daemon accepts or displays usage<br />

<strong>for</strong> a specific comm<strong>and</strong> if requested.<br />

Format<br />

@@CONS keyin-id HELP [comm<strong>and</strong>]<br />

Examples<br />

The following example displays a list of the available comm<strong>and</strong>s:<br />

>@@CONS W<strong>MQ</strong> HELP<br />

The following example displays help in<strong>for</strong>mation about APISTATUS comm<strong>and</strong>:<br />

>@@CONS W<strong>MQ</strong> HELP APISTATUS<br />

This comm<strong>and</strong> alters the level of verbosity in logging or tracing in the Interconnect<br />

library code <strong>and</strong> possibly the W<strong>MQ</strong><strong>2200</strong> offload code running on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor, depending on what ICLOG level you change.<br />

If you change only the <strong>OS</strong> <strong>2200</strong> ICLOG level, it affects the Interconnect library code<br />

<strong>and</strong> the W<strong>MQ</strong><strong>2200</strong> offload code running on the <strong>OS</strong> <strong>2200</strong> QProcessor. If you change<br />

the <strong>OS</strong> <strong>2200</strong> QProcessor ICLOG level, it affects the Interconnect library code <strong>and</strong><br />

possibly the W<strong>MQ</strong><strong>2200</strong> offload code running on the <strong>OS</strong> <strong>2200</strong> QProcessor. You can<br />

also change both the <strong>OS</strong> <strong>2200</strong> Interconnect library, <strong>OS</strong> <strong>2200</strong> QProcessor Interconnect<br />

library, <strong>and</strong> <strong>MQ</strong> service offload program log levels at the same time.<br />

Format<br />

<strong>MQ</strong>S ICLOG [component] <br />

Valid levels are:<br />

LOG ONLY<br />

AUDIT<br />

DEBUG<br />

VERB<strong>OS</strong>E<br />

The levels () are listed in order of least to most verbose. The LOG ONLY level<br />

only generates logs to the DDP log file. All other levels generate traces in increasing<br />

verbosity to the DDP trace file. The LOG ONLY level must be used normally, unless<br />

you need to use trace to debug a problem.<br />

3843 3744–002 E–5


W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

<strong>MQ</strong>LOG<br />

Valid optional components are:<br />

• BOTH – Default, log level <strong>for</strong> the <strong>OS</strong><strong>2200</strong>, Linux IC <strong>and</strong> offload log level are<br />

changed.<br />

• <strong>2200</strong> – Only <strong>OS</strong><strong>2200</strong> IC log level is changed.<br />

• LINUX – Only the Linux IC log level <strong>and</strong> offload program log level is changed<br />

Examples<br />

The following message appears if you specify a valid log level <strong>and</strong> no component:<br />

>@@CONS W<strong>MQ</strong> ICLOG VERB<strong>OS</strong>E<br />

Log level changed to IC_VERB<strong>OS</strong>E.<br />

The following message appears if you specify a valid log level <strong>and</strong> a component:<br />

>@@CONS W<strong>MQ</strong> ICLOG <strong>2200</strong> DEBUG<br />

Log level changed to IC_DEBUG.<br />

This comm<strong>and</strong> alters the <strong>MQ</strong>LOG level, the level of verbosity in logging or tracing <strong>for</strong><br />

W<strong>MQ</strong><strong>2200</strong> only.<br />

Format<br />

@@CONS keyin-id <strong>MQ</strong>LOG <br />

Valid levels are:<br />

LOG ONLY<br />

AUDIT<br />

DEBUG<br />

VERB<strong>OS</strong>E<br />

The levels () are listed in order of least to most verbose. The LOG ONLY level<br />

only generates logs to the DDP log file. All other levels generate traces in increasing<br />

verbosity to the DDP trace file. The LOG ONLY level must be used normally, unless<br />

you need to use trace to debug a problem.<br />

Example<br />

>@@CONS W<strong>MQ</strong> <strong>MQ</strong>LOG LOG ONLY<br />

Log level changed to <strong>MQ</strong>_LOG_ONLY<br />

E–6 3843 3744–002


OHIGH<br />

OLOW<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

This comm<strong>and</strong> alters the high offload count in the Interconnect. This number cannot<br />

be larger than the offload max value which can be displayed with the APISTATUS<br />

comm<strong>and</strong>. This controls the number of <strong>OS</strong><strong>2200</strong> activities that can use the API link to<br />

the <strong>OS</strong> <strong>2200</strong> QProcessor at the same time.<br />

Format<br />

@@CONS keyin-id OHIGH <br />

Example<br />

>@@CONS W<strong>MQ</strong> OHIGH 200<br />

Changed offload high count to 200<br />

This comm<strong>and</strong> alters the low offload count in the Interconnect. This defines the<br />

lowest number of offloads to keep running on the <strong>OS</strong> <strong>2200</strong> QProcessor to service<br />

<strong>OS</strong> <strong>2200</strong> activities. If the number is too low, new service processes on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor need to be started dynamically to h<strong>and</strong>le the extra load.<br />

Format<br />

@@CONS keyin-id OLOW <br />

Example<br />

SHUTDOWN<br />

>@@CONS W<strong>MQ</strong> OLOW 80<br />

Changed offload low count to 80<br />

This comm<strong>and</strong> terminates the DAEMON background process itself.<br />

Format<br />

@@CONS keyin-id SHUTDOWN<br />

Example<br />

>@@CONS W<strong>MQ</strong> SHUTDOWN<br />

This responds with output similar to the following:<br />

> W<strong>MQ</strong>$ daemon terminating.<br />

> Daemon may take a minute to end.<br />

> W<strong>MQ</strong>$ daemon terminated.<br />

3843 3744–002 E–7


W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

START<br />

STATS<br />

This comm<strong>and</strong> starts one queue manager or starts every queue manager that has<br />

been created within your W<strong>MQ</strong><strong>2200</strong> system.<br />

Note: The <strong>MQ</strong>Authority parameter determines whether OAM is enabled <strong>for</strong> a<br />

queue manager when it was created. Refer to Section 2, "<strong>Installation</strong> <strong>and</strong><br />

Configuration," <strong>for</strong> more in<strong>for</strong>mation.<br />

Formats<br />

@@CONS keyin-id START queuemanager<br />

@@CONS keyin-id START ALL<br />

Parameter<br />

queuemanager is the name of a specific queue manager you want to start.<br />

Examples<br />

The following example starts the queue manager named QM1.<br />

>@@CONS W<strong>MQ</strong> START QM1<br />

The following example starts all queue managers that were created using the crtmqm<br />

comm<strong>and</strong>, but which are not currently started.<br />

>@@CONS W<strong>MQ</strong> START ALL<br />

This comm<strong>and</strong> displays the current API statistics, if enabled. Statistics can be gathered<br />

in W<strong>MQ</strong><strong>2200</strong> to track the level of activity.<br />

Format<br />

@@CONS keyin-id STATS<br />

Example<br />

>@@CONS W<strong>MQ</strong> STATS<br />

The following message appears if statistics are currently disabled:<br />

Statistics are disabled.<br />

E–8 3843 3744–002


STATS ON<br />

This comm<strong>and</strong> turns on W<strong>MQ</strong><strong>2200</strong> API usage statistics.<br />

Format<br />

@@CONS keyin-id STATS ON<br />

Example<br />

STATS OFF<br />

>@@CONS W<strong>MQ</strong> STATS ON<br />

Statistics enabled.<br />

This comm<strong>and</strong> turns off W<strong>MQ</strong><strong>2200</strong> API usage statistics.<br />

Format<br />

@@CONS keyin-id STATS OFF<br />

Example<br />

STATS RESET<br />

STATUS<br />

>@@CONS W<strong>MQ</strong> STATS OFF<br />

Statistics disabled.<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

This comm<strong>and</strong> resets all W<strong>MQ</strong><strong>2200</strong> API usage statistics counters to zero.<br />

Format<br />

@@CONS keyin-id STATS RESET<br />

Example<br />

>@@CONS W<strong>MQ</strong> STATS RESET<br />

Statistics cleared.<br />

This comm<strong>and</strong> retrieves in<strong>for</strong>mation about your queue managers within your<br />

W<strong>MQ</strong><strong>2200</strong> system.<br />

Formats<br />

@@CONS keyin-id STATUS<br />

@@CONS keyin-id STATUS queuemanager CHANNEL(genericchannelname)<br />

[parameters]<br />

@@CONS keyin-id STATUS queuemanager CHSTATUS(genericchannelname)<br />

[parameters]<br />

3843 3744–002 E–9


W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

@@CONS keyin-id STATUS queuemanager PROCESS(genericprocessname)<br />

[parameters]<br />

@@CONS keyin-id STATUS queuemanager QMGR [parameters]<br />

@@CONS keyin-id STATUS queuemanager QUEUE(genericqname) [parameters]<br />

Parameters<br />

queue manager is the name of a specific queue manager <strong>for</strong> which you want to get<br />

in<strong>for</strong>mation.<br />

generic channel name is the name of the channel <strong>for</strong> which definition or status<br />

in<strong>for</strong>mation is to be displayed.<br />

generic process name is the name of the process definition to be displayed.<br />

generic q name is the name of the queue definition to be displayed.<br />

Note: The designators generic channel name, generic process name, <strong>and</strong> generic q<br />

name can also be used to designate multiple channels, processes, or queues,<br />

respectively. Refer to the st<strong>and</strong>ard <strong>MQ</strong>Series documentation <strong>for</strong> in<strong>for</strong>mation on the<br />

various <strong>MQ</strong>SC DISPLAY comm<strong>and</strong>s.<br />

parameters are optional parameters available <strong>for</strong> some of the STATUS comm<strong>and</strong><br />

<strong>for</strong>mats. See “Parameters” at the beginning of this section <strong>for</strong> an explanation of the<br />

parameters.<br />

The following simple <strong>for</strong>mat displays the status of each queue manager currently<br />

created in your W<strong>MQ</strong><strong>2200</strong> system:<br />

>@@CONS keyin-id STATUS<br />

This responds with output similar to the following:<br />

Queue manager status in<strong>for</strong>mation<br />

--------------------------------<br />

Running:QM1<br />

Running:QM2<br />

Ended immediately:QM3<br />

The complex <strong>for</strong>ms of the W<strong>MQ</strong><strong>2200</strong> STATUS comm<strong>and</strong> correspond directly to<br />

various st<strong>and</strong>ard <strong>MQ</strong>Series comm<strong>and</strong> interface (<strong>MQ</strong>SC) DISPLAY comm<strong>and</strong>s. For<br />

example,<br />

>@@CONS keyin-id STATUS queuemanager QUEUE(genericqname) [parameters]<br />

is functionally equivalent to<br />

>DISPLAY QUEUE(genericqname) [parameters]<br />

E–10 3843 3744–002


Examples<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

The following examples list the STATUS comm<strong>and</strong>, then the equivalent DISPLAY<br />

comm<strong>and</strong>, followed by an example of the output.<br />

>@@CONS W<strong>MQ</strong> STATUS QM3 QMGR (display queue manager attributes<br />

<strong>for</strong> QM3)<br />

>runmqsc QM3<br />

>display qmgr<br />

A<strong>MQ</strong>8408: Display Queue Manager details.<br />

QMNAME(QM3) ACCTCONO(DISABLED)<br />

ACCTINT(1800) ACCT<strong>MQ</strong>I(OFF)<br />

ACCTQ(OFF) ACTIVREC(MSG)<br />

ALTDATE(2009-03-31) ALTTIME(16.38.45)<br />

AUTHOREV(DISABLED) CCSID(1208)<br />

CHAD(DISABLED) CHADEV(DISABLED)<br />

CHADEXIT( ) CHLEV(DISABLED)<br />

CLWLDATA( ) CLWLEXIT( )<br />

CLWLLEN(100) CLWLMRUC(999999999)<br />

CLWLUSEQ(LOCAL) CMDLEVEL(600)<br />

COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE) CRDATE(2009-03-31)<br />

CRTIME(16.38.45) DEADQ( )<br />

DEFXMITQ( ) DESCR( )<br />

DISTL(YES) INHIBTEV(DISABLED)<br />

IPADDRV(IPV4) LOCALEV(DISABLED)<br />

LOGGEREV(DISABLED) MAXHANDS(256)<br />

MAXMSGL(4194304) MAXPRTY(9)<br />

MAXUMSGS(10000) MONACLS(QMGR)<br />

MONCHL(OFF) MONQ(OFF)<br />

PERFMEV(DISABLED) PLATFORM(UNIX)<br />

QMID(QM3_2009-03-31_16.38.45) REMOTEEV(DISABLED)<br />

REP<strong>OS</strong>( ) REP<strong>OS</strong>NL( )<br />

ROUTEREC(MSG) SCHINIT(QMGR)<br />

SCMDSERV(QMGR) SSLCRLNL( )<br />

SSLCRYP( ) SSLEV(DISABLED)<br />

SSLFIPS(NO)<br />

SSLKEYR(/var/mqm/qmgrs/QM3/ssl/key)<br />

SSLRKEYC(0) STATACLS(QMGR)<br />

STATCHL(OFF) STATINT(1800)<br />

STAT<strong>MQ</strong>I(OFF) STATQ(OFF)<br />

STRSTPEV(ENABLED) SYNCPT<br />

TRIGINT(999999999)<br />

>@@CONS W<strong>MQ</strong> STATUS QM1 QUEUE(QUEUE1) TRIGGER,TRIGDPTH (display<br />

whether<br />

triggers are<br />

active,<br />

>runmqsc QM1 <strong>and</strong> the trigger<br />

>display queue(QUEUE1) trigger,trigdpth depth, <strong>for</strong><br />

queue QUEUE1 in<br />

queue manager<br />

QM1)<br />

3843 3744–002 E–11


W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(QUEUE1) NOTRIGGER<br />

TRIGDPTH(1)<br />

>@@CONS W<strong>MQ</strong> STATUS QM2 QUEUE(*) TYPE(QLOCAL) CURDEPTH (display the<br />

Current depth<br />

<strong>for</strong> all local<br />

>runmqsc QM2 queues in queue<br />

>display queue(*) type(qlocal) curdepth manager QM2)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.ADMIN.CHANNEL.EVENT) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.ADMIN.COMMAND.QUEUE) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.ADMIN.PERFM.EVENT) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.ADMIN.QMGR.EVENT) CURDEPTH(1)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.CHANNEL.INITQ) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.CHANNEL.SYNCQ) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.CICS.INITIATION.QUEUE) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.CLUSTER.COMMAND.QUEUE) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.CLUSTER.REP<strong>OS</strong>ITORY.QUEUE)<br />

CURDEPTH(1)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.CLUSTER.TRANSMIT.QUEUE) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.DEAD.LETTER.QUEUE) CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.DEFAULT.INITIATION.QUEUE)<br />

CURDEPTH(0)<br />

A<strong>MQ</strong>8409: Display Queue details.<br />

QUEUE(SYSTEM.DEFAULT.LOCAL.QUEUE) CURDEPTH(0)<br />

For further in<strong>for</strong>mation on using the complex <strong>for</strong>ms of the STATUS comm<strong>and</strong>, refer to<br />

the st<strong>and</strong>ard <strong>MQ</strong>Series documentation <strong>for</strong> the <strong>MQ</strong>SC comm<strong>and</strong>s DISPLAY CHANNEL,<br />

DISPLAY CHSTATUS, DISPLAY PROCESS, DISPLAY QMGR, <strong>and</strong> DISPLAY QUEUE.<br />

E–12 3843 3744–002


TERM<br />

UP<br />

This comm<strong>and</strong> terminates one or all queue managers.<br />

Formats<br />

@@CONS keyin-id TERM[,option] queue-manager<br />

@@CONS keyin-id TERM[,option] ALL<br />

Parameters<br />

W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

option is a single letter denoting the type of termination to per<strong>for</strong>m on the queue<br />

manager or queue managers. It corresponds to the -c, -i, <strong>and</strong> -p options on the control<br />

comm<strong>and</strong> endmqm <strong>and</strong> is available through the UNX interface:<br />

C Controlled (or quiesced) shutdown (default)<br />

I Immediate shutdown<br />

P Preemptive shutdown<br />

queue-manager is the name of a specific queue manager you want to terminate.<br />

Examples<br />

The following example terminates a single, named queue manager with immediate<br />

shutdown.<br />

>@@CONS W<strong>MQ</strong> TERM,I QM1<br />

The following example terminates all started queue managers with a controlled<br />

shutdown.<br />

>@@CONS W<strong>MQ</strong> TERM ALL<br />

This comm<strong>and</strong> reconnects the API daemon to the <strong>OS</strong> <strong>2200</strong> QProcessor after the<br />

connection has been terminated with a DOWN keyin or was lost because of an error.<br />

Format<br />

@@CONS keyin-id UP<br />

Example<br />

>@@CONS W<strong>MQ</strong> UP<br />

The output depends on whether the connection to <strong>OS</strong> <strong>2200</strong> QProcessor is already<br />

active or not <strong>and</strong> whether the attempt to connect succeeds.<br />

3843 3744–002 E–13


W<strong>MQ</strong><strong>2200</strong> Daemon Administrative Utility<br />

VERSION<br />

This comm<strong>and</strong> displays in<strong>for</strong>mation about the version of W<strong>MQ</strong><strong>2200</strong> you are using.<br />

Format<br />

@@CONS keyin-id VERSION<br />

Example<br />

>@@CONS W<strong>MQ</strong> VERSION<br />

This responds with output similar to the following:<br />

Websphere <strong>MQ</strong> Version: 6.0.2.8<br />

Unisys release: 6R1<br />

Internal level: 1682<br />

Linux Host: ustr-stampede<br />

<strong>OS</strong><strong>2200</strong> Host: RS18<br />

E–14 3843 3744–002


Appendix F<br />

UNX Shell<br />

F.1. Using the UNX Shell<br />

The UNX shell is an <strong>OS</strong> <strong>2200</strong> program that allows <strong>OS</strong> <strong>2200</strong> users to administer <strong>and</strong><br />

manage W<strong>MQ</strong><strong>2200</strong>. It includes<br />

• Linux comm<strong>and</strong>s to traverse the file system <strong>and</strong> query system in<strong>for</strong>mation<br />

• <strong>WebSphere</strong> <strong>MQ</strong> administrative comm<strong>and</strong>s to administer <strong>and</strong> manage <strong>WebSphere</strong><br />

<strong>MQ</strong> <strong>and</strong> various utilities.<br />

UNX shell comm<strong>and</strong>s can be run in a dem<strong>and</strong> session or included in batch runstreams.<br />

The <strong>for</strong>mat of the UNX program is as follows:<br />

*<strong>MQ</strong>S$EXE.UNX<br />

Where QUAL is the qualifier used <strong>for</strong> W<strong>MQ</strong><strong>2200</strong> files. The default is W<strong>MQ</strong>$.<br />

Throughout this book, the W<strong>MQ</strong>$ qualifier is used on all examples.<br />

The <strong>OS</strong> <strong>2200</strong> user ID that runs the UNX shell must be mapped to an <strong>OS</strong> <strong>2200</strong><br />

QProcessor user <strong>and</strong> group. This can be done using the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

<strong>Administration</strong> Console Manage User Mappings module as described in section 3.<br />

Depending on the <strong>OS</strong> <strong>2200</strong> QProcessor group association, some UNX comm<strong>and</strong>s<br />

might not be available. In order to access the complete set of UNX comm<strong>and</strong>s, ensure<br />

the <strong>OS</strong> <strong>2200</strong> user ID is mapped to the <strong>OS</strong> <strong>2200</strong> QProcessor local mqm group.<br />

F.2. Using the Asterisk in the UNX Shell<br />

When using an asterisk in the UNX shell, you must surround it with quotes or use a<br />

backslash (\) escape sequence when it is an option given to a <strong>WebSphere</strong> <strong>MQ</strong> control<br />

comm<strong>and</strong>. However, when you use the asterisk as a wildcard character to UNX<br />

comm<strong>and</strong>s that interact with files, such as the ‘cat’ comm<strong>and</strong>, you cannot use the<br />

quotes or escape sequence.<br />

Examples<br />

cat /var/mqm/errors/*.LOG<br />

rcdmqimg -m qm2 -t all "*"<br />

rcdmqimg -m qm2 -t all \*<br />

3843 3744–002 F–1


Special Character H<strong>and</strong>ling<br />

F.3. Special Character H<strong>and</strong>ling<br />

The characters ‘&’ (ampers<strong>and</strong>) <strong>and</strong> ‘!’ (exclamation point) have a special meaning in<br />

the UNX dem<strong>and</strong> processor. Because of this, when either is part of a directory or file<br />

name, you must use a backslash (\) escape sequence when attempting to use them as<br />

parameters or options to a comm<strong>and</strong>. The following demonstrates how to access<br />

directories <strong>and</strong> files that contain these characters in their names or paths.<br />

Examples<br />

cd /var/mqm/qmgrs/PERIOD\!QMGR<br />

cat /var/mqm/qmgrs/PERIOD\!QMGR/errors/A<strong>MQ</strong>ERR01.LOG<br />

cd /var/mqm/qmgrs/SLASH\&QMGR<br />

cat /var/mqm/qmgrs/SLASH\&QMGR/errors/A<strong>MQ</strong>ERR01.LOG<br />

F.4. Terminating Input to the runmqdlq Control<br />

Comm<strong>and</strong><br />

The runmqdlq control comm<strong>and</strong> starts the dead-letter queue (DLQ) h<strong>and</strong>ler, a utility<br />

that you can run to monitor <strong>and</strong> h<strong>and</strong>le messages on a dead-letter queue. In<br />

<strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> Linux, if the DLQ h<strong>and</strong>ler is used without redirecting stdin from a<br />

file, the DLQ h<strong>and</strong>ler reads input from the keyboard, but does not start to process the<br />

named queue until it receives an end_of_file (Ctrl+D) character. However, in the<br />

<strong>OS</strong> <strong>2200</strong> environment, the Ctrl+D character is unavailable. Instead, use @eof on a line<br />

by itself.<br />

F.5. Using the Paging Function in the UNX<br />

Processor<br />

The UNX dem<strong>and</strong> processor includes a paging function that allows you to view<br />

documents <strong>and</strong> certain program output on a page by page basis. The tool allows you<br />

to move backward <strong>and</strong> <strong>for</strong>ward through the output you are viewing. The comm<strong>and</strong> is<br />

an implementation of the less comm<strong>and</strong> on UNIX <strong>and</strong> Linux variants.<br />

Comm<strong>and</strong>s that Use the Paging Functionality<br />

You can use the paging function to view file contents by using less comm<strong>and</strong>:<br />

>@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>less /var/mqm/mqs.ini<br />

The paging function is also used when you use the –p option on the following UNX<br />

comm<strong>and</strong>s:<br />

F–2 3843 3744–002


Using the Paging Function in the UNX Processor<br />

Comm<strong>and</strong> Description<br />

ps Displays a process listing<br />

dumpini Dumps the contents of the <strong>WebSphere</strong> <strong>MQ</strong> configuration files<br />

cat Displays a file<br />

logs Displays <strong>WebSphere</strong> <strong>MQ</strong> queue manager error logs<br />

errors Displays <strong>WebSphere</strong> <strong>MQ</strong> global error logs <strong>and</strong> FFST files<br />

The paging function can also be used to display any comm<strong>and</strong> output on a<br />

page-by-page basis by using the pipe operator to redirect the output into the less<br />

utility:<br />

>@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>fileinfo | less<br />

Using the Paging Functionality<br />

When you use the paging functionality, you must terminate the paging program when<br />

you are finished to return to the UNX shell prompt. When you are at the UNX shell<br />

prompt, you will see your process ID (PID) in the prompt:<br />

1003><br />

When you are in the paging function, you will see only a colon in the prompt:<br />

:><br />

If you are on the last page of the output, you will see the following prompt:<br />

(END)><br />

You must exit the paging function be<strong>for</strong>e you can continue using UNX shell <strong>and</strong><br />

<strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s.<br />

The following table lists common pager comm<strong>and</strong>s <strong>and</strong> their description:<br />

Table F–1. Common Pager Comm<strong>and</strong>s<br />

Comm<strong>and</strong> Description<br />

b Back one page<br />

f Forward one page<br />

q Terminate the paging<br />

function <strong>and</strong> return to the<br />

shell<br />

3843 3744–002 F–3


UNX Comm<strong>and</strong>s<br />

F.6. UNX Comm<strong>and</strong>s<br />

The UNX shell supports three comm<strong>and</strong> categories:<br />

• Linux type shell comm<strong>and</strong>s<br />

• W<strong>MQ</strong><strong>2200</strong> utilities<br />

• <strong>MQ</strong> Series Comm<strong>and</strong>s<br />

F.6.1. Linux Type Shell Comm<strong>and</strong>s<br />

The following table shows the Linux type shell comm<strong>and</strong>s that are allowed to be<br />

entered through the UNX shell. For more detailed in<strong>for</strong>mation on these comm<strong>and</strong>s,<br />

use the UNX shell <strong>and</strong> the ? comm<strong>and</strong>.<br />

? <br />

The following table lists Linux type shell comm<strong>and</strong>s <strong>and</strong> their description:<br />

Table F–2. Linux Type Shell Comm<strong>and</strong>s<br />

Comm<strong>and</strong> Description<br />

cat Displays the contents of a file.<br />

cd Changes the directory.<br />

chmod Changes the files Linux privileges <strong>for</strong> either owner, group or<br />

other.<br />

chown Changes owner of a file.<br />

cp Copies files.<br />

del Deletes files.<br />

dir Displays file directory.<br />

date Returns the time <strong>and</strong> date of the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

echo Prints what the user has requested to be echoed.<br />

exit Exits the UNX shell.<br />

help<br />

Allows the user to view a list of comm<strong>and</strong>s <strong>and</strong> get specific<br />

help on an individual comm<strong>and</strong>.<br />

hostname Displays the host name of the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

ls Lists all files in the current directory.<br />

md Makes a new directory.<br />

mkdir Makes a new directory.<br />

F–4 3843 3744–002


PS<br />

Table F–2. Linux Type Shell Comm<strong>and</strong>s<br />

Comm<strong>and</strong> Description<br />

UNX Comm<strong>and</strong>s<br />

more This comm<strong>and</strong> is used with paging a long output, <strong>for</strong> instance<br />

from a cat comm<strong>and</strong>. It allows the display to be read a page at a<br />

time.<br />

ps Displays process in<strong>for</strong>mation.<br />

pwd Displays current directory.<br />

rename Allows the renaming of files.<br />

rm Permanently removes a file.<br />

rmdir Permanently removes a directory.<br />

set Allows you to set or unset an environment variable.<br />

sleep Suspends operations of a UNX shell script.<br />

time Prints system time.<br />

trace Traces this session of the UNX shell.<br />

whoami Displays the <strong>OS</strong> <strong>2200</strong> user ID.<br />

whoamilx Displays the Linux user ID.<br />

To obtain supplemental in<strong>for</strong>mation about the active users <strong>and</strong> processes in<br />

W<strong>MQ</strong><strong>2200</strong>, use the ps comm<strong>and</strong>.<br />

By default, ps displays in<strong>for</strong>mation about all processes associated with W<strong>MQ</strong><strong>2200</strong>. It<br />

displays the user ID (RUSER), the parent process ID (PPID), the process ID (PID), the<br />

process state of the process (STAT), the wall time of the process (ELAPSED), <strong>and</strong> the<br />

executable name with its arguments (COMMAND).<br />

Formats<br />

ps<br />

ps [options]<br />

ps --mq=opts<br />

ps –help<br />

Note: Some options might not work together.<br />

Parameters<br />

Various options <strong>and</strong> <strong>for</strong>mats are available. For full documentation, use the help ps<br />

comm<strong>and</strong> in the UNX shell to display the online ps manual. Use the ps –help comm<strong>and</strong><br />

to display a summary help page.<br />

3843 3744–002 F–5


UNX Comm<strong>and</strong>s<br />

You can use the --mq option to select <strong>WebSphere</strong> <strong>MQ</strong> processes matching a given<br />

selection criteria. The following table lists parameters <strong>and</strong> their description.<br />

Parameter Description<br />

a Agents<br />

c Channels<br />

l Listeners<br />

q Queue managers<br />

You can specify any or all of a, c, l, <strong>and</strong> q in the <strong>for</strong>m:<br />

ps –mq=al<br />

Special Option Description<br />

--help Print usage page<br />

--all Print all processes on the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

--hidden Display unassigned offloads<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>ps –mq=q<br />

>RUSER PPID PID TID STAT ELAPSED COMMAND<br />

>mqm 1 15758 15758 Ssl 00:06 amqzxma0 -m MY.QMGR<br />

The following is a list of process state codes that might be displayed in the ST (status)<br />

field:<br />

D Uninterruptible sleep (usually IO)<br />

R Running or runable (on run queue)<br />

S Interruptible sleep (waiting <strong>for</strong> an event to complete)<br />

T Stopped, either by a job control signal or because it is being<br />

traced<br />

X Dead (must never be seen)<br />

Z Defunct ("zombie") process, terminated but not reaped by its<br />

parent<br />

< High-priority<br />

N Low-priority<br />

L Has pages locked into memory (<strong>for</strong> real-time <strong>and</strong> custom IO)<br />

s Is a session leader<br />

I Is a multi-threaded<br />

+ Is in the <strong>for</strong>eground process group<br />

F–6 3843 3744–002


F.6.2. <strong>MQ</strong> Series Comm<strong>and</strong>s<br />

The following table lists <strong>MQ</strong> Series comm<strong>and</strong>s <strong>and</strong> their description:<br />

Table F–3. <strong>MQ</strong> Series Comm<strong>and</strong>s<br />

Comm<strong>and</strong> Description<br />

amqhasmx Logger <strong>for</strong> a queue manager<br />

amqiclen Checks no IPC resources is present<br />

amqldmpa Dumps match space<br />

amqoamd Creates authorization definitions <strong>for</strong> queue manager<br />

objects<br />

amqpcsea PCF comm<strong>and</strong> processor<br />

amqrcmla Channel <strong>MQ</strong>SC <strong>and</strong> PCF comm<strong>and</strong> processor<br />

amqrmppa Channel process pooling job<br />

amqrrmfa Repository manager <strong>for</strong> clusters<br />

amqsstop Requests queue manager to break all connections <strong>for</strong><br />

the process ID<br />

amqzdmaa Deferred message h<strong>and</strong>ler<br />

amqzfuma Object authority manager (OAM)<br />

amqzlaa0 Agents <strong>for</strong> a queue manager<br />

amqzllp0 Checkpoint processor <strong>for</strong> a queue manager<br />

amqzlsa0 Agents <strong>for</strong> a queue manager<br />

amqzlwa0 WorkLoad Management server<br />

UNX Comm<strong>and</strong>s<br />

amqzmgr0 Process controller used to start up <strong>and</strong> manage listeners<br />

<strong>and</strong> services<br />

amqzmuc0 Critical process manager<br />

amqzmur0 Restartable process manager<br />

amqzslf0 Stop-all-channels process<br />

amqzxma0 Execution controller <strong>for</strong> a queue manager<br />

clrmqbrk Removes knowledge of queue manager<br />

crtmqcvx Creates fragment of data conversion code<br />

crtmqm Creates a queue manager<br />

dltmqbrk Deletes the broker<br />

dltmqm Deletes a queue manager<br />

dmpmqaut Dumps the current authorizations<br />

dmpmqlog Dumps <strong>for</strong>matted version of <strong>WebSphere</strong> <strong>MQ</strong> system log<br />

3843 3744–002 F–7


UNX Comm<strong>and</strong>s<br />

Table F–3. <strong>MQ</strong> Series Comm<strong>and</strong>s<br />

Comm<strong>and</strong> Description<br />

dspmq Displays queue manager status<br />

dspmqaut Displays current authorizations<br />

dspmqbrk Displays broker status<br />

dspmqcsv Displays the comm<strong>and</strong> server status<br />

dspmqfls displays <strong>WebSphere</strong> <strong>MQ</strong> files<br />

dspmqtrc Displays <strong>for</strong>matted trace output<br />

dspmqtrn Displays <strong>WebSphere</strong> <strong>MQ</strong> transactions<br />

dspmqver Displays <strong>WebSphere</strong> <strong>MQ</strong> version <strong>and</strong> build in<strong>for</strong>mation.<br />

endmqbrk Stops a broker<br />

endmqcsv Ends the comm<strong>and</strong> server<br />

endmqlsr Ends all listener processes <strong>for</strong> a queue manager<br />

endmqm Ends a queue manager<br />

endmqtrc Ends <strong>WebSphere</strong> <strong>MQ</strong> trace<br />

ffstsummary Displays FFST summary<br />

migmqbrk Migrates a <strong>WebSphere</strong> <strong>MQ</strong> Publish/Subscribe broker<br />

mqrc Displays reason code name<br />

mqver Displays <strong>WebSphere</strong> <strong>MQ</strong> product version number<br />

rcdmqimg Records media image <strong>for</strong> a queue manager<br />

rcrmqobj Recreates object <strong>for</strong> a queue manager<br />

rsvmqtrn Resolves <strong>WebSphere</strong> <strong>MQ</strong> transactions<br />

runmqbrk Broker control job<br />

runmqchi Channel initiator<br />

runmqchl Starts <strong>for</strong> each sender channel<br />

runmqdlq Dead letter queue h<strong>and</strong>ler<br />

runmqlsr Threaded TCP/IP listener<br />

runmqsc <strong>MQ</strong> Comm<strong>and</strong> interface<br />

runmqtrm Trigger monitor<br />

setmqaut Sets or resets authority<br />

strmqbrk Starts a broker<br />

strmqcsv Starts a comm<strong>and</strong> server<br />

strmqm Starts a queue manager<br />

strmqtrc Starts <strong>WebSphere</strong> <strong>MQ</strong> trace<br />

F–8 3843 3744–002


F.6.3. UNX Utilities<br />

The following table lists the utilities that are available from the UNX shell.<br />

Table F–4. UNX Utilities<br />

Utility Description<br />

buildexit Allows the coding of W<strong>MQ</strong> exit routines in <strong>OS</strong> <strong>2200</strong><br />

editors. The utility will compile <strong>and</strong> install the exit<br />

routines in the correct directory on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

core Takes a W<strong>MQ</strong><strong>2200</strong> core dump.<br />

cpuinfo Returns <strong>OS</strong> <strong>2200</strong> QProcessor cpu in<strong>for</strong>mation.<br />

diskinfo Returns <strong>OS</strong> <strong>2200</strong> QProcessor disk in<strong>for</strong>mation.<br />

dspmqtrn_all Runs dspmqtrn on all queue processors.<br />

dumpini Prints qm.ini <strong>for</strong> all queue managers.<br />

errors Returns the contents of the /var/mqm/errors directory.<br />

fileinfo Returns the /var/mqm file in<strong>for</strong>mation.<br />

fixwebminlog This adds all queue mangers logs to the View Logs<br />

module in the <strong>Administration</strong> Console. This is used only<br />

if the view of the logs are accidently deleted.<br />

groupadd Adds groups to the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

groupdel Deletes groups from the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

grouplist Lists groups on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

groupmembers Lists all members of the <strong>OS</strong> <strong>2200</strong> QProcessor groups.<br />

identity Prints the users identify in<strong>for</strong>mation.<br />

init Initializes the /var/mqm file system.<br />

init-migrate Repairs the <strong>MQ</strong> file system in a non-destructive manner.<br />

listcores Returns a list of all W<strong>MQ</strong><strong>2200</strong> <strong>and</strong> Interconnect core<br />

files.<br />

logs Returns the contents of a particular queue manager log<br />

or all queue manager logs.<br />

meminfo Prints <strong>OS</strong> <strong>2200</strong> QProcessor memory in<strong>for</strong>mation.<br />

mqexport Copies a file from the <strong>OS</strong> <strong>2200</strong> QProcessor to the<br />

<strong>OS</strong> <strong>2200</strong>.<br />

mqimport Copies a file from the <strong>OS</strong> <strong>2200</strong> to the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

mqload Restores previous backed up queue manager data.<br />

mqloadlog Restores previous achieved linear log files.<br />

mqsave Backs up given queue manager data to the <strong>OS</strong> <strong>2200</strong> file.<br />

UNX Comm<strong>and</strong>s<br />

3843 3744–002 F–9


UNX Utility Comm<strong>and</strong> Reference<br />

Table F–4. UNX Utilities<br />

Utility Description<br />

mqsavelog Archives linear log queue manager data.<br />

mquseradd Adds mapping to the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>for</strong> <strong>OS</strong> <strong>2200</strong><br />

users.<br />

mquserdel Removes <strong>OS</strong> <strong>2200</strong> QProcessor user mapping.<br />

mquserlist Lists all <strong>OS</strong> <strong>2200</strong> QProcessor user mappings.<br />

mqusermod Modify the local group <strong>for</strong> an <strong>OS</strong> <strong>2200</strong> QProcessor user<br />

mapping.<br />

rootmod Adds or removes the root user from the <strong>MQ</strong>M group.<br />

saveqmgr Displays a queue manager’s object definitions.<br />

saveqmgr_all Runs the saveqmgr comm<strong>and</strong> <strong>for</strong> all queue managers.<br />

ss Displays in<strong>for</strong>mation on IPC system facilities.<br />

sysinfo Prints <strong>OS</strong> <strong>2200</strong> QProcessor system status in<strong>for</strong>mation.<br />

ted Allows editing of files with the TED editor.<br />

uname Prints <strong>OS</strong> <strong>2200</strong> QProcessor system summary<br />

in<strong>for</strong>mation.<br />

uptime Returns how long the <strong>OS</strong> <strong>2200</strong> QProcessor has been up.<br />

usysreport Generates an <strong>OS</strong> <strong>2200</strong> QProcessor Usysreport.<br />

whoami Displays the <strong>OS</strong> <strong>2200</strong> user in<strong>for</strong>mation on the current<br />

UNX user.<br />

whoamilx Displays the <strong>OS</strong> <strong>2200</strong> QProcessor user <strong>and</strong> group <strong>for</strong> the<br />

current UNX user.<br />

F.7. UNX Utility Comm<strong>and</strong> Reference<br />

buildexit<br />

The following can be used as a reference <strong>for</strong> the UNX utility comm<strong>and</strong>s.<br />

This comm<strong>and</strong> takes an exit route from the <strong>OS</strong> <strong>2200</strong>, builds it using gcc <strong>and</strong> installs it<br />

on Linux into /var/mqm/exits64.<br />

Format<br />

buildexit [OPTION]... [FILE]<br />

F–10 3843 3744–002


core<br />

cpuinfo<br />

Parameter<br />

UNX Utility Comm<strong>and</strong> Reference<br />

-o Output exit name. This is the name of the exit routine. It will be<br />

installed in /var/mqm/exits64 directory. This option is required.<br />

-l Additional libraries needed <strong>for</strong> the gcc compile.<br />

-v Verbose option <strong>for</strong> debugging.<br />

FILE must be in the <strong>OS</strong> <strong>2200</strong> <strong>for</strong>mat. Either an SDF file or fully qualified element<br />

name is accepted (<strong>2200</strong>qual*filename.elt).<br />

This comm<strong>and</strong> creates a PADS <strong>for</strong>mated diagnostic memory dump. The core<br />

comm<strong>and</strong> <strong>for</strong>ces a Programmers Advanced Debugging System (PADS) dump into a<br />

file. The name of the file is displayed in a message both to the user's screen <strong>and</strong> to the<br />

operator's console.<br />

Format<br />

core<br />

Parameter<br />

None<br />

This comm<strong>and</strong> returns the <strong>OS</strong> <strong>2200</strong> QProcessor cpu in<strong>for</strong>mation.<br />

Format<br />

cpuinfo<br />

Parameter<br />

None<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>cpuinfo<br />

>processor : 1<br />

>vendor_id : GenuineIntel<br />

>cpu family : 15<br />

>model : 6<br />

>model name : Genuine Intel(R) CPU 3.40GHz<br />

>stepping : 8<br />

>cpu MHz : 3400.016<br />

>cache size : 16384 KB<br />

>fpu : yes<br />

>fpu_exception : yes<br />

>cpuid level : 6<br />

>wp : yes<br />

3843 3744–002 F–11


UNX Utility Comm<strong>and</strong> Reference<br />

diskinfo<br />

>flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge<br />

mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss sysc all nx lm<br />

constant_tsc pni cx16 lahf_lm<br />

>bogomips : 6819.55<br />

>clflush size : 64<br />

>cache_alignment : 128<br />

>address sizes : 36 bits physical, 48 bits virtual<br />

>power management:<br />

This comm<strong>and</strong> in the UNX shell prints the disk usage in<strong>for</strong>mation. You can use this<br />

comm<strong>and</strong> to determine the remaining space in the <strong>WebSphere</strong> <strong>MQ</strong> partitions<br />

/var/mqm <strong>and</strong> /var/mqm/log.<br />

Format<br />

diskinfo<br />

Parameter<br />

None<br />

Example<br />

dspmqtrn_all<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>diskinfo<br />

><br />

>Filesystem Size Used Avail Use% Mounted on<br />

>/dev/sdc2 149G 2.9G 139G 3% /var/mqm<br />

>/dev/sdb3 149G 2.9G 139G 3% /var/mqm/log<br />

This comm<strong>and</strong> runs dspmqtrn against all installed queue managers, displaying the<br />

status of managed transactions <strong>for</strong> each queue manager to the screen. This program<br />

is useful <strong>for</strong> gathering diagnostics.<br />

Format<br />

dspmqtrn_all<br />

Parameter<br />

None<br />

F–12 3843 3744–002


dumpini<br />

errors<br />

fileinfo<br />

UNX Utility Comm<strong>and</strong> Reference<br />

This comm<strong>and</strong> prints qm.ini <strong>for</strong> all the queue managers <strong>and</strong> mqs.ini when a option is<br />

used. You can also use this comm<strong>and</strong> to display a specific queue manager's qm.ini file.<br />

Format<br />

dumpini [-a] [-g] [-p] [-h] [gmgr-name]<br />

Parameter<br />

-a Prints all qm.ini <strong>and</strong> mqs.ini files<br />

-g Prints mqs.ini file only<br />

-p Prints the output one page at a time<br />

-h Prints a help screen<br />

This comm<strong>and</strong> returns the contents of the /var/mqm/errors directory. These files may<br />

be paged <strong>for</strong> interactive viewing, otherwise run UNX in a breakpoint <strong>and</strong> save the<br />

contents.<br />

Format<br />

errors –p<br />

Parameter<br />

-p prints the output one page at a time<br />

This comm<strong>and</strong> prints the file usage in<strong>for</strong>mation. Specifically, it prints all of the files in<br />

the /var/mqm tree.<br />

Format<br />

fileinfo [–s]<br />

Parameter<br />

fixwebminlog<br />

-s includes the size of each file of the /var/mqm tree<br />

This comm<strong>and</strong> adds all queue managers to the view logs module in the <strong>OS</strong> <strong>2200</strong><br />

QProcessor <strong>Administration</strong> Console. This is normally done on a queue manager basis<br />

during a crtmqm create queue manager) comm<strong>and</strong>. However, there may be times all<br />

need to be restored, <strong>for</strong> example after a user restores the default log entries in the<br />

<strong>Administration</strong> Console. You must be mapped to root to per<strong>for</strong>m this comm<strong>and</strong>.<br />

Format<br />

fixwebminlog<br />

3843 3744–002 F–13


UNX Utility Comm<strong>and</strong> Reference<br />

groupadd<br />

groupdel<br />

grouplist<br />

Parameter<br />

None<br />

This comm<strong>and</strong> creates a new group entry using the name specified on the comm<strong>and</strong><br />

line. The group name must begin with an alphabetic character <strong>and</strong> the rest of the<br />

string should be from the P<strong>OS</strong>IX portable character class. A group must be added<br />

be<strong>for</strong>e <strong>OS</strong> <strong>2200</strong> user IDs or remote user IDs are added. ([A-Za-z_][A-Za-z0-9_-.]*). You<br />

must be mapped to root to per<strong>for</strong>m this comm<strong>and</strong>.<br />

Format<br />

groupadd groupname<br />

Parameter<br />

groupname is the name of a valid group.<br />

This comm<strong>and</strong> removes a group entry from the local system files. A primary group of<br />

any existing user is not removeable. You must be mapped to root to per<strong>for</strong>m this<br />

comm<strong>and</strong>.<br />

Format<br />

groupdel groupname<br />

Parameter<br />

groupname is the name of a valid group.<br />

This comm<strong>and</strong> prints a list of groups installed on the <strong>OS</strong> <strong>2200</strong> QProcessor. The <strong>for</strong>mat<br />

is group:gid:members. By default system groups are hidden. You must be mapped to<br />

root to per<strong>for</strong>m this comm<strong>and</strong>.<br />

Format<br />

grouplist [-a]<br />

Parameter<br />

-a lists all groups including the system groups.<br />

F–14 3843 3744–002


groupmembers<br />

identity<br />

init<br />

UNX Utility Comm<strong>and</strong> Reference<br />

This comm<strong>and</strong> prints a list of the members of the specified group. The group should<br />

be specified by name, not by gid. Note that the root user is not listed in the<br />

groupmembers output even if root is a member of the given group. The root user is a<br />

member of the root group <strong>and</strong> possibly the mqm group.<br />

Format<br />

groupmembers groupname<br />

Parameter<br />

groupname is the name of a valid group to list the members.<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>groupmembers mqm<br />

gn<br />

mqm<br />

This comm<strong>and</strong> prints the current UNX users identity in<strong>for</strong>mation including the <strong>OS</strong><strong>2200</strong><br />

user ID, Linux user ID, <strong>and</strong> effective Linux group ID.<br />

Format<br />

identity<br />

Parameter<br />

None<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>identity<br />

<strong>OS</strong><strong>2200</strong> userid: gm<br />

Linux identity: mqm<br />

Effective group: mqm<br />

This comm<strong>and</strong> initializes the /var/mqm file system. This comm<strong>and</strong> destroys all <strong>MQ</strong><br />

data, <strong>MQ</strong> queues, logs, errors, trace files, <strong>and</strong> configuration will be destroyed after<br />

this comm<strong>and</strong> is executed. This comm<strong>and</strong> must be run by an <strong>OS</strong> <strong>2200</strong> user mapped as<br />

root.<br />

Format<br />

init<br />

3843 3744–002 F–15


UNX Utility Comm<strong>and</strong> Reference<br />

Parameter<br />

None<br />

Init-migrate<br />

listcores<br />

This comm<strong>and</strong> repairs the <strong>MQ</strong> file system in a non-destructive manner. It is used to<br />

repair the <strong>MQ</strong> file system if it has been damaged or deleted. It does not destroy<br />

existing queue manager data. If you wish to reinitialize your file system, use the init<br />

comm<strong>and</strong> instead.<br />

This comm<strong>and</strong> is used when you know or believe all or part of the file system is<br />

deleted, damaged, or permissions are changed. This will repair the <strong>MQ</strong> file system <strong>and</strong><br />

correct permissions changes. This comm<strong>and</strong> cannot recover queue manager or log<br />

data that has been corrupted or destroyed. However, it can repair <strong>and</strong> replace the<br />

/var/mqm tree that was installed when W<strong>MQ</strong><strong>2200</strong> was originally installed. This<br />

comm<strong>and</strong> can only be run when <strong>MQ</strong> is not running <strong>and</strong> must be run by an <strong>OS</strong> <strong>2200</strong><br />

user mapped as root.<br />

Format<br />

Init-migrate<br />

Parameter<br />

None<br />

This comm<strong>and</strong> lists all core files generated by <strong>MQ</strong> or the Interconnect on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

Format<br />

listcores<br />

Parameter<br />

None<br />

F–16 3843 3744–002


logs<br />

meminfo<br />

UNX Utility Comm<strong>and</strong> Reference<br />

This comm<strong>and</strong> returns the contents of the errors directory <strong>for</strong> all or a particular queue<br />

manager. These files maybe paged <strong>for</strong> interactive viewing, otherwise run UNX in a<br />

breakpoint <strong>and</strong> save the contents.<br />

Format<br />

logs<br />

Parameter<br />

None<br />

This comm<strong>and</strong> dumps <strong>OS</strong> <strong>2200</strong> QProcessor memory in<strong>for</strong>mation.<br />

Format<br />

meminfo [-v]<br />

Parameter<br />

-v Displays detailed memory in<strong>for</strong>mation.<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>meminfo<br />

>total used free shared buffers cached<br />

>Mem: 2012 743 1269 0 169 402<br />

>-/+ buffers/cache: 171 1841<br />

>Swap: 2055 0 2055<br />

>Total: 4067 743 3324<br />

Where<br />

Total - Displays the total usable memory in<strong>for</strong>mation (RAM)<br />

Used - Amount of used memory<br />

Free - Amount of unused memory<br />

Shared - Total shared memory in<strong>for</strong>mation<br />

Buffers - Amount of memory used <strong>for</strong> file buffers<br />

Cached - Amount of memory used as cache memory<br />

Swap - Total amount of physical swap memory<br />

3843 3744–002 F–17


UNX Utility Comm<strong>and</strong> Reference<br />

mqexport<br />

mqimport<br />

mqload<br />

The mqexport allows an <strong>OS</strong> <strong>2200</strong> user to get the contents of an ASCII file from the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor as an <strong>OS</strong> <strong>2200</strong> data file.<br />

Format<br />

mqexport source_file qual*file.<br />

Parameters<br />

The source_file is a required parameter that specifies the <strong>OS</strong> <strong>2200</strong> QProcessor file<br />

from which the in<strong>for</strong>mation is transferred.<br />

qual*file. is a required parameter (which must end in a period) that specifies the<br />

<strong>OS</strong> <strong>2200</strong> file into which the in<strong>for</strong>mation is to be transferred. The qual*file. can<br />

specify an existing catalogued or temporary program file. The qual*file. must<br />

already exist. If the qualifier has a ‘$’ sign, make sure you have a “\” (backslash)<br />

be<strong>for</strong>e issuing the $ sign. For example, if the qual*file. you want to use is<br />

wmq$*out., then you will need to issue wmq\$*out.<br />

This comm<strong>and</strong> allows an <strong>OS</strong> <strong>2200</strong> user to copy an ASCII from the <strong>OS</strong> <strong>2200</strong> to the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Format<br />

mqimport <strong>2200</strong>-source-file destination-file<br />

Parameters<br />

The <strong>2200</strong>-source-file is a required parameter (which must end in a period) that<br />

specifies the <strong>OS</strong> <strong>2200</strong> file into which the in<strong>for</strong>mation is to be transferred, it must<br />

already exist. If the qualifier has a ‘$’ sign, make sure you have a “\” (backslash)<br />

be<strong>for</strong>e issuing the $ sign.<br />

The destination_file is a required parameter that specifies the <strong>OS</strong> <strong>2200</strong> QProcessor<br />

file to which the in<strong>for</strong>mation is transferred.<br />

This comm<strong>and</strong> is used to restore the data <strong>for</strong> your queue manager to a saved point.<br />

The mqload comm<strong>and</strong> is interactive <strong>and</strong> will prompt <strong>for</strong> the queue manager name. The<br />

queue manager you specify does not need to exist, but must be inactive if it exists;<br />

that is, it must not be currently running.<br />

The mqload copies all of the relevant in<strong>for</strong>mation <strong>for</strong> your queue manager from the<br />

<strong>OS</strong> <strong>2200</strong> file qualifier*filename to the <strong>OS</strong> <strong>2200</strong> QProcessor system, effectively<br />

overwriting the current queue manager data.<br />

F–18 3843 3744–002


Format<br />

mqloadlog<br />

mqload qualifier*filename.<br />

UNX Utility Comm<strong>and</strong> Reference<br />

Note: The qmgr-name is prompted <strong>for</strong> when the comm<strong>and</strong> is run.<br />

Parameters<br />

qmgr-name is the name of the queue manager to restore.<br />

qualifier*filename specifies the <strong>OS</strong> <strong>2200</strong> file from which you want to load all the<br />

in<strong>for</strong>mation <strong>for</strong> a queue manager. This file must exist on your system <strong>and</strong> must be<br />

populated by a prior mqsave call. If the qualifier has a ‘$’ sign, make sure you have a<br />

“\” (backslash) be<strong>for</strong>e issuing the $ sign.<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqload wmq*qmbackup.<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name<br />

>QM1<br />

><br />

><strong>MQ</strong>LOAD: Finished restoring data <strong>for</strong> queue manager 'QM1'<br />

This comm<strong>and</strong> restores older, previously archived log files. mqloadlog copies<br />

in<strong>for</strong>mation from <strong>OS</strong> <strong>2200</strong> files saved by mqsavelog into a log file. This is a<br />

nondestructive copy; <strong>OS</strong> <strong>2200</strong> files are not deleted or erased by this operation. The<br />

mqloadlog is interactive <strong>and</strong> prompts <strong>for</strong> queue manager name <strong>and</strong> the range of logs<br />

files needed.<br />

Format<br />

<strong>MQ</strong>LOADLOG qualifier<br />

Parameters<br />

qualifier is the <strong>OS</strong> <strong>2200</strong> qualifier that was used with the mqsavelog. This is where<br />

the previously archived log files were written.<br />

Example<br />

This example restores log files needed <strong>for</strong> media recovery.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqloadlog abc<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name.<br />

>qm1<br />

>Range of log files needed <strong>for</strong> media recovery: 0 through 3.<br />

>Proceed with <strong>MQ</strong>LoadLog on this range? (Y or N)<br />

>y<br />

><br />

>Target file is '/var/mqm/log/qm1/active/S0000000.LOG'<br />

3843 3744–002 F–19


UNX Utility Comm<strong>and</strong> Reference<br />

mqsave<br />

><br />

>Copy ABC*S0000000. to file /var/mqm/log/qm1/active/S0000000.LOG<br />

>mqloadlog: Transferred 270336 bytes to file/<br />

var/mqm/log/qm1/active/S0000000.LOG<br />

><br />

>Target file is '/var/mqm/log/qm1/active/S0000001.LOG'<br />

>Copy ABC*S0000001. to file /var/mqm/log/qm1/active/S0000001.LOG<br />

>mqloadlog: Transferred 270336 bytes to file<br />

/var/mqm/log/qm1/active/S0000001.LOG<br />

><br />

>Target file is '/var/mqm/log/qm1/active/S0000002.LOG'<br />

>Copy ABC*S0000002. to file /var/mqm/log/qm1/active/S0000002.LOG<br />

>mqloadlog: Transferred 270336 bytes to file<br />

/var/mqm/log/qm1/active/S0000002.LOG<br />

><br />

>Target file is '/var/mqm/log/qm1/active/S0000003.LOG'<br />

>Copy ABC*S0000003. to file /var/mqm/log/qm1/active/S0000003.LOG<br />

>mqloadlog: Transferred 270336 bytes to file /<br />

var/mqm/log/qm1/active/S0000003.LOG<br />

><br />

>END mqloadlog: 4 files copied <strong>for</strong> queue manager qm1.<br />

This comm<strong>and</strong> is used to back up the data <strong>for</strong> a queue manager. The mqsave<br />

comm<strong>and</strong> is interactive <strong>and</strong> will prompt <strong>for</strong> the queue manager name. The queue<br />

manager you specify does not need to exist, but must be inactive if it exists; that is, it<br />

must not be currently running.<br />

The mqsave copies all of the relevant in<strong>for</strong>mation <strong>for</strong> your queue manager to the file<br />

you specify as qualifier*filename. You must ensure that the resulting file is stored in a<br />

secure manner.<br />

Format<br />

mqsave qualifier*filename.<br />

Parameters<br />

qualifier*filename specifies the <strong>OS</strong> <strong>2200</strong> file into which you want to save all the<br />

in<strong>for</strong>mation <strong>for</strong> a queue manager. This output file must be a tape or mass storage<br />

file that already exists on your system <strong>and</strong> must be large enough to hold<br />

all the in<strong>for</strong>mation <strong>for</strong> your queue manager. If the qualifier has a ‘$’ sign, make sure<br />

you have a “\” (backslash) be<strong>for</strong>e issuing the $ sign.<br />

Note: A queue manager created using ?crtmqm qmname? with all default values<br />

<strong>and</strong> without being used needs approximately 3100 tracks of space. If you create<br />

your queue manager such that it needs more space (<strong>for</strong> example, if you specify<br />

more or larger log files), or if you have been using your queue manager to<br />

process large amounts of data, you can create your target <strong>OS</strong> <strong>2200</strong> with a greater<br />

maximum size.<br />

F–20 3843 3744–002


mqsavelog<br />

Example<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqsave wmq*qmbackup.<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name<br />

>QM1<br />

><br />

><strong>MQ</strong>SAVE: Transferred 38621 bytes to file wmq*qmbackup.<br />

UNX Utility Comm<strong>and</strong> Reference<br />

This comm<strong>and</strong> removes excess log files <strong>for</strong> linear log queue managers. The name of<br />

the queue manager <strong>and</strong> a qualifier needs to be entered. The qualifier is to be used <strong>for</strong><br />

the destination files. This is an interactive comm<strong>and</strong> that queries <strong>for</strong> the name of the<br />

queue manager.<br />

Format<br />

mqsavelog [-i] [-d] qualifier [-s sgsfile]<br />

Parameters<br />

-i Displays which log files are c<strong>and</strong>idate <strong>for</strong> archive.<br />

-s Generates a set of SGSs to facilitate automation of the mqsavelog.<br />

-d Deletes unneeded bz2 compressed log files.<br />

sgsfile specifies the output location <strong>for</strong> SGSs generated when you use the s option.<br />

The value you provide <strong>for</strong> sgsfile must be an <strong>OS</strong> <strong>2200</strong> data file or element name.<br />

Examples<br />

1. Requesting In<strong>for</strong>mation Only (i Option)<br />

Use the i option <strong>for</strong> in<strong>for</strong>mation only; mqsavelog displays in<strong>for</strong>mation about which<br />

files are c<strong>and</strong>idates <strong>for</strong> archive. It is also helpful <strong>for</strong> determining which files you<br />

must create prior to running mqsavelog to do the actual file transfers. The<br />

in<strong>for</strong>mation from the following example shows that you need to create four files,<br />

named ABC*S0000000LOG. through ABC*S0000003LOG., <strong>and</strong> the size of the log<br />

files you see is uncompressed.<br />

This example uses the i option <strong>for</strong> in<strong>for</strong>mation only.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqsavelog-i abc<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name.<br />

>qm1<br />

><br />

>S0000000.LOG requires target file ABC*S0000000LOG.<br />

> Size in bytes: 473088. Size in tracks: 66<br />

><br />

>S0000001.LOG requires target file ABC*S0000001LOG.<br />

> Size in bytes: 473088. Size in tracks: 66<br />

><br />

3843 3744–002 F–21


UNX Utility Comm<strong>and</strong> Reference<br />

>S0000002.LOG requires target file ABC*S0000002LOG.<br />

> Size in bytes: 473088. Size in tracks: 66<br />

><br />

>S0000003.LOG requires target file ABC*S0000003LOG.<br />

> Size in bytes: 473088. Size in tracks: 66<br />

><br />

><strong>MQ</strong>SaveLog can export 4 files <strong>for</strong> queue manager qm1.<br />

><br />

>END <strong>MQ</strong>SaveLog: 4 files found <strong>for</strong> queue manager qm1.<br />

2. Requesting In<strong>for</strong>mation in SGS Format (s Option)<br />

Use the s option <strong>and</strong> the sgsfile parameter to generate a set of SGSs to facilitate<br />

automation of the mqsavelog utility.<br />

When the s option <strong>and</strong> sgsfile are given, mqsavelog produces a set of SGSs in this<br />

<strong>for</strong>m:<br />

LOG SEQ,seqnum-1 TRACKS,tracks FILE,qual*Sseqnum-1LOG.<br />

LOG SEQ,seqnum-2 TRACKS,tracks FILE,qual*Sseqnum-2LOG.<br />

...<br />

<strong>MQ</strong>SAVELOG COUNT,num<br />

where:<br />

seqnum-n are the log sequence numbers <strong>for</strong> the LOG SGSs.<br />

tracks is the size in tracks, required <strong>for</strong> the given <strong>OS</strong> <strong>2200</strong> target file. The size of<br />

the log files is uncompressed.<br />

qual is the qualifier <strong>for</strong> the target <strong>OS</strong> <strong>2200</strong> files <strong>for</strong> log file transfer, as specified on<br />

the mqsavelog call line.<br />

num is the number of LOG SGSs in the log file.<br />

For example:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqsavelog -s ABC tpf$.sgs<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name.<br />

>qm1<br />

><br />

>mqsavelog: Transferred 200 bytes to file tpf$.sgs<br />

><br />

>END mqsaveLog: 4 files found <strong>for</strong> queue manager qm1.<br />

LOG SEQ,0000000 TRACKS,66 FILE,ABC*S0000000LOG.<br />

LOG SEQ,0000001 TRACKS,66 FILE,ABC*S0000001LOG.<br />

LOG SEQ,0000002 TRACKS,66 FILE,ABC*S0000002LOG.<br />

LOG SEQ,0000003 TRACKS,66 FILE,ABC*S0000003LOG.<br />

<strong>MQ</strong>SAVELOG COUNT,4<br />

F–22 3843 3744–002


UNX Utility Comm<strong>and</strong> Reference<br />

Typically, you call mqsavelog first with the s option <strong>and</strong> sgsfile to generate SGSs,<br />

<strong>and</strong> then call a skeleton you have written to process the SGSs <strong>and</strong> create the<br />

necessary <strong>OS</strong> <strong>2200</strong> target files. You can then call mqsavelog again with no options<br />

to transfer the file in<strong>for</strong>mation (see “Moving the Data (No Options)”).<br />

3. Moving the Data (No Options)<br />

When you have created the necessary target files, you can call mqsavelog again<br />

with no options to move the data. Note that the log files are stored in bz2<br />

compressed <strong>for</strong>mat. If you need to extract the data you must use a bz2<br />

compression utility.<br />

Note: If you answer "y" to the "Do you want to delete linear log files /n,"<br />

question, mqsavelog deletes older log file in<strong>for</strong>mation from your <strong>OS</strong> <strong>2200</strong><br />

QProcessor. There<strong>for</strong>e, ensure that your target save files are secure <strong>and</strong><br />

archived. W<strong>MQ</strong><strong>2200</strong> might need them in the event of a media recovery<br />

situation.<br />

Continuing with the previous example, this example moves the in<strong>for</strong>mation.<br />

>@cat,p abc*s0000000log.,///66<br />

>I:002333 CAT complete.<br />

>@cat,p abc*s0000001log.,///66<br />

>I:002333 CAT complete.<br />

>@cat,p abc*s0000002log.,///66<br />

>I:002333 CAT complete.<br />

>@cat,p abc*s0000003log.,///66<br />

>I:002333 CAT complete.<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqsavelog abc<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name.<br />

>qm1<br />

> Do you want to delete linear log files /n?<br />

>y<br />

><br />

>Processing c<strong>and</strong>idate file S0000000.LOG<br />

>Size in bytes: 6380. Size in tracks: 1<br />

>mqsavelog: Transferred 270336 bytes to file ABC*S0000000LOG.<br />

>Deleted log file /var/mqm/log/qm1/active/S0000000.LOG<br />

><br />

>Processing c<strong>and</strong>idate file S0000001.LOG<br />

>Size in bytes: 6380. Size in tracks: 1<br />

>mqsavelog: Transferred 270336 bytes to file ABC*S0000001LOG.<br />

>Deleted log file /var/mqm/log/qm1/active/S0000001.LOG<br />

><br />

>Processing c<strong>and</strong>idate file S0000002.LOG<br />

>Size in bytes: 6380. Size in tracks: 1<br />

>mqsavelog: Transferred 270336 bytes to file ABC*S0000002LOG.<br />

>Deleted log file /var/mqm/log/qm1/active/S0000002.LOG<br />

><br />

>Processing c<strong>and</strong>idate file S0000003.LOG<br />

>Size in bytes: 6380. Size in tracks: 1<br />

3843 3744–002 F–23


UNX Utility Comm<strong>and</strong> Reference<br />

mquseradd<br />

>mqsavelog: Transferred 270336 bytes to file ABC*S0000003LOG.<br />

>Deleted log file /var/mqm/log/qm1/active/S0000003.LOG<br />

><br />

>mqsaveLog moved 4 files <strong>for</strong> queue manager qm1.<br />

><br />

>END mqsaveLog: 4 files found <strong>for</strong> queue manager qm1.<br />

4. Delete Compressed Log Files (d Option)<br />

Use the d option to delete the unnecessary bz2 compressed log files. These are<br />

the log files that have been archived to the <strong>OS</strong> <strong>2200</strong> system without deleting from<br />

the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

If you answered ‘n’ to the following question, you might have bz2 compressed log<br />

files:<br />

>Do you want to delete linear log files /n?<br />

For example,<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mqsavelog -d ABC<br />

>Enter <strong>WebSphere</strong> <strong>MQ</strong> queue manager name.<br />

>qm1<br />

This comm<strong>and</strong> adds either a remote user ID to the <strong>OS</strong> <strong>2200</strong> QProcessor or an <strong>OS</strong> <strong>2200</strong><br />

user IDto the Interconnect USERMAP file <strong>for</strong> access rights to <strong>MQ</strong> queues. Each<br />

remote or <strong>OS</strong> <strong>2200</strong> user must be associated with an <strong>OS</strong> <strong>2200</strong> QProcessor group<br />

name. The group must already exist. This comm<strong>and</strong> can only be entered by a user<br />

mapped to root.<br />

Format<br />

mquseradd –O -g groupid <strong>OS</strong><strong>2200</strong>userid<br />

mquseradd –R –g groupid RemoteUserid<br />

Parameters<br />

-O specifies that you are adding an <strong>OS</strong> <strong>2200</strong> user ID.<br />

-R specifies that you are adding a remote user ID.<br />

groupid is the <strong>OS</strong> <strong>2200</strong> QProcessor group to add the user to. The group must<br />

already exist. Groups such as mqm, root, or another custom group can be chosen.<br />

<strong>OS</strong><strong>2200</strong>userid is the <strong>OS</strong> <strong>2200</strong> user ID that you want to add. The <strong>OS</strong> <strong>2200</strong> user ID<br />

can be added in any case.<br />

F–24 3843 3744–002


mquserdel<br />

UNX Utility Comm<strong>and</strong> Reference<br />

RemoteUserid is the remote user ID that you want to add. This user ID should be<br />

added in all lowercase because <strong>MQ</strong> converts all incoming user IDs on channels (that<br />

is client connections) to lowercase <strong>for</strong> security checks.<br />

Example<br />

To add <strong>OS</strong> <strong>2200</strong> user W<strong>MQ</strong> to the <strong>OS</strong> <strong>2200</strong> QProcessor usermap table as a member<br />

of the mqm group, execute the following comm<strong>and</strong>:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mquseradd –O -g mqm W<strong>MQ</strong><br />

To add a remote user (<strong>for</strong> example a Windows userid) JOHNQSMITH to the<br />

QProcessor as a member of the limitedmq custom group (which must be<br />

created previously with groupadd), execute the following comm<strong>and</strong>:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mquseradd –R –g limitedmq johnqsmith<br />

This comm<strong>and</strong> removes either a remote user ID from the <strong>OS</strong> <strong>2200</strong> QProcessor or an<br />

<strong>OS</strong> <strong>2200</strong> user IDfrom the <strong>OS</strong> <strong>2200</strong> QProcessor. If you remove an <strong>OS</strong> <strong>2200</strong> user ID, all<br />

W<strong>MQ</strong><strong>2200</strong> applications running with this <strong>OS</strong> <strong>2200</strong>-user ID will now run with nobody<br />

<strong>OS</strong> <strong>2200</strong> QProcessor access rights. This comm<strong>and</strong> can only be entered by a user<br />

mapped to root.<br />

Format<br />

mquserdel -O <strong>OS</strong><strong>2200</strong>userid<br />

mquserdel –R RemoteUserid<br />

Parameters<br />

-O specifies that you are removing an <strong>OS</strong> <strong>2200</strong> user ID.<br />

-R specifies that you are removing a remote user ID.<br />

<strong>OS</strong><strong>2200</strong>userid is the <strong>OS</strong> <strong>2200</strong> user ID that you want to remove. The <strong>OS</strong> <strong>2200</strong> user<br />

ID can be specified in any case.<br />

RemoteUserid is the remote user ID that you want to remove. This user ID must be<br />

specified in the same case that it was added (which typically should be all<br />

lowercase).<br />

Example<br />

To remove the <strong>OS</strong> <strong>2200</strong> user WMARY from the <strong>OS</strong> <strong>2200</strong> QProcessor, execute the<br />

following comm<strong>and</strong>:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mquserdel –O WMARY<br />

3843 3744–002 F–25


UNX Utility Comm<strong>and</strong> Reference<br />

mquserlist<br />

To remove remote user (<strong>for</strong> example a Windows userid) JOHNQSMITH from<br />

the QProcessor, execute the following comm<strong>and</strong>:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mquserdel –R johnqsmith<br />

This comm<strong>and</strong> lists <strong>OS</strong> <strong>2200</strong> users <strong>and</strong> their associated <strong>OS</strong> <strong>2200</strong> QProcessor groups<br />

<strong>for</strong> access rights to <strong>MQ</strong> queues.<br />

Format<br />

mquserlist –O<br />

Mquserlist -R<br />

Parameters<br />

-O specifies that you want to list <strong>OS</strong> <strong>2200</strong> user mappings.<br />

-R specifies that you want to list remote user IDs.<br />

-s specifies that you wish to list all system user IDs on the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

This parameter can only be used with the –R option.<br />

Example<br />

To list all associated <strong>OS</strong> <strong>2200</strong> QProcessor users <strong>and</strong> groups, execute the following<br />

comm<strong>and</strong>:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mquserlist –O<br />

>-<strong>MQ</strong>S-:root:root<br />

><strong>MQ</strong>M:mqm:mqm<br />

To list all remote user IDs installed on the <strong>OS</strong> <strong>2200</strong> QProcessor, execute the<br />

following comm<strong>and</strong>:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mquserlist –R<br />

>root<br />

>mqm<br />

>NTuser<br />

To list all remote user IDs installed on the <strong>OS</strong> <strong>2200</strong> QProcessor as well as the<br />

system user IDs, execute the following comm<strong>and</strong>:<br />

@W<strong>MQ</strong>$*<strong>MQ</strong>S$EXE.UNX<br />

>mquserlist –R -s<br />

>root<br />

F–26 3843 3744–002


ootmod<br />

saveqmgr<br />

>mqm<br />

>NTuser<br />

>nobody<br />

>mail<br />

>man<br />

UNX Utility Comm<strong>and</strong> Reference<br />

This comm<strong>and</strong> adds or removes the root user from the mqm group. Adding the root<br />

user to the mqm group allows root authorized users to per<strong>for</strong>m all <strong>MQ</strong> administrative<br />

functions as well. You must be mapped to root to per<strong>for</strong>m this comm<strong>and</strong>.<br />

Format<br />

rootmod [-a] [-r] [-h]<br />

Parameters<br />

-a Put root into mqm group<br />

-r Remove root from mqm group<br />

-h Print the help summary<br />

Changes take effect after exiting <strong>and</strong> re-entering the shell.<br />

This comm<strong>and</strong> saves a queue manager's object definitions. To display the options <strong>for</strong><br />

this comm<strong>and</strong>, use the –h option.<br />

Format<br />

saveqmgr -h<br />

Parameters<br />

saveqmgr_all<br />

-h displays other uses <strong>and</strong> options<br />

This comm<strong>and</strong> saves object definitions from all queue managers. To display the<br />

options <strong>for</strong> this comm<strong>and</strong>, use the –h option.<br />

Format<br />

saveqmgr_all -h<br />

Parameters<br />

-h displays other uses <strong>and</strong> options<br />

3843 3744–002 F–27


UNX Utility Comm<strong>and</strong> Reference<br />

ss<br />

ss Display<br />

This comm<strong>and</strong> in UNX shell provides in<strong>for</strong>mation about system resource use.<br />

Format<br />

ss [-a] [-opt1] [-opt2] [id]<br />

Parameters<br />

The ss comm<strong>and</strong> entered with no options displays general system resource use.<br />

-a displays a summary of each of the IPC memory types: shared memory segments,<br />

message queues, <strong>and</strong> semaphores. It produces the same display as comm<strong>and</strong><br />

ss -m -q -s. If the -a option is used with any combination of the opt1 type options,<br />

the opt1 options are ignored. The –a option can be used with the opt2 options -c,<br />

-p, or -t. This displays the specified opt2 view <strong>for</strong> all IPC memory types.<br />

opt1 specifies the type of IPC memory to be displayed:<br />

-m IPC shared memory segments<br />

-q IPC message queues<br />

-s IPC semaphores<br />

Following is an explanation of the in<strong>for</strong>mation provided by the UNX processor ss<br />

comm<strong>and</strong> <strong>for</strong> displaying system statistics <strong>and</strong> internal Inter-Process Communication<br />

(IPC) memory usage. The IPC mechanism supports three types of inter-process<br />

communication, which you can monitor with the ss comm<strong>and</strong>:<br />

• Shared memory allows processes to share parts of their virtual address space.<br />

• Message queues allow processes to send <strong>for</strong>matted data streams to arbitrary<br />

processes.<br />

• Semaphores allow processes to synchronize execution.<br />

In the following example, the semaphore arrays are displayed.<br />

Example<br />

------- Semaphore Arrays --------<br />

-key semid owner perms nsems<br />

-0x4d02b830 0 root 600 8<br />

-0x02222ee5 4816897 mqm 666 1<br />

-0x02222eec 5046274 mqm 660 1<br />

-0x02222ef4 5079043 mqm 660 1<br />

-0x02202fe6 5111812 mqm 666 2<br />

-0x02222f24 5505029 mqm 600 2<br />

-0x02222f25 5537798 mqm 600 128<br />

-0x02222f2a 5570567 mqm 666 2<br />

-0x02222f2c 5603336 mqm 666 128<br />

F–28 3843 3744–002


UNX Utility Comm<strong>and</strong> Reference<br />

-0x02222f33 5636105 mqm 600 2<br />

-0x02222f34 5668874 mqm 600 128<br />

-0x02222f41 5701643 mqm 600 128<br />

-0x02222f43 5734412 mqm 600 128<br />

-0x02222f97 7372813 mqm 660 1<br />

-0x02222fd6 7634962 mqm 600 2<br />

-0x02222fd7 7667731 mqm 600 128<br />

-0x0222303a 6422550 mqm 660 1<br />

-<br />

------- Message Queues --------<br />

-key msqid owner perms used-bytes messages<br />

where:<br />

ss -m Display<br />

key is the unique identifier used to find semaphores.<br />

semid is the unique semaphore set identifier.<br />

owner is the user that currently owns the semaphore set (not necessarily the<br />

creator).<br />

perms is the operation permissions.<br />

nsems is the number of semaphore structures in this semaphore set.<br />

Example<br />

Table F–5. Shared Memory Segments<br />

Key Shmid Owner Perms Bytes Nattch<br />

0x00000000 21397504 nobody 600 649256 2<br />

0x00000000 21430273 root 600 1056 2<br />

0x82222ee5 15106050 mqm 666 1000 9<br />

0x00000000 15400963 mqm 600 889832 101<br />

0x00000000 15433732 root 600 114216000 101<br />

where:<br />

key is the unique UNX identifier used to find the shared memory segment.<br />

shmid is the unique shared memory identifier.<br />

owner is the user that currently owns the segment (not necessarily the creator).<br />

perms is the operation permissions.<br />

3843 3744–002 F–29


UNX Utility Comm<strong>and</strong> Reference<br />

ss -q Display<br />

bytes is the size of the memory segment.<br />

nattch is the number of processes attached <strong>for</strong> access to the segment.<br />

Operation permissions are defined to be<br />

• 0400 – Read by owner<br />

• 0200 – Alter by owner<br />

• 040 – Read by group<br />

• 020 – Alter by group<br />

• 04 – Read by anybody<br />

• 02 – Alter by anybody<br />

Example<br />

Table F–6. IPC Message Queues<br />

Key Msqid Owner Perms Used-bytes Messages<br />

0x00000000 0 mqm 622 0 0<br />

where:<br />

key is the unique UNX identifier used to find the IPC message queue.<br />

msqid is the unique IPC message queue identifier.<br />

owner is the user that currently owns the IPC message queue (not necessarily the<br />

creator).<br />

perms is the operation permissions.<br />

used-bytes is the current number of bytes used on the queue out of a maximum<br />

of 262,143 bytes.<br />

messages is the number of messages on the queue out of a maximum of 2,000<br />

messages.<br />

Operation permissions are defined to be<br />

• 0400 – Read by owner<br />

• 0200 – Alter by owner<br />

• 040 – Read by group<br />

• 020 – Alter by group<br />

F–30 3843 3744–002


ss -s Display<br />

• 04 – Read by anybody<br />

• 02 – Alter by anybody<br />

Example<br />

Table F–7. Semaphore Arrays<br />

UNX Utility Comm<strong>and</strong> Reference<br />

Key Semid Owner Perms nsems<br />

0x4d02b830 0 root 600 8<br />

0x02222ee5 4816897 mqm 666 1<br />

0x02222eec 5046274 mqm 660 1<br />

0x02222ef4 5079043 mqm 660 1<br />

0x02202fe6 5111812 mqm 666 2<br />

0x02222f24 5505029 mqm 600 2<br />

0x02222f25 5537798 mqm 600 128<br />

0x02222f2a 5570567 mqm 666 2<br />

0x02222f2c 5603336 mqm 666 128<br />

0x02222f33 5636105 mqm 600 2<br />

0x02222f34 5668874 mqm 600 128<br />

0x02222f41 5701643 mqm 600 128<br />

0x02222f43 5734412 mqm 600 128<br />

0x02222f97 7372813 mqm 660 1<br />

0x02222fd6 7634962 mqm 600 2<br />

0x02222fd7 7667731 mqm 600 128<br />

0x0222303a 6422550 mqm 660 1<br />

where:<br />

key is the unique UNX identifier used to find the semaphore.<br />

semid is the unique semaphore set identifier.<br />

owner is the user that currently owns the semaphore set (not necessarily the<br />

creator).<br />

perms is the operation permissions.<br />

nsems is the number of semaphore structures in this semaphore set.<br />

3843 3744–002 F–31


UNX Utility Comm<strong>and</strong> Reference<br />

Operation permissions are defined to be<br />

• 0400 – Read by owner<br />

• 0200 – Alter by owner<br />

• 040 – Read by group<br />

• 020 – Alter by group<br />

• 04 – Read by anybody<br />

• 02 – Alter by anybody<br />

Additional Option Examples<br />

The following ss comm<strong>and</strong>s are also available:<br />

• ss -m –t<br />

Displays the attach, detach, <strong>and</strong> changed times <strong>for</strong> memory segments.<br />

• ss -m –c<br />

Dumps ipc_perm structure owner <strong>and</strong> creator in<strong>for</strong>mation.<br />

• ss -m –p<br />

Displays memory segment creator PID <strong>and</strong> last operation PID.<br />

• ss -m -i shmid<br />

Displays a summary of the previous options <strong>for</strong> the supplied shmid.<br />

The last operation pid <strong>for</strong> a semaphore set in the ss -m -p display is currently not<br />

tracked, <strong>and</strong> reports 0.<br />

• ss -q -t<br />

Displays last IPC message queue send, receive, <strong>and</strong> change times.<br />

• ss -q -c<br />

Dumps ipc_perm structure owner <strong>and</strong> creator in<strong>for</strong>mation.<br />

• ss -q -p<br />

Displays IPC message queue last send PID <strong>and</strong> last receive PID.<br />

• ss -q -i msqid<br />

Displays a summary of the previous options <strong>for</strong> the supplied msqid.<br />

• ss -s -t<br />

Displays the last operation <strong>and</strong> creation time <strong>for</strong> semaphore sets.<br />

F–32 3843 3744–002


sysinfo<br />

ted<br />

• ss -s -c<br />

Dumps ipc_perm structure owner <strong>and</strong> creator in<strong>for</strong>mation.<br />

• ss -s -i semid<br />

UNX Utility Comm<strong>and</strong> Reference<br />

Dumps the contents of the sem structure <strong>for</strong> each member of the semaphore set<br />

identified by semid, in addition to a summary of the previous options.<br />

Note: Only a user ID mapped to root can per<strong>for</strong>m the ss -s –i semid option.<br />

The last operation time <strong>for</strong> a semaphore set in the ss -s -t display is currently not<br />

tracked <strong>and</strong> reports "Not set." The headings displayed <strong>for</strong> a sem structure in the ss -s -i<br />

semid comm<strong>and</strong> are defined as follows:<br />

semnum is the number of the semaphore structure within the set.<br />

value is the semaphore value (semval).<br />

ncount is the number of processes awaiting semval > sem_op.<br />

zcount is the number of processes awaiting semval = 0.<br />

Combinations of the opt1 type options can be used with one of the opt2 view options<br />

to generate mixed displays. For example, the comm<strong>and</strong> ss -m -s -t displays the last<br />

operation time <strong>and</strong> creation time <strong>for</strong> both memory segments <strong>and</strong> semaphore sets.<br />

This comm<strong>and</strong> prints system in<strong>for</strong>mation of the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Format<br />

sysinfo<br />

Parameters<br />

None<br />

ted is a line-oriented text editor. It is used to create, display, modify <strong>and</strong> otherwise<br />

manipulate text files.<br />

To get out of insert mode <strong>and</strong> back to comm<strong>and</strong> mode, use @EOF.<br />

Note: You can only edit files in your current working directory. See Appendix C,<br />

"Editing W<strong>MQ</strong><strong>2200</strong> QProcessor files," <strong>for</strong> more in<strong>for</strong>mation about the ted editor.<br />

Format<br />

ted [-p] [-s] [file]<br />

3843 3744–002 F–33


UNX Utility Comm<strong>and</strong> Reference<br />

uname<br />

uptime<br />

Parameters<br />

-s Suppress diagnostics<br />

-p Specifies a comm<strong>and</strong> prompt.<br />

file Is the file to be read.<br />

This comm<strong>and</strong> prints the <strong>OS</strong> <strong>2200</strong> QProcessor system in<strong>for</strong>mation.<br />

Format<br />

usysreport<br />

uname<br />

Parameters<br />

None<br />

This comm<strong>and</strong> prints how long the <strong>OS</strong> <strong>2200</strong> QProcessor has been up.<br />

Format<br />

uptime<br />

Parameters<br />

None<br />

This comm<strong>and</strong> generates a system report from the <strong>OS</strong> <strong>2200</strong> QProcessor. It includes all<br />

pertinent system files <strong>and</strong> state of the <strong>OS</strong> <strong>2200</strong> QProcessor.<br />

Format<br />

Usysreport qualifier*filename.<br />

Parameters<br />

qualifier*filename specifies the <strong>OS</strong> <strong>2200</strong> file into which you want to save the<br />

usysreport output file to. This output file must be an <strong>OS</strong> <strong>2200</strong> data file that already<br />

exists on your system <strong>and</strong> must be large enough to hold all the in<strong>for</strong>mation<br />

generated by a usysreport. The file or tape device should be at least 1463 tracks<br />

(about 10 megabytes). If the qualifier has a ‘$’ sign, make sure you have a \<br />

(backslash) be<strong>for</strong>e issuing the $ sign.<br />

F–34 3843 3744–002


whoami<br />

whoamilx<br />

UNX Utility Comm<strong>and</strong> Reference<br />

This comm<strong>and</strong> returns the <strong>OS</strong> <strong>2200</strong> user ID in<strong>for</strong>mation <strong>for</strong> this UNX user.<br />

Format<br />

whoami<br />

Parameters<br />

None<br />

This comm<strong>and</strong> returns the <strong>OS</strong> <strong>2200</strong> QProcessor user ID <strong>and</strong> group in<strong>for</strong>mation <strong>for</strong> this<br />

UNX user.<br />

Format<br />

whoamilx<br />

Parameters<br />

None<br />

3843 3744–002 F–35


UNX Utility Comm<strong>and</strong> Reference<br />

F–36 3843 3744–002


Appendix G<br />

<strong>OS</strong> <strong>2200</strong> QProcessor Administrative<br />

Console<br />

G.1. About the <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console<br />

The <strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong> Console is a browser based administration<br />

tool to configure, manage <strong>and</strong> diagnose hardware <strong>and</strong> software issues with the<br />

<strong>OS</strong> <strong>2200</strong> QProcessor. It provides the following capabilities <strong>for</strong> the W<strong>MQ</strong><strong>2200</strong> user:<br />

• System Health to track <strong>and</strong> configure the disk subsystem.<br />

• Manage User Mappings to configure <strong>and</strong> manage <strong>OS</strong> <strong>2200</strong> <strong>and</strong> other remote user<br />

mappings to <strong>OS</strong> <strong>2200</strong> QProcessor users <strong>and</strong> groups.<br />

• Manage <strong>MQ</strong> Log Policy to configure <strong>and</strong> manage the archival of <strong>MQ</strong> log files.<br />

• Manage <strong>MQ</strong> to allow users to:<br />

− View <strong>and</strong> edit the <strong>MQ</strong> configuration files<br />

− View <strong>and</strong> edit queue manager start <strong>and</strong> stop scripts<br />

− Start <strong>and</strong> stop queue managers<br />

− Start or schedule a backup of the /var/mqm file system<br />

− Start or schedule a backup of a specific queue manager<br />

• Collect <strong>MQ</strong> Trace <strong>and</strong> Dumps to collect files <strong>and</strong> download the contents.<br />

• View System Logs to view or download system error logs including queue<br />

manager logs, system logs, <strong>and</strong> installation logs among others.<br />

• Filesystem Backup to backup <strong>and</strong> restore any data stored on the <strong>OS</strong> <strong>2200</strong><br />

QProcessor.<br />

• Manage External Disks to configure <strong>and</strong> manage optional external disk<br />

subsystems.<br />

• Manage HA to configure <strong>and</strong> monitor queue managers <strong>and</strong> their objects under HA<br />

cluster control.<br />

3843 3744–002 G–1


Accessing the <strong>Administration</strong> Console<br />

G.2. Accessing the <strong>Administration</strong> Console<br />

Access to the <strong>Administration</strong> Console is through a web browser. The address<br />

depends on how the <strong>OS</strong> <strong>2200</strong> QProcessor is configured. By default, the <strong>Administration</strong><br />

Console can only be accessed from the Operations Server by using the following<br />

address:<br />

https://172.28.102.11:10000<br />

Refer to the ClearPath Specialty Engine <strong>for</strong> <strong>OS</strong> <strong>2200</strong> Configuration Guide or contact<br />

your system administrator <strong>for</strong> more in<strong>for</strong>mation.<br />

G–2 3843 3744–002


Index<br />

A<br />

access control records (ACRs), 1-19<br />

access, subsystem, 1-19<br />

ACR (See access control records)<br />

addstreams, 7-12 (See also runstreams)<br />

deactivating W<strong>MQ</strong><strong>2200</strong> subsystem, 7-15<br />

troubleshooting, 3-19<br />

administration<br />

backup, 3-18<br />

in<strong>for</strong>mation about W<strong>MQ</strong><strong>2200</strong> version,<br />

displaying, E-14<br />

mqload utility, 3-18, F-18<br />

mqsave utility, 3-18<br />

mqsavelog utility, 3-17<br />

remote, 3-20<br />

restore, 3-18<br />

starting queue manager, 3-3<br />

terminating dem<strong>and</strong> applications, 3-4<br />

terminating queue manager, E-13<br />

tools, 3-19<br />

troubleshooting, 7-1<br />

user ID requirements, 1-20<br />

<strong>WebSphere</strong> <strong>MQ</strong> <strong>for</strong> <strong>OS</strong> <strong>2200</strong>, 3-1<br />

AffinitizeWaitTime parameter, 2-25<br />

alternate W<strong>MQ</strong><strong>2200</strong> installations using<br />

COMUS, 2-49<br />

APISTATUS comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-3<br />

applications<br />

C, 4-1<br />

COBOL, 4-1<br />

compiling <strong>and</strong> linking, 4-17<br />

creating, 4-1<br />

exits, 4-1<br />

message area, 4-13<br />

terminate queue managers, 3-4<br />

trigger, 4-4<br />

user-developed as trigger monitor, 4-9<br />

APPLICID field, 4-6<br />

APPLTYPE field, 4-6<br />

archive, determining file c<strong>and</strong>idates <strong>for</strong>, F-21<br />

auditing, W<strong>MQ</strong><strong>2200</strong>, 2-1<br />

authentication in<strong>for</strong>mation objects, 1-7<br />

authentication, user-provided node, 1-15<br />

authority events, 1-9<br />

3843 3744–002 Index–1<br />

B<br />

back out (Syncpoint coordination), 1-14<br />

back up<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-15<br />

background processes<br />

print files, 7-8<br />

starting, 7-8<br />

BackgroundWait parameter, 2-25<br />

basic mode interface (BMI), 1-17, 1-18<br />

basic receiver (RCVR) channel<br />

definition, 2-35<br />

basic sender (SDR) channel<br />

definition, 2-35<br />

batch<br />

application executable location, 4-7<br />

program, 4-4<br />

BATCH setting, APPLTYPE, 4-7<br />

BatchRunLoc parameter, 2-25<br />

binary data, using in message area, 4-13<br />

BMI, See basic mode interface.<br />

build process<br />

products, 2-50<br />

build steps, 2-51<br />

alternate installation of W<strong>MQ</strong><strong>2200</strong>, 2-51<br />

build, Open Distributed Transaction<br />

Processing batch server, 4-18<br />

build, Open Distributed Transaction<br />

Processing client application, 4-19<br />

buildexit tool, 2-44<br />

buildexit, UNX shell comm<strong>and</strong>, F-10<br />

Business In<strong>for</strong>mation Server, access to<br />

W<strong>MQ</strong><strong>2200</strong> <strong>MQ</strong>I, 1-17, 1-18<br />

C<br />

C applications<br />

compiling <strong>and</strong> linking, 4-18<br />

creating, 4-1


Index<br />

CAT/ERRORS addstream, running<br />

manually, 7-12<br />

chained message<br />

definition, 4-16<br />

headers, 4-16<br />

challenges<br />

data conversion, 4-13<br />

data transmission, 4-13<br />

change<br />

user mappings, 3-14<br />

change object events, 1-11<br />

channel<br />

definition, 1-7<br />

exits, 4-2, 4-4<br />

message, 1-7<br />

Message Queuing Interface (<strong>MQ</strong>I), 1-7<br />

channel <strong>and</strong> bridge events, 1-10<br />

channel events, 1-10<br />

client applications, <strong>WebSphere</strong> <strong>MQ</strong>, 5-1<br />

client connections, 5-1<br />

COBOL applications<br />

creating, 4-1<br />

sample programs, 4-20<br />

co-install, 2-2, 2-3<br />

COMAPI (See Communications Application<br />

Program Interface)<br />

comm<strong>and</strong>, 1-8<br />

comm<strong>and</strong> combination examples, B-1<br />

comm<strong>and</strong> events, 1-12<br />

commit<br />

message, 8-7<br />

Syncpoint coordination, 1-14<br />

communcation path between queue<br />

managers, 2-34<br />

communications<br />

listener setup, 2-34<br />

port setup, 2-34<br />

setup, 2-33<br />

Communications Application Program<br />

Interface (COMAPI), 1-1<br />

components<br />

Message Queuing Interface (<strong>MQ</strong>I), 1-14<br />

<strong>WebSphere</strong> <strong>MQ</strong>, 1-13<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-14<br />

CONCURRENCY configuration<br />

parameter, 4-8<br />

configurable values<br />

AffinitizeWaitTime, 2-25<br />

BackgroundWait, 2-25<br />

BatchRunLoc, 2-25<br />

Convert<strong>MQ</strong>MDE, 2-25<br />

summary, 2-23<br />

configuration<br />

advanced, 2-44<br />

examples, 4-11<br />

file, 2-22<br />

parameters(See also configurable<br />

values, 2-22<br />

test, 2-20<br />

values, 2-23<br />

verification, 2-20<br />

W<strong>MQ</strong><strong>2200</strong>, 2-22<br />

configuration events, 1-11<br />

change object, 1-11<br />

create object, 1-11<br />

delete object, 1-11<br />

refresh object, 1-12<br />

configuration values<br />

DaemonKeyId, 2-27<br />

DaemonRetryInt, 2-27<br />

detail, 2-25<br />

FileSystem, 2-28<br />

HighOffLoadCount, 2-28<br />

ICLogLevel, 2-29<br />

LinuxIP, 2-29<br />

LinuxPort, 2-29<br />

Log<strong>MQ</strong>AuthorityErrors, 2-29<br />

LowOffLoadCount, 2-30<br />

MaxOffLoads, 2-30<br />

McbEntryBdi, 2-30<br />

MonitorInterval, 2-30<br />

<strong>MQ</strong>Authority, 2-30<br />

<strong>MQ</strong>LocalLanguage, 2-32<br />

<strong>MQ</strong>LogLevel, 2-32<br />

PrintConnectionDownWarning, 2-32<br />

RealTimeLevel, 2-33<br />

TermWaitTime, 2-33<br />

configure triggering<br />

DEFINE PROCESS, 4-5<br />

DEFINE QLOCAL, 4-5<br />

CONNAME parameter, 2-35<br />

connecting two queue managers, 2-35<br />

considerations, <strong>MQ</strong>GMO_CONVERT, 4-16<br />

continuation line,UNX shell processor, 1-21<br />

control comm<strong>and</strong>s<br />

dspmqaut, 3-10<br />

setmqaut, 3-10<br />

conversion exits,data, 4-1, 4-3<br />

Convert<strong>MQ</strong>MDE parameter, 2-25<br />

CORE comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-3<br />

core dumps, 7-7<br />

core,UNX shell comm<strong>and</strong>, F-11<br />

cpuinfo, UNX shell comm<strong>and</strong>, F-11<br />

create object events, 1-11<br />

creating exit code, 2-44<br />

Index–2 3843 3744–002


crtmqcvx program, 4-3<br />

customization<br />

W<strong>MQ</strong><strong>2200</strong>, 2-22, 3-7<br />

D<br />

daemon keyin<br />

parameters, 7-8, E-1<br />

daemon, background process, E-1<br />

DaemonKeyId parameter, 2-27<br />

DaemonRetryInt parameter, 2-27<br />

data<br />

assurance (Syncpoint), 1-14<br />

container files (See container files)<br />

conversion exits, 4-1, 4-3<br />

<strong>for</strong>mat, 4-1<br />

<strong>for</strong>matting between multiple<br />

plat<strong>for</strong>ms, A-1<br />

structure <strong>MQ</strong>TMC2, 4-10<br />

DEACT, 7-15<br />

dead-letter queue (DLQ) h<strong>and</strong>ler, F-2<br />

definition<br />

PROCESS, 4-6<br />

DefPersistence attribute, 1-17<br />

delete object events, 1-11<br />

deploying exit code, 2-44<br />

diagnostics<br />

gathering utility, 7-9, 7-10<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-15<br />

diagnostics gathering utility<br />

(DIAGN/RUN), 7-10<br />

diskinfo, UNX shell comm<strong>and</strong>, F-12<br />

display<br />

user mappings, 3-15<br />

distribution lists, <strong>WebSphere</strong> <strong>MQ</strong> Queue<br />

Manager (QM), 1-15<br />

DOWN comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-4<br />

dspmqtrn comm<strong>and</strong>, 8-9<br />

dspmqtrn_all, UNX shell comm<strong>and</strong>, F-12<br />

dump, Programmers Advanced Debugging<br />

System (PADS), F-11<br />

dumpini, UNX shell comm<strong>and</strong>, F-13<br />

dumps<br />

core, 7-7<br />

dynamic (See dynamic dumps)<br />

static (See static dumps)<br />

Index<br />

3843 3744–002 Index–3<br />

E<br />

editor<br />

<strong>OS</strong> <strong>2200</strong>, 3-7<br />

<strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console, 3-7<br />

TED comm<strong>and</strong>, 3-7<br />

elements (See also files)<br />

<strong>MQ</strong>SRUN, troubleshooting, 7-8<br />

Encoding, 4-14<br />

error in<strong>for</strong>mation<br />

obtaining, 7-4<br />

errors, UNX shell comm<strong>and</strong>, F-13<br />

events<br />

instrumentation, 1-9<br />

queue manager, 1-9<br />

tracing, 7-5<br />

trigger, 4-4<br />

examples<br />

application programs,compiling <strong>and</strong><br />

linking, 4-17<br />

COBOL programs, 4-20<br />

in W<strong>MQ</strong>$*<strong>MQ</strong>STOOLS, 3-19<br />

install <strong>and</strong> test configuration, 2-20<br />

<strong>MQ</strong>S<strong>2200</strong> API scenarios, B-1<br />

trigger programs, 4-11<br />

TX verbs, B-1<br />

verb sequences, B-1<br />

execution, diagnostics gathering utility, 7-10<br />

exits<br />

available <strong>for</strong> definition, 4-2<br />

building, 4-4<br />

calling, 4-4<br />

channel, 4-2<br />

creating <strong>and</strong> using, 4-3<br />

data conversion, 4-1, 4-4<br />

definition, 4-1<br />

user-written, 4-1<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-15<br />

Explorer, <strong>WebSphere</strong> <strong>MQ</strong>, 3-20<br />

external transaction manager, 2-48<br />

F<br />

FCSS (See file control superstructure)<br />

file (See also files)<br />

control superstructure (FCSS) resource<br />

manager, 1-16<br />

<strong>OS</strong> <strong>2200</strong> QProcessor, reinitializing, 7-15<br />

fileinfo, UNX shell comm<strong>and</strong>, F-13


Index<br />

files (See also elements <strong>and</strong> file)<br />

container (See container files)<br />

determining c<strong>and</strong>idates <strong>for</strong> archive, F-21<br />

index (See index files)<br />

populated during installation, 2-18<br />

FileSystem parameter, 2-28<br />

fixwebminlog, UNX shell comm<strong>and</strong>, F-13<br />

fundamental security environment, 1-19<br />

G<br />

gathering utility, diagnostics, 7-9, 7-10<br />

generate multiple alternate W<strong>MQ</strong><strong>2200</strong><br />

installations, 2-49<br />

generate multiple W<strong>MQ</strong><strong>2200</strong><br />

installations, 2-56<br />

global transactions<br />

resolving incomplete, 8-7<br />

Greenwich Mean Time (See Coordinated<br />

Universal Time)<br />

groupadd, UNX shell comm<strong>and</strong>, F-14<br />

groupdel, UNX shell comm<strong>and</strong>, F-14<br />

grouplist, UNX shell comm<strong>and</strong>, F-14<br />

groupmembers, UNX shell comm<strong>and</strong>, F-15<br />

H<br />

h9ton8 function (h9ton8/o), A-9<br />

h9ton8/o library, A-9<br />

hardware requirements, 1-18<br />

HELP comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-5<br />

High Availability, 6-1<br />

per<strong>for</strong>mance, 6-2<br />

recommendations, 6-2<br />

W<strong>MQ</strong><strong>2200</strong> specific changes, 6-1<br />

HighOffLoadCount parameter, 2-28<br />

host-to-network functions, h9ton8/o,<br />

h9ton8, A-9<br />

host-to-network functions, hton/o<br />

htonl, A-1<br />

htons, A-2<br />

shtonl, A-2<br />

shtons, A-3<br />

host-to-network functions, hton-ucob/o<br />

HTONL, A-5<br />

HTONS, A-6<br />

SHTONL, A-5<br />

SHTONS, A-6<br />

hton/o library, A-1<br />

htondb/o library, A-5<br />

htondb-ucob/o library, A-8<br />

htonl function (hton/o), A-1<br />

HTONL function (hton-ucob/o), A-5<br />

htons function (hton/o), A-2<br />

HTONS function (hton-ucob/o), A-6<br />

hton-ucob/o library, A-5<br />

Index–4 3843 3744–002<br />

I<br />

IBM documentation <strong>for</strong> <strong>MQ</strong>Series, 1-2<br />

ICLOG comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-5<br />

ICLogLevel parameter, 2-29<br />

identity, UNX shell comm<strong>and</strong>, F-15<br />

in<strong>for</strong>mation<br />

build, 2-51<br />

core dumps, 7-7<br />

IBM product, 1-2<br />

<strong>MQ</strong>S<strong>2200</strong> version, displaying, E-14<br />

only, requesting on files, F-21<br />

status of externally managed<br />

transactions, 8-9<br />

troubleshooting, 7-1<br />

inhibit events, 1-9<br />

init, UNX shell comm<strong>and</strong>, F-15<br />

initiation queue, 4-4<br />

input, terminating to runmqdlq, F-2<br />

installation<br />

alternate build, 2-55<br />

verification, 2-20<br />

W<strong>MQ</strong><strong>2200</strong>, 2-16<br />

installation <strong>and</strong> migration considerations, 2-2<br />

instrumentation events, 1-9<br />

channel <strong>and</strong> bridge, 1-10<br />

comm<strong>and</strong>, 1-12<br />

configuration, 1-11<br />

logger, 1-12<br />

per<strong>for</strong>mance, 1-11<br />

queue manager, 1-9<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-15<br />

integration, Open Distributed Transaction<br />

Processing, 1-16<br />

Interconnect (IC<strong>2200</strong>), 1-18<br />

interfaces, <strong>WebSphere</strong> <strong>MQ</strong>, 1-13<br />

Inter-Process Communication (IPC)<br />

monitoring, F-28<br />

IPC (See Inter-Process Communication)


L<br />

libraries<br />

h9ton8/o, A-9<br />

hton/o, A-1<br />

htondb/o, A-5<br />

htondb-ucob/o, A-8<br />

hton-ucob/o, A-5<br />

limitations, W<strong>MQ</strong><strong>2200</strong>, D-1<br />

linear logging, 3-17<br />

Linux type shell comm<strong>and</strong>s, F-4<br />

LinuxIP parameter, 2-29<br />

LinuxPort parameter, 2-29<br />

listcores, UNX shell comm<strong>and</strong>, F-16<br />

listener setup, 2-34<br />

listeners, 1-8<br />

backlog, 5-2<br />

start, 2-34<br />

stop, 2-35<br />

lists, distribution, 1-15<br />

local events, 1-9<br />

location of start runstream, 2-25<br />

log files, 3-16<br />

logger events, 1-12<br />

logging, 1-14<br />

linear, 3-17<br />

Log<strong>MQ</strong>AuthorityErrors parameter, 2-29<br />

logs, UNX shell comm<strong>and</strong>, F-17<br />

LowOffLoadCount parameter, 2-30<br />

M<br />

managers (See queue managers or<br />

resource managers)<br />

MaxActiveChannels attribute, 5-2<br />

MaxOffLoads parameter, 2-30<br />

MCA (See Message Channel Agents)<br />

MCB (See Message Control Bank)<br />

MCBBDI value, 4-8<br />

McbEntryBdi parameter, 2-30<br />

media,release, 2-1<br />

meminfo, UNX shell comm<strong>and</strong>, F-17<br />

memory<br />

usage, monitoring, F-28<br />

message<br />

area, using binary data, 4-13<br />

commit, 8-7, 8-9<br />

definition, 1-5<br />

<strong>for</strong>mats, 4-14<br />

multiple on same queue, 1-15<br />

queuing (See also queues)<br />

Index<br />

queuing, concepts <strong>and</strong> terminology, 1-4<br />

queuing, integrity, 1-17<br />

recovery, 8-1<br />

resolving manually, 8-7<br />

roll back, 8-7, 8-9<br />

status, 8-9<br />

trigger, 4-4<br />

message channel, 2-33<br />

Message Channel Agents (MCA), 2-34<br />

Message Control Bank (MCB)<br />

APPLTYPE setting (TIP), 4-8<br />

resource manager, 1-16<br />

message data<br />

built-in, 4-14<br />

user-defined, 4-14<br />

message <strong>for</strong>mats<br />

built-in, 4-14<br />

user-defined, 4-14<br />

message queues, F-28<br />

Message Queuing Interface (<strong>MQ</strong>I), 1-14<br />

message queuing, definition, 1-4<br />

migration, 2-2<br />

monitor (See trigger monitoring)<br />

MonitorInterval parameter, 2-30<br />

<strong>MQ</strong> per<strong>for</strong>mance considerations, 2-15<br />

<strong>MQ</strong>Authority parameter, 2-30, 3-3<br />

mqexport, UNX shell comm<strong>and</strong>, F-18<br />

<strong>MQ</strong>GMO_CONVERT, overview, 4-16<br />

<strong>MQ</strong>I (See Message Queuing Interface)<br />

<strong>MQ</strong>I client connections, 5-1<br />

mqimport, UNX shell comm<strong>and</strong>, F-18<br />

mqload, UNX shell comm<strong>and</strong>, F-18<br />

mqloadlog, UNX shell comm<strong>and</strong>, F-19<br />

<strong>MQ</strong>LocalLanguage parameter, 2-32<br />

<strong>MQ</strong>LOG comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-6<br />

<strong>MQ</strong>LogLevel parameter, 2-32<br />

<strong>MQ</strong>M mappings, 3-15<br />

<strong>MQ</strong>MDE (Message Descriptor<br />

Extension), 4-14<br />

<strong>MQ</strong>RFH (Reference Header), 4-14<br />

-<strong>MQ</strong>S- mappings, 3-15<br />

<strong>MQ</strong>S traces, 7-5<br />

<strong>MQ</strong>S<strong>2200</strong> (See product)<br />

mqsave, UNX shell comm<strong>and</strong>, F-20<br />

mqsavelog, UNX shell comm<strong>and</strong>, F-21<br />

<strong>MQ</strong>Series<br />

comm<strong>and</strong>s, F-4<br />

concepts, 1-4<br />

<strong>for</strong> ClearPath <strong>OS</strong> <strong>2200</strong> (See product)<br />

IBM documentation, 1-2<br />

<strong>MQ</strong>SRUN element, 7-8<br />

<strong>MQ</strong>TMC2data structure, 4-10<br />

mquseradd, UNX shell comm<strong>and</strong>, 3-13, F-24<br />

3843 3744–002 Index–5


Index<br />

mquserdel, UNX shell comm<strong>and</strong>, F-25<br />

mquserlist, UNX shell comm<strong>and</strong>, F-26<br />

multiple<br />

plat<strong>for</strong>ms, data <strong>for</strong>matting, A-1<br />

queues, setting up one runstream to<br />

h<strong>and</strong>le, 4-7<br />

W<strong>MQ</strong><strong>2200</strong> installations, 2-56<br />

N<br />

n8toh9 function (h9ton8/o), A-10<br />

namelist, 1-7<br />

network-to-host functions, h9ton8/o,<br />

n8toh9, A-10<br />

network-to-host functions, hton/o<br />

ntohl, A-3<br />

ntohs, A-4<br />

sntohl, A-4<br />

sntohs, A-4<br />

network-to-host functions, hton-ucob/o<br />

NTOHL, A-7<br />

NTOHS, A-8<br />

SNTOHL, A-7<br />

SNTOHS, A-8<br />

node authentication, user-provided, 1-15<br />

nonpersistent message type, Open<br />

Distributed Transaction<br />

Processing, 1-17<br />

ntohl function (hton/o), A-3<br />

NTOHL function (hton-ucob/o), A-7<br />

ntohs function (hton/o), A-4<br />

NTOHS function (hton-ucob/o), A-8<br />

O<br />

OAM (See Object Authority Manager)<br />

Object Authority Manager (OAM), 1-15<br />

objects<br />

authentication in<strong>for</strong>mation, 1-7<br />

channels, 1-7<br />

definition, 1-5<br />

listeners, 1-8<br />

namelists, 1-7<br />

process definitions, 1-7<br />

queue managers, 1-6<br />

queues, 1-6<br />

remote administration, 3-20<br />

services, 1-8<br />

OHIGH comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-7<br />

OLOW comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-7<br />

OLTP setting, APPLTYPE, 4-7<br />

OLTPS setting, APPLTYPE, 4-8<br />

Open Distributed Transaction Processing<br />

configuring multiple W<strong>MQ</strong><strong>2200</strong><br />

installations, 2-57<br />

configuring W<strong>MQ</strong><strong>2200</strong> as a static<br />

resource manager, 2-47<br />

examples, B-1<br />

global transactions, incomplete, 8-7<br />

integration, 1-16<br />

persistent <strong>and</strong> nonpersistent message<br />

type, 1-17<br />

recovery<br />

server (TMSC), 2-49<br />

TX verbs, samples, B-1<br />

W<strong>MQ</strong><strong>2200</strong> as resource manager, 1-17<br />

Open Distributed Transaction Processing<br />

recovery server, 2-49<br />

Open Distributed Transcation Processing<br />

installing W<strong>MQ</strong><strong>2200</strong> as a static resource<br />

manager, 2-56<br />

<strong>OS</strong> <strong>2200</strong> QProcessor <strong>Administration</strong><br />

Console<br />

access, G-2<br />

capabilities, G-1<br />

<strong>OS</strong> <strong>2200</strong> QProcessor architecture, 4-13<br />

<strong>OS</strong> <strong>2200</strong> QProcessor user mappings, 3-13<br />

Index–6 3843 3744–002<br />

P<br />

paging function, comm<strong>and</strong>s, F-2<br />

per<strong>for</strong>mance events, 1-10, 1-11<br />

queue depth, 1-11<br />

queue service interval, 1-11<br />

Persistence field of <strong>MQ</strong>MD, 1-17<br />

persistent message type, Open Distributed<br />

Transaction Processing, 1-17<br />

pid (process-id), 1-20<br />

port setup, 2-34<br />

prerequisites <strong>for</strong> using product, 1-1<br />

print files, background process, 7-8<br />

PrintConnectionDownWarning<br />

parameter, 2-32<br />

problems, troubleshooting, 7-1<br />

procedure<br />

shutdown W<strong>MQ</strong><strong>2200</strong>, 3-2<br />

startup W<strong>MQ</strong><strong>2200</strong>, 3-2<br />

process<br />

background, 7-8<br />

definitions, 1-7<br />

listeners, 1-8


PROCESS definition, 4-6<br />

process-id (pid), 1-20<br />

product<br />

application program interface, 1-14<br />

components, 1-13<br />

configuration, 2-22<br />

customization, 3-7<br />

installation, 2-16<br />

interfaces, 1-13<br />

limitations, D-1<br />

overview, 1-1<br />

prerequisites <strong>for</strong> using, 1-1<br />

restrictions, D-1<br />

scenarios, B-1<br />

programs<br />

crtmqcvx, 4-3<br />

sample, 4-17<br />

Q<br />

QM (See <strong>MQ</strong>Series Queue Manager)<br />

queue<br />

definition, 1-5<br />

queue depth events, 1-11<br />

queue manager events<br />

authority, 1-9<br />

channel, 1-10<br />

inhibit, 1-9<br />

local, 1-9<br />

per<strong>for</strong>mance, 1-10<br />

remote, 1-9<br />

start <strong>and</strong> stop, 1-10<br />

queue manager log files, 3-16<br />

queue manager traces<br />

obtaining, 7-5<br />

queue managers<br />

definition, 1-6<br />

events, 1-9<br />

remote administration, 3-20<br />

services provided by, 1-6, 1-14<br />

starting, 3-3<br />

terminating, E-13<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-14<br />

queue service interval events, 1-11<br />

queues (See also message queuing)<br />

initiation, 4-4<br />

setting up one runstream to h<strong>and</strong>le<br />

multiple, 4-7<br />

<strong>WebSphere</strong> <strong>MQ</strong> object, 1-6<br />

queuing, definition, 1-5<br />

Index<br />

3843 3744–002 Index–7<br />

R<br />

RealTimeLevel parameter, 2-33<br />

receiving system, 2-36<br />

recommendations, user application<br />

development, 4-17<br />

recovery<br />

server, TMSC, 2-49<br />

<strong>WebSphere</strong> <strong>MQ</strong>, 8-1<br />

recovery logs, 8-1<br />

refresh object events, 1-12<br />

release media, 2-1<br />

remote administration, 3-20<br />

remote events, 1-9<br />

remote user ID<br />

change, 3-14, 3-15<br />

delete, 3-14<br />

display, 3-15<br />

replacement, 2-2, 2-3<br />

report, system, F-34<br />

requirements<br />

build, 2-50<br />

<strong>for</strong> administration, 1-20<br />

hardware, 1-18<br />

software, 1-18<br />

user ID, 1-19<br />

resource manager<br />

configuring under Open Distributed<br />

Transaction Processing, 2-47<br />

Resource Manager (RM), 1-16<br />

resource managers<br />

FCSS, 1-16<br />

MCB, 1-16<br />

<strong>MQ</strong>S<strong>2200</strong> under Open Distributed<br />

Transaction Processing, 2-44<br />

static, 2-44<br />

Universal Database Control, 1-16<br />

W<strong>MQ</strong><strong>2200</strong> under Open Distributed<br />

Transaction Processing, 1-16, 1-17<br />

resources, in<strong>for</strong>mation about system, F-28,<br />

F-33<br />

restore<br />

data <strong>for</strong> queue manager, F-18<br />

log files, F-19<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-15<br />

restrictions<br />

<strong>MQ</strong>I clients, 5-3<br />

W<strong>MQ</strong><strong>2200</strong>, D-1<br />

RM (See Resource Manager)<br />

roll back<br />

message, 8-7


Index<br />

rootmod, UNX shell comm<strong>and</strong>, F-27<br />

rsvmqtrn comm<strong>and</strong>, 8-9<br />

runmqdlq control comm<strong>and</strong>, F-2<br />

RUN<strong>MQ</strong>LSR comm<strong>and</strong>, 2-34<br />

runmqsc definition, 4-5<br />

RUN<strong>MQ</strong>SC START LISTENER comm<strong>and</strong>, 2-35<br />

runstreams (See also addstreams)<br />

reinitializing W<strong>MQ</strong><strong>2200</strong> file system, 7-15<br />

setting up one to h<strong>and</strong>le multiple<br />

queues, 4-7<br />

S<br />

samples (See examples)<br />

save (See back up)<br />

saveqmgr, UNX shell comm<strong>and</strong>, F-27<br />

scenarios, <strong>MQ</strong>S<strong>2200</strong> API <strong>and</strong> TX verbs, B-1<br />

SecOpt security environment, 1-19<br />

secure access, queues, 3-8<br />

security<br />

environments, 1-19<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-15<br />

semaphores, F-28<br />

sending system, 2-36<br />

server, 1-8<br />

service objects, 1-8<br />

comm<strong>and</strong>s, 1-8<br />

servers, 1-8<br />

services provided by queue manager, 1-6,<br />

1-14<br />

shared memory, monitoring usage, F-28<br />

shell<br />

processor (UNX), 1-20, F-1<br />

shtonl function (hton/o), A-2<br />

SHTONL function (hton-ucob/o), A-5<br />

shtons function (hton/o), A-3<br />

SHTONS function (hton-ucob/o), A-6<br />

SHUTDOWN comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-7<br />

shutdown W<strong>MQ</strong><strong>2200</strong>, 3-2<br />

sntohl function (hton/o), A-4<br />

SNTOHL function (hton-ucob/o), A-7<br />

sntohs function (hton/o), A-4<br />

SNTOHS function (hton-ucob/o), A-8<br />

software requirements, 1-18<br />

ss display, F-28<br />

ss, UNX shell comm<strong>and</strong>, F-28<br />

ss-m display, F-29<br />

ss-q display, F-30<br />

start <strong>and</strong> stop events, 1-10<br />

START comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-8<br />

start listeners, 2-34<br />

start queue manager, 3-3<br />

strmqm comm<strong>and</strong>, 3-4<br />

starting<br />

of daemon keyin, 7-7<br />

of daemon keyin, E-1<br />

of trigger monitor, 4-12<br />

startup W<strong>MQ</strong><strong>2200</strong>, 3-2<br />

static resource manager, <strong>MQ</strong>S<strong>2200</strong> under<br />

Open Distributed Transaction<br />

Processing, 2-44<br />

static resource manager, W<strong>MQ</strong><strong>2200</strong> under<br />

Open Distributed Transaction<br />

Processing, 2-47, 2-56<br />

STATS comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-8<br />

STATS OFF comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-9<br />

STATs ON comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-9<br />

STATS RESET comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-9<br />

STATUS comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-9<br />

sticking transaction, 4-20<br />

programs, 4-20<br />

stop listeners, 2-35<br />

strmqm comm<strong>and</strong>, 3-4<br />

subsystem, deactivating W<strong>MQ</strong><strong>2200</strong><br />

subsystems, 7-15<br />

Syncpoint<br />

Open Distributed Transaction<br />

Processing, 1-17<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-14<br />

sysinfo, UNX shell comm<strong>and</strong>, F-33<br />

system<br />

resource use, F-33<br />

system files installed<br />

configuartion, 2-28<br />

system, resource use, F-28, F-33<br />

Index–8 3843 3744–002<br />

T<br />

tape assign options, 2-1<br />

TED<br />

comm<strong>and</strong>s, C-3<br />

<strong>for</strong>mat <strong>and</strong> options, C-1<br />

ted, UNX shell comm<strong>and</strong>, F-33<br />

TERM comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-13<br />

terminate queue managers, 3-4<br />

termination<br />

of dem<strong>and</strong> applications, 3-4<br />

of input to runmqdlq, F-2<br />

of queue managers, E-13<br />

of trigger monitor, 4-13


terminology, message queuing, 1-4<br />

TermWaitTime parameter, 2-33<br />

test configuration, 2-20<br />

time (See Coordinated Universal Time)<br />

TIP (See also TIP files)<br />

setting, APPLTYPE, 4-8<br />

TIP files (See also TIP)<br />

TIP/HVTIP applications<br />

user mappings, 3-16<br />

TMSC program, 2-48, 2-49<br />

tool to deploy exit code<br />

buildexit, 2-44<br />

tools, 3-19<br />

traces, 7-5<br />

transaction manager, B-2<br />

transactional support, 1-16<br />

transactions, resolving<br />

incomplete global, 8-7<br />

trigger<br />

creating user-defined monitor, 4-9<br />

definition, 4-4<br />

examples, 4-11<br />

monitoring, 4-10<br />

starting monitor, 4-12<br />

terminating monitor, 4-13<br />

<strong>WebSphere</strong> <strong>MQ</strong> Queue Manager<br />

(QM), 1-15<br />

troubleshooting<br />

background process print files, 7-8<br />

core dump, 7-7<br />

daemon keyin, 7-8, E-1<br />

deactivating W<strong>MQ</strong><strong>2200</strong> subsystems, 7-15<br />

gather system in<strong>for</strong>mation, 7-1<br />

<strong>MQ</strong>SRUN elements, 7-8<br />

obtaining error in<strong>for</strong>mation, 7-4<br />

obtaining queue manager traces, 7-5<br />

overview, 7-1<br />

queue manager status in<strong>for</strong>mation, 7-1<br />

recover unstable W<strong>MQ</strong><strong>2200</strong>, 7-15<br />

reinitializing <strong>OS</strong> <strong>2200</strong> QProcessor<br />

system, 7-15<br />

TX verbs, samples, B-1<br />

types of user IDs, 3-9<br />

U<br />

uname, UNX shell comm<strong>and</strong>, F-34<br />

Universal Coordinated Time (See<br />

Coordinated Universal Time)<br />

Universal Data Control resource<br />

manager, 1-16<br />

UNX shell<br />

comm<strong>and</strong>s, F-1<br />

traces, 7-6<br />

using an asterisk, F-1<br />

UNX shell comm<strong>and</strong>s, F-4<br />

UNX shell processor<br />

checking <strong>for</strong> availability, 7-9<br />

continuation line, 1-21<br />

<strong>for</strong>mat, F-1<br />

overview <strong>and</strong> <strong>for</strong>mat, 1-20<br />

ss comm<strong>and</strong>, F-28<br />

UP comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-13<br />

upgrading from <strong>MQ</strong>S<strong>2200</strong>, 2-2<br />

co-install, 2-2<br />

migration, 2-2<br />

replacement, 2-2<br />

uptime, UNX shell comm<strong>and</strong>, F-34<br />

user ID<br />

<strong>OS</strong> <strong>2200</strong>, 3-9<br />

remote, 3-9<br />

requirements, 1-19<br />

user mappings<br />

create, 3-13<br />

delete, 3-14<br />

user-defined<br />

group permissions, 1-15<br />

trigger monitor, 4-9<br />

user-provided node authentication, 1-15<br />

using channels, connecting queue<br />

managers, 2-35<br />

using, daemon keyin, 7-8, E-1<br />

Usysreport diagnostics, 7-11<br />

usysreport, UNX shell comm<strong>and</strong>, F-34<br />

UTC (See Coordinated Universal Time)<br />

Index<br />

3843 3744–002 Index–9<br />

V<br />

values (See configurable values)<br />

verbs, sample sequences, B-1<br />

verification of installation <strong>and</strong><br />

configuration, 2-20<br />

VERSION comm<strong>and</strong>, W<strong>MQ</strong><strong>2200</strong>, E-14<br />

W<br />

<strong>WebSphere</strong> <strong>MQ</strong><br />

client applications, 5-1<br />

Explorer, 3-20<br />

Log Manager, 1-14<br />

Object Authority Manager (OAM), 1-15


Index<br />

objects, 1-5<br />

Queue Manager (QM), 1-14<br />

Syncpoint, 1-14, 1-17<br />

<strong>WebSphere</strong> <strong>MQ</strong> control comm<strong>and</strong>s, 3-10<br />

<strong>WebSphere</strong> <strong>MQ</strong> encodings, 4-14<br />

<strong>WebSphere</strong> <strong>MQ</strong> listener process, 2-34<br />

<strong>WebSphere</strong> <strong>MQ</strong> log files,recovery, 8-1<br />

<strong>WebSphere</strong> <strong>MQ</strong> OAM authentication, 3-11<br />

<strong>WebSphere</strong> <strong>MQ</strong> Object Authority Manager<br />

(OAM), 3-9<br />

<strong>WebSphere</strong> <strong>MQ</strong> recovery capabilities, 8-1<br />

<strong>WebSphere</strong> <strong>MQ</strong> XA/Open XA interface<br />

rules, 2-48<br />

whoami, UNX shell comm<strong>and</strong>, F-35<br />

whoamilx, UNX shell comm<strong>and</strong>, F-35<br />

W<strong>MQ</strong><strong>2200</strong> architecture, 3-1<br />

W<strong>MQ</strong><strong>2200</strong> daemon background run, 7-7<br />

W<strong>MQ</strong><strong>2200</strong> daemon START comm<strong>and</strong>, 3-4<br />

W<strong>MQ</strong><strong>2200</strong> utilities, F-4<br />

Index–10 3843 3744–002<br />

X<br />

XA rules, B-2<br />

XA/Open XA interface rules, 2-48<br />

XA-compliant<br />

Resource Manager (RM), 1-16<br />

transactional coordination, 1-14<br />

XATMI calls, 4-8, B-1


© 2010 Unisys Corporation.<br />

All rights reserved.<br />

*38433744-002*<br />

3843 3744–002

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!