Building the server environment

It is assumed that you have a working TUXEDO environment.

To build the server environment for WebSphere MQ for AIX:

  1. Create a directory (for example, <APPDIR>) in which the server environment is built and execute all commands in this directory.
  2. Export the following environment variables, where TUXDIR is the root directory for TUXEDO:
           $ export CFLAGS="-I /usr/mqm/inc -I /<APPDIR> -L /usr/mqm/lib"
           $ export LDOPTS="-lmqm -lmqmcs"
           $ export FIELDTBLS=/usr/mqm/samp/amqstxvx.flds
           $ export VIEWFILES=/<APPDIR>/amqstxvx.V
           $ export LIBPATH=$TUXDIR/lib:/usr/mqm/lib:/lib
  3. Add the following to the TUXEDO file udataobj/RM
           MQSeries_XA_RMI:MQRMIXASwitchDynamic: -lmqmxa -lmqm -lmqmcs   
  4. Run the commands:
           $ mkfldhdr    /usr/mqm/samp/amqstxvx.flds
           $ viewc       /usr/mqm/samp/amqstxvx.v
           $ buildtms    -o MQXA -r MQSeries_XA_RMI
           $ buildserver -o MQSERV1 -f /usr/mqm/samp/amqstxsx.c \
                  -f /usr/mqm/lib/libmqm.a \
                  -r MQSeries_XA_RMI -s MPUT1:MPUT \
                  -s MGET1:MGET \
                  -v -bshm
           $ buildserver -o MQSERV2 -f /usr/mqm/samp/amqstxsx.c \
                  -f /usr/mqm/lib/libmqm.a \
                  -r MQSeries_XA_RMI -s MPUT2:MPUT
                  -s MGET2:MGET \
                  -v -bshm
           $ buildclient -o doputs  -f /usr/mqm/samp/amqstxpx.c \
                  -f /usr/mqm/lib/libmqm.a
           $ buildclient -o dogets  -f /usr/mqm/samp/amqstxgx.c \
                  -f /usr/mqm/lib/libmqm.a
  5. Edit ubbstxcx.cfg and add details of the machine name, working directories, and queue manager as necessary:
           $ tmloadcf    -y /usr/mqm/samp/ubbstxcx.cfg
  6. Create the TLOGDEVICE:
          $tmadmin -c
    A prompt then appears. At this prompt, enter:
          > crdl -z /<APPDIR>/TLOG1
  7. Start the queue manager:
           $ strmqm
  8. Start Tuxedo:
           $ tmboot -y

You can now use the doputs and dogets programs to put messages to a queue and retrieve them from a queue.

To build the server environment for WebSphere MQ for Solaris:

  1. Create a directory (for example, <APPDIR>) in which the server environment is built and execute all commands in this directory.
  2. Export the following environment variables, where TUXDIR is the root directory for TUXEDO:
           $ export CFLAGS="-I /<APPDIR>"
           $ export FIELDTBLS=amqstxvx.flds
           $ export VIEWFILES=amqstxvx.V
           $ export SHLIB_PATH=$TUXDIR/lib:/opt/mqm/lib:/lib
           $ export LD_LIBRARY_PATH=$TUXDIR/lib:/opt/mqm/lib:/lib
  3. Add the following to the TUXEDO file udataobj/RM (RM must include /opt/mqm/lib/libmqmcs and /opt/mqm/lib/libmqmzse).
      MQSeries_XA_RMI:MQRMIXASwitchDynamic: \
      /opt/mqm/lib/libmqmxa.a /opt/mqm/lib/libmqm.so \
      /opt/tuxedo/lib/libtux.a /opt/mqm/lib/libmqmcs.so  \
      /opt/mqm/lib/libmqmzse.so
  4. Run the commands:
           $ mkfldhdr    amqstxvx.flds
           $ viewc       amqstxvx.v
           $ buildtms    -o MQXA -r MQSeries_XA_RMI
           $ buildserver -o MQSERV1 -f amqstxsx.c \
                  -f /opt/mqm/lib/libmqm.so \
                  -r MQSeries_XA_RMI -s MPUT1:MPUT \
                  -s MGET1:MGET \
                  -v -bshm
                  -l -ldl
           $ buildserver -o MQSERV2 -f amqstxsx.c \
                  -f /opt/mqm/lib/libmqm.so \
                  -r MQSeries_XA_RMI -s MPUT2:MPUT \
                  -s MGET2:MGET \
                  -v -bshm
                  -l -ldl
           $ buildclient -o doputs  -f amqstxpx.c \
                  -f /opt/mqm/lib/libmqm.so  \
                  -f /opt/mqm/lib/libmqmzse.co  \
                  -f /opt/mqm/lib/libmqmcs.so
           $ buildclient -o dogets  -f amqstxgx.c \
                  -f /opt/mqm/lib/libmqm.so
                  -f /opt/mqm/lib/libmqmzse.co  \
                  -f /opt/mqm/lib/libmqmcs.so
  5. Edit ubbstxcx.cfg and add details of the machine name, working directories, and queue manager as necessary:
           $ tmloadcf    -y ubbstxcx.cfg
  6. Create the TLOGDEVICE:
          $tmadmin -c
    A prompt then appears. At this prompt, enter:
          > crdl -z /<APPDIR>/TLOG1
  7. Start the queue manager:
           $ strmqm
  8. Start Tuxedo:
           $ tmboot -y

You can now use the doputs and dogets programs to put messages to a queue and retrieve them from a queue.

To build the server environment for WebSphere MQ for HP-UX:

  1. Create a directory (for example, <APPDIR>) in which the server environment is built and execute all commands in this directory.
  2. Export the following environment variables, where TUXDIR is the root directory for TUXEDO:
           $ export CFLAGS="-Aa -D_HPUX_SOURCE"
           $ export LDOPTS="-lmqm"
           $ export FIELDTBLS=/opt/mqm/samp/amqstxvx.flds
           $ export VIEWFILES=<APPDIR>/amqstxvx.V
           $ export SHLIB_PATH=$TUXDIR/lib:/opt/mqm/lib:/lib
           $ export LPATH=$TUXDIR/lib:/opt/mqm/lib:/lib
  3. Add the following to the TUXEDO file udataobj/RM
           MQSeries_XA_RMI:MQRMIXASwitchDynamic: \
           /opt/mqm/lib/libmqmxa.a /opt/mqm/lib/libmqm.sl \
           /opt/tuxedo/lib/libtux.sl
  4. Run the commands:
           $ mkfldhdr    /opt/mqm/samp/amqstxvx.flds
           $ viewc       /opt/mqm/samp/amqstxvx.v
           $ buildtms    -o MQXA -r MQSeries_XA_RMI
           $ buildserver -o MQSERV1 -f /opt/mqm/samp/amqstxsx.c \
                  -f /opt/mqm/lib/libmqm.sl \
                  -r MQSeries_XA_RMI -s MPUT1:MPUT \
                  -s MGET1:MGET \
                  -v -bshm
           $ buildserver -o MQSERV2 -f /opt/mqm/samp/amqstxsx.c \
                  -f /opt/mqm/lib/libmqm.sl \
                  -r MQSeries_XA_RMI -s MPUT2:MPUT \
                  -s MGET2:MGET \
                  -v -bshm
           $ buildclient -o doputs  -f /opt/mqm/samp/amqstxpx.c \
                  -f /opt/mqm/lib/libmqm.sl
           $ buildclient -o dogets  -f /opt/mqm/samp/amqstxgx.c \
                  -f /opt/mqm/lib/libmqm.sl
  5. Edit ubbstxcx.cfg and add details of the machine name, working directories, and queue manager as necessary:
           $ tmloadcf    -y /opt/mqm/samp/ubbstxcx.cfg
  6. Create the TLOGDEVICE:
          $tmadmin -c
    A prompt then appears. At this prompt, enter:
          > crdl -z /<APPDIR>/TLOG1
  7. Start the queue manager:
           $ strmqm
  8. Start Tuxedo:
           $ tmboot -y

You can now use the doputs and dogets programs to put messages to a queue and retrieve them from a queue.

To build the server environment for WebSphere MQ for Windows:

Note:
Change the fields identified by <> in the following, to the directory paths:
<MQMDIR> the directory path specified when WebSphere MQ was installed, for example g:\Program Files\IBM\WebSphere MQ
<TUXDIR> the directory path specified when TUXEDO was installed, for example f:\tuxedo
<APPDIR> the directory path to be used for the sample application, for example f:\tuxedo\apps\mqapp

To build the server environment and samples:

  1. Create an application directory in which to build the sample application, for example:
       f:\tuxedo\apps\mqapp
  2. Copy the following sample files from the WebSphere MQ sample directory to the application directory:
          amqstxmn.mak
          amqstxen.env
          ubbstxcn.cfg
  3. Edit each of these files to set the directory names and directory paths used on your installation.
  4. Edit ubbstxcn.cfg (see Figure 39) to add details of the machine name and the queue manager that you want to connect to.
  5. Add the following line to the TUXEDO file <TUXDIR>udataobj\rm
       MQSeries_XA_RMI;MQRMIXASwitchDynamic;
          <MQMDIR>\tools\lib\mqmxa.lib <MQMDIR>\tools\lib\mqm.lib
    where <MQMDIR> is replaced as above. Although shown here as two lines, the new entry must be one line in the file.
  6. Set the following environment variables:
           TUXDIR=<TUXDIR>
           TUXCONFIG=<APPDIR>\tuxconfig
           FIELDTBLS=<MQMDIR>\tools\c\samples\amqstxvx.fld
           LANG=C
  7. Create a TLOG device for TUXEDO. To do this, invoke tmadmin -c, and enter the command:
      crdl -z <APPDIR>\TLOG
    where <APPDIR> is replaced as above.
  8. Set the current directory to <APPDIR>, and invoke the sample makefile (amqstxmn.mak) as an external project makefile. For example, with Microsoft Visual C++ , issue the command:
      msvc amqstxmn.mak
    Select build to build all the sample programs.

Figure 39. Example of ubbstxcn.cfg file for WebSphere MQ for Windows
*RESOURCES
IPCKEY        99999
UID           0
GID           0
MAXACCESSERS  20
MAXSERVERS    20
MAXSERVICES   50
MASTER        SITE1
MODEL         SHM
LDBAL         N

*MACHINES
<MachineName> LMID=SITE1
              TUXDIR="f:\tuxedo"
              APPDIR="f:\tuxedo\apps\mqapp;g:\Program Files\IBM\WebSphere MQ\bin"
              ENVFILE="f:\tuxedo\apps\mqapp\amqstxen.env"
              TUXCONFIG="f:\tuxedo\apps\mqapp\tuxconfig"
              ULOGPFX="f:\tuxedo\apps\mqapp\ULOG"
              TLOGDEVICE="f:\tuxedo\apps\mqapp\TLOG"
              TLOGNAME=TLOG
              TYPE="i386NT"
              UID=0
              GID=0

*GROUPS
GROUP1
        LMID=SITE1  GRPNO=1
        TMSNAME=MQXA
        OPENINFO="MQSeries_XA_RMI:MYQUEUEMANAGER"

*SERVERS
DEFAULT: CLOPT="-A -- -m MYQUEUEMANAGER"

MQSERV1     SRVGRP=GROUP1 SRVID=1
MQSERV2     SRVGRP=GROUP1 SRVID=2

*SERVICES
MPUT1
MGET1
MPUT2
MGET2
 
Note:
Change the directory names and directory paths to match your installation. Also change the queue manager name MYQUEUEMANAGER to the name of the queue manager that you want to connect to. Other information that you need to add is identified by <> characters.

The sample ubbconfig file for WebSphere MQ for Windows is listed in Figure 39. It is supplied as ubbstxcn.cfg in the WebSphere MQ samples directory.

The sample makefile (see Figure 40) supplied for WebSphere MQ for Windows is called ubbstxmn.mak, and is held in the WebSphere MQ samples directory.

Figure 40. Sample TUXEDO makefile for WebSphere MQ for Windows
TUXDIR  = f:\tuxedo
MQMDIR  = g:\Program Files\IBM\WebSphere MQ
APPDIR  = f:\tuxedo\apps\mqapp
MQMLIB  = $(MQMDIR)\tools\lib
MQMINC  = $(MQMDIR)\tools\c\include
MQMSAMP = $(MQMDIR)\tools\c\samples
INC = -f "-I$(MQMINC) -I$(APPDIR)"
DBG = -f "/Zi"

amqstx.exe:
 $(TUXDIR)\bin\mkfldhdr    -d$(APPDIR) $(MQMSAMP)\amqstxvx.fld
 $(TUXDIR)\bin\viewc       -d$(APPDIR) $(MQMSAMP)\amqstxvx.v
 $(TUXDIR)\bin\buildtms    -o MQXA -r MQSeries_XA_RMI
 $(TUXDIR)\bin\buildserver -o MQSERV1 -f $(MQMSAMP)\amqstxsx.c \
                           -f $(MQMLIB)\mqm.lib -v $(INC) $(DBG) \
                           -r MQSeries_XA_RMI \
                           -s MPUT1:MPUT -s MGET1:MGET
 $(TUXDIR)\bin\buildserver -o MQSERV2 -f $(MQMSAMP)\amqstxsx.c \
                           -f $(MQMLIB)\mqm.lib -v $(INC) $(DBG) \
                           -r MQSeries_XA_RMI \
                           -s MPUT2:MPUT -s MGET2:MGET
 $(TUXDIR)\bin\buildclient -o doputs -f $(MQMSAMP)\amqstxpx.c \
                           -f $(MQMLIB)\mqm.lib -v $(INC) $(DBG)
 $(TUXDIR)\bin\buildclient -o dogets -f $(MQMSAMP)\amqstxgx.c \
                           -f $(MQMLIB)\mqm.lib $(INC) -v $(DBG)
 $(TUXDIR)\bin\tmloadcf    -y $(APPDIR)\ubbstxcn.cfg