|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
PUT failing with 6101 when DLL is registered as a COM+ app. |
« View previous topic :: View next topic » |
Author |
Message
|
kmeeks |
Posted: Wed Oct 09, 2002 8:43 am Post subject: PUT failing with 6101 when DLL is registered as a COM+ app. |
|
|
Newbie
Joined: 09 Oct 2002 Posts: 2 Location: Redondo Beach, CA
|
I have an ATL/COM+ DLL which works correctly when executed as a local DLL.
However a simple PUT fails with a 6101 error code when I put the DLL under a COM+ application.
I've tried linking the DLL with the following:
a) imqb23in.lib imqb23vn.lib imqs23in.lib imqs23vn.lib
b) imqb23vn.lib imqc23vn.lib
I've tried compiling with VC++ 6 and VC++ 7
I have MQSeries V5.2 installed. _________________ http://www.intltechventures.com
Consultings, Systems Integration, and Custom Software Development
"What can we do to help?" |
|
Back to top |
|
 |
kmeeks |
Posted: Wed Oct 09, 2002 12:11 pm Post subject: Solution found... |
|
|
Newbie
Joined: 09 Oct 2002 Posts: 2 Location: Redondo Beach, CA
|
On the off chance that someone else, somewhere, sometime, may encounter the exact set of conditions - I'm posting the solution to the problem I reported this morning...but first - a recount of some of the test results under various conditions:
****************************************************
****************************************************
****************************************************
Result with mqInterface.dll as a COM+ DLL, with mqInterfaceps.dll registered
queue.setOpenOptions( MQOO_OUTPUT | MQOO_INQUIRE |MQOO_FAIL_IF_QUIESCING);
...
...
...
PMO.setOptions(PMO.options() + MQPMO_SET_IDENTITY_CONTEXT);
Tue Oct 08 12:26:44 2002 : Writer::writeMessage() queueStatus = 0 queueMode = 1 openStatus = 1 PMO.options = 1220
Tue Oct 08 12:26:48 2002 *****ERROR*****:: ImqQueue::put ended with reason code 6101
:Reason = 6101
****************************************************
****************************************************
****************************************************
Result with mqInterface.dll as COM+ DLL without mqInterfaceps.dll registered
queue.setOpenOptions( MQOO_OUTPUT | MQOO_INQUIRE |MQOO_FAIL_IF_QUIESCING);
...
...
...
PMO.setOptions(PMO.options() + MQPMO_SET_IDENTITY_CONTEXT);
Tue Oct 08 12:30:26 2002 : Writer::writeMessage() queueStatus = 0 queueMode = 1 openStatus = 1 PMO.options = 1220
Tue Oct 08 12:26:48 2002 *****ERROR*****:: ImqQueue::put ended with reason code 6101
:Reason = 6101
****************************************************
****************************************************
****************************************************
Result with mqInterface.dll as a local DLL
queue.setOpenOptions( MQOO_OUTPUT | MQOO_INQUIRE |MQOO_FAIL_IF_QUIESCING);
...
...
...
PMO.setOptions(PMO.options() + MQPMO_SET_IDENTITY_CONTEXT);
Tue Oct 08 12:33:35 2002 : Writer::writeMessage() queueStatus = 0 queueMode = 1 openStatus = 1 PMO.options = 1220
==> (Put is successful)
****************************************************
****************************************************
****************************************************
From the IBM documentation
6101 X’17D5’ MQRC_REOPEN_INQUIRE_ERROR
An open object does not have the correct ImqObject open options and requires one or more additional options. An implicit reopen is required but closure has been prevented.
Closure has been prevented because one or more characteristics of the object need to be checked dynamically prior to closure, and the open options do not already include MQOO_INQUIRE.
This reason code occurs in the WebSphere MQ C++ environment.
Corrective action: set the open options explicitly to include MQOO_INQUIRE.
****************************************************
****************************************************
****************************************************
Result with mqInterface.dll as a COM+ DLL, with mqInterfaceps.dll registered
(note change in PMO.options value)
queue.setOpenOptions( MQOO_OUTPUT | MQOO_INQUIRE |MQOO_FAIL_IF_QUIESCING);
...
...
...
[removed previous code to set MQPMO_SET_IDENTITY_CONTEXT]
Wed Oct 09 10:29:15 2002 : Writer::writeMessage() queueStatus = 0 queueMode = 1 openStatus = 1 PMO.options = 196
==> (Put is successful)
****************************************************
****************************************************
****************************************************
Result with mqInterface.dll as a COM+ DLL, with mqInterfaceps.dll registered
queue.setOpenOptions( MQOO_OUTPUT | MQOO_INQUIRE | MQOO_SET_IDENTITY_CONTEXT | MQOO_FAIL_IF_QUIESCING);
...
...
...
PMO.setOptions(PMO.options() + MQPMO_SET_IDENTITY_CONTEXT);
Wed Oct 09 12:17:28 2002 : Writer::writeMessage() queueStatus = 0 queueMode = 1 openStatus = 1 PMO.options = 1220
==> (Put is successful)
****************************************************
****************************************************
****************************************************
CONCLUSION:
MQSeries recognition of PMO options behaves differently on the PUT call to MQSeries when executed under a local DLL versus a DLL registered as a COM+ application.
Although the MQSeries documentation indicates that setting MQOO_SET_IDENTIY_CONTEXT is required (if you wish to use the Application ID field) - it appears that it is not required when the API is invoked via a local DLL encapsulated call to MQSeries PUT. _________________ http://www.intltechventures.com
Consultings, Systems Integration, and Custom Software Development
"What can we do to help?" |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|