ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » Error connection to QManager using vb.net

Post new topic  Reply to topic
 Error connection to QManager using vb.net « View previous topic :: View next topic » 
Author Message
ekoks
PostPosted: Mon Feb 22, 2016 5:28 am    Post subject: Error connection to QManager using vb.net Reply with quote

Newbie

Joined: 22 Feb 2016
Posts: 5

Hello,

I'm writing a VB.Net program tom monitor the queue depth of several queues. On my development machine, my code is working. Here I've installed MQ Client.
However on another machine, where the program will be running finally, I'm getting an error when connection to the MQ Manager.

I've copied the amqmdnet.dll and the amqmdxcs.dll to the target machine
and registered them in the GAC using gacutil.

I don't want to install the MQ Client on the target machine.

This is my error:
Unhandled Exception: System.TypeInitializationException: The type initializer for 'IBM.WMQ.Nmqi.UnmanagedNmqiMQ' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at IBM.WMQ.Nmqi.NativeManager.InitializeNativeApis(String mode)
at IBM.WMQ.Nmqi.UnmanagedNmqiMQ..cctor()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at IBM.WMQ.Nmqi.NmqiEnvironment.GetInstance(String name)
at IBM.WMQ.Nmqi.NmqiEnvironment.GetMQI(Int32 id)
at IBM.WMQ.MQQueueManager.Connect(String queueManagerName)
at IBM.WMQ.MQQueueManager..ctor(String queueManagerName, String Channel, String ConnName)
at MQQueueDepth.main.Main()

This is my simplified code:

Code:

Imports IBM.WMQ

Module main

    Sub Main()
        Dim QueueName As String
        Dim QueueManagerNAme As String
        Dim ChannelInfo As String
        Dim ConnectionName As String

        Dim queuemanager As MQQueueManager
        Dim queue As MQQueue

        Dim intQueueDepth As Integer

        QueueName = "SomeQueue"

        QueueManagerNAme = "QMName"
        ChannelInfo = "SYSTEM.ADMIN.SVRCONN"
        ConnectionName = "hostname(portnumber)"

        Try
            queuemanager = New MQQueueManager(QueueManagerNAme, ChannelInfo, ConnectionName)

            ' queue = queuemanager.AccessQueue(QueueName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INQUIRE)

            queue = queuemanager.AccessQueue(QueueName, MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INQUIRE)
            intQueueDepth = queue.CurrentDepth
            MsgBox("Queuedepth for queue " & QueueName & " : " & intQueueDepth.ToString)
            queue.Close()
            queuemanager.Disconnect()
        Catch e As MQException
            MsgBox("Exception Occurred: " & vbCrLf & e.Message)
        End Try
    End Sub

End Module


As I mentioned before, this code is working on my development PC.

Does anybody know what my I'm doing wrong ?

best regards,
Eduard Koks


Last edited by ekoks on Tue Feb 23, 2016 1:24 am; edited 1 time in total
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Mon Feb 22, 2016 5:31 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20697
Location: LI,NY

Yes. Look up the infocenter on how to create a MANAGED connection.
To use an Unmanaged connection, like you're doing, you need the MQ Client.

Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
PeterPotkay
PostPosted: Mon Feb 22, 2016 3:47 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7716

You might also want to consider using MQ Redistributable Clients if you are looking to avoid installing the full MQ Client.

https://www.ibm.com/developerworks/community/blogs/messaging/entry/Bitesize_Blogging_MQ_8_0_0_4_Redistributable_Clients?lang=en
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
ekoks
PostPosted: Tue Feb 23, 2016 1:22 am    Post subject: Reply with quote

Newbie

Joined: 22 Feb 2016
Posts: 5

Solved my problem. As stated by fjb_saper, when MQ Client is not installed, I had to create a managed connection.

Here is my new code:

Code:

Module main

    Sub Main()
        Dim QueueName As String
        Dim QueueManagerName As String

        Static MQproperties As Hashtable = New Hashtable

        Dim queuemanager As MQQueueManager
        Dim queue As MQQueue

        Dim intQueueDepth As Integer

        QueueName = "SomeQueue"

        QueueManagerName = "QMName" ' Name of the QManager

        ' Setup the MQ Environment
        MQEnvironment.Hostname = "myHost" ' IP Address or name of the host to connect to
        MQEnvironment.Port = "99999" ' Portnumber
        MQEnvironment.Channel = "SYSTEM.ADMIN.SVRCONN" ' Channel name

        ' Be sure to create a managed connection, necessary when MQ Client is not installed
        MQproperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED)

        Try
            queuemanager = New MQQueueManager(QueueManagerName, properties)
            queue = queuemanager.AccessQueue(QueueName, MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INQUIRE)
            intQueueDepth = queue.CurrentDepth
            MsgBox("Queuedepth for queue " & QueueName & " : " & intQueueDepth.ToString)
            queue.Close()
            queuemanager.Disconnect()
        Catch e As MQException
            MsgBox("Exception Occurred: " & vbCrLf & e.Message)
        End Try

    End Sub
End Module



Thanks for your cooperation.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » Error connection to QManager using vb.net
Jump to:  



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
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.