Archive

Archive for the ‘Message Broker’ Category

Message Broker Toolkit and MQ Explorer logs

Message Broker Toolkit

C:\wmb_toolkit_workspace\.metadata\.log
C:\wmb_toolkit_workspace\.metadata\.plugins\com.ibm.etools.mft.broker.runtime\deployment.log

MQ Explorer

C:\Documents and Settings\Application Data\IBM\MQ Explorer\.metadata\.log
C:\Documents and Settings\Application Data\IBM\MQ Explorer\.metadata\CMPAdminAPITrace.log
C:\Documents and Settings\Application Data\IBM\MQ Explorer\.metadata\DefaultConfigurationWizard.log

Using IBM Rational Synergy Keywords in esql files

There are two different keyword forms that can be used in an objects source, the %keyword% form and the %keyword:% form. The %keyword% form permanently replaces the keyword with the attribute value when you initially create the object. The %keyword:% form is appended with the attribute value each time you create or check out/in the object. Also the %keyword% form is completely replaced in the object when expanded, but the %keyword:% form in only partially replaced; the keyword itself still remains in the object.

More informations can be found here

To use a Synergy Keyword in an esql file one can use it in a comment. Example:

-- %name: % %version: % %date_created: %

Message Broker Application Development – How to create a SOAP Fault in ESQL

Message_Broker_Application_Development_Creating_SOAP_Fault

CREATE COMPUTE MODULE CreateSOAPFault

 DECLARE ns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
 DECLARE xml NAMESPACE 'http://www.w3.org/XML/1998/namespace';
 DECLARE SOAP_FAULTCODE_VALUE_CLIENT CHARACTER 'Client';

 CREATE FUNCTION Main() RETURNS BOOLEAN
 BEGIN
 IF EXISTS(InputExceptionList.*[]) THEN
 DECLARE exceptionNumber INT;
 DECLARE messageText CHARACTER;
 -- Accessing the informaton in exception text
 CALL getLastExceptionDetail(InputExceptionList, exceptionNumber, messageText);

 SET OutputRoot.SOAP.Context.Namespace.(SOAP.NamespaceDecl)xmlns:soapenv = soapenv;
 SET OutputRoot.SOAP.Body.ns:Fault.faultcode = SOAP_FAULTCODE_VALUE_CLIENT;
 SET OutputRoot.SOAP.Body.ns:Fault.faultstring = 'Error while parsing message';
 SET OutputRoot.SOAP.Body.ns:Fault.faultactor = InputRoot.HTTPInputHeader."X-Original-HTTP-Command";
 SET OutputRoot.SOAP.Body.ns:Fault.detail.ExceptionType = messageText;
 SET OutputRoot.SOAP.Body.ns:Fault.detail.ExceptionNumber = exceptionNumber;
 SET OutputRoot.SOAP.Body.ns:Fault.detail.ExceptionList = InputExceptionList;
 -- status code must be an error code, otherwise Fault message will not be parsed on receiver
 SET OutputLocalEnvironment.Destination.SOAP.Reply.Transport.HTTP.ReplyStatusCode = 500;
 END IF;

 RETURN TRUE;
 END;

 CREATE PROCEDURE getLastExceptionDetail(IN InputExceptionList reference, OUT exceptionNumber integer, OUT messageText char)
 /****************************************************************************
 * A procedure that will get the details of the last exception from a message
 * IN InputExceptionList: The incoming exception list
 * IN messageNumber: The last message number.
 * IN messageText: The last message text.
 *****************************************************************************/
 BEGIN
 -- Create a reference to the first child of the exception list
 DECLARE ptrException reference to InputExceptionList.*[1];
 -- keep looping while the moves to the child of exception list work
 WHILE lastmove(ptrException) DO
 -- store the current values for the error number and text
 IF ptrException.Number is not null THEN
 SET exceptionNumber = ptrException.Number;
 SET messageText = ptrException.Text;
 END IF;
 -- now move to the last child which should be the next exceptionlist
 move ptrException lastchild;
 END WHILE;
END;
END MODULE;

mqsicreatebar command not giving any reponse

If you not getting any response from the command mqsicreatebar you can have a look at the log file whitch will be created in the Workspace directory, e.g. E:\MessageBrokerToolkitWorkspace\.metadata\.log.

You can also add the -cleanBuild parameter to refresh all the workspace projects and invoke a clean build or delete the .metadata directory.

Creating a bar file with mqsicreatebar

To create a bar file one can use the mqsicreatebar command:

C:\Program Files\IBM\WMBT700>mqsicreatebar -data <absolut_path_to_workspace_directory> -b <name_of_bar-file_to_create_or_replace> -p <projects_containing_files_to_include_in_the_bar_file_in_a_new_workspace> -o <workspace_relative_paths_of_the_resource_to_be_added>

If you have made changes to resources in the broker archive by using external tools, add the -cleanBuild parameter to refresh all the workspace projects and invoke a clean build.

If you want better output of the command, try the -debug and -trace switches.

Example:

C:\Program Files\IBM\WMBT700>mqsicreatebar -data E:\MessageBrokerToolkitWorkspace -b E:\MessageBrokerToolkitWorkspace\MyProject\MyFlow.bar -p MyProject -o MyProject\MyFlow.msgflow -cleanBuild -trace

WebSphere Message Broker Toolkit v8 introduces the ability to deploy message flows without needing to compile them into *.cmf files and the same feature is used by the mqsipackagebar command.

With the mqsicreatebar command one can compile the resources like .mset to .dictionary and .java to .jar before using the mqsipackagebar command by using the -compileOnly parameter.

Adding Remote Message Broker using .broker file

  • Stop the Message Broker Toolkit
  • Add the configuration file (.broker file) in Message Broker Toolkit workspace:
    <YOUR_WORKSPACE>\.metadata\.plugins\com.ibm.etools.mft.broker.runtime\
  • Start the Message Broker Toolkit again

The user environment was not adequately prepared to continue execution.

February 4, 2013 1 comment

If you try to run a command like ‘mqsireportproperties'and got the error below you need to run mqsiprofile BEFORE you run your command.

The user environment was not adequately prepared to continue execution. Locate and run the profile supplied with the product. This file is called mqsiprofile, and is located in the bin subdirectory for the product.

SET "BROKER_HOME=C:\Program Files\IBM\MBroker\7.0"
SET "path=%path%;%BROKER_HOME%\bin"
mqsiprofile
mqsireportproperties MB7BROKER -e EXECUTIONGROUP-o HTTPConnector -r

Default Web Service Ports of WebSphere Message Broker

Port# Usage
7080 This port will be used by the bipHTTPListener process for plain HTTP traffic to all ExecutionGroups
7083 This port will be used by the bipHTTPListener for encrypted HTTP (HTTPS) traffic to all ExecutionGroups
7800-7842 This range of ports will be assigned incrementally for plain HTTP traffic to each EG that has a SOAPInput node, in the order that each EG starts up
7843-7885 This range of ports will be assigned correspondingly to the plain HTTP traffic port for HTTPS traffic to each EG that has a SOAPInput node, in the order that each EG starts up

The ports can be configured individually on each Broker by using the options for mqsichangeproperties as described here, with corresponding information on configuring the ports for SOAPInput over HTTP and HTTPS here.

You can check the configuration of the broker with the following commands:

SET "BROKER_HOME=C:\Program Files\IBM\MBroker\7.0"
SET "path=%path%;%BROKER_HOME%\bin"
mqsiprofile
mqsireportproperties Brokername -b httplistener -o AllReportableEntityNames -a 
mqsireportproperties Brokername -b httplistener -o HTTPListener -a
mqsireportproperties Brokername -b httplistener -o HTTPSConnector -a

You can check the configuration of an executiongroup with the following commands:

SET "BROKER_HOME=C:\Program Files\IBM\MBroker\7.0"
SET "path=%path%;%BROKER_HOME%\bin"
mqsiprofile
mqsireportproperties Brokername -e EXECUTIONGROUP-o HTTPConnector -r
mqsireportproperties Brokername -e EXECUTIONGROUP-o HTTPSConnector -r

And you can change the default configuration like this

mqsichangeproperties Brokername -e EXECUTIONGROUP -o HTTPSConnector -n explicitlySetPortNumber -v 7843

See more Informations here and here.