Beim Versuch, MQ in Bindungen Modus (Ich habe einen Server einrichten lokal) zu verbinden, erhalte ich die folgende Ausnahme:Die Typeninitialisierer für ‚IBM.WMQ.Nmqi.BindingsNmqiMQ‘ hat eine Ausnahme
System.TypeInitializationException: The type initializer for 'IBM.WMQ.Nmqi.BindingsNmqiMQ' 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.BindingsNmqiMQ..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, Hashtable properties)
at Project.MQConnector.CreateConnectAndAddQueueManager(QueueManagerConnectionDetails connDetails)
der Fehler tritt auf, wenn zu einem WS-Manager versucht, eine Verbindung wie folgt:
Constructor:
Friend queueManagerConnectionProperties As New Hashtable()
queueManagerConnectionProperties.Add(MQC.THREAD_AFFINITY_PROPERTY, True)
If My.Settings.MQConnectAsClient Then
queueManagerConnectionProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT)
Else
queueManagerConnectionProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_BINDINGS)
End If
queueManagerConnectionProperties.Add(MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_HANDLE_SHARE_BLOCK Or MQC.MQCNO_RECONNECT_Q_MGR) ' have handle-sharing with call blocking
Und in der CreateConnectAndAddQueueManager Methode (wo connDetails ist nur ein Geschäft für die p ort, Host-Name, etc.):
Dim specificQMConnProperties As Hashtable = CType(queueManagerConnectionProperties.Clone(), Hashtable)
specificQMConnProperties.Add(MQC.CHANNEL_PROPERTY, connDetails.Channel)
specificQMConnProperties.Add(MQC.CONNECTION_NAME_PROPERTY, connectionName)
Dim qmgr As MQQueueManager = Nothing
Try
qmgr = New MQQueueManager(connDetails.Name, specificQMConnProperties)
Catch ex As MQException
' error handling
End Try
Ich habe die folgende Umgebungsvariable:
NMQ_MQ_LIB=mqm.dll
Wenn ich eine Verbindung mit einer verwalteten Verbindung (NMQ_MQ_LIB=managed
; und setzen Sie nicht die MQC.TRANSPORT_PROPERTY
), es funktioniert gut.
Irgendwelche Gedanken?
--Edit--
C:\Program Files\IBM\MQSI\9.0.0.2>dspmqver -a
Name: WebSphere MQ
Version: 7.5.0.6
Level: p750-006-160226
BuildType: IKAP - (Production)
Platform: WebSphere MQ for Windows
Mode: 32-bit
O/S: Windows 7 Enterprise x64 Edition, Build 7601: SP1
InstName: Installation1
InstDesc:
Primary: No
InstPath: C:\Program Files (x86)\IBM\WebSphere MQ
DataPath: C:\Program Files (x86)\IBM\WebSphere MQ
MaxCmdLevel: 750
LicenseType: Production
AMQ8351: WebSphere MQ Java environment has not been configured correctly.
AMQ8351: WebSphere MQ Java environment has not been configured correctly.
Name: IBM WebSphere MQ custom channel for Windows Communication Foundation
Version: 7.5.0.6
Level: wn750-006-151116
Build Type: Production
Name: IBM Message Service Client for .NET (XMS .NET)
Version: 2.5.0.6
Level: nn250-006-151116
Build Type: Production
Name: IBM Global Security Kit for WebSphere MQ
Version: 8.0.14.53
Build Type: Production
Mode: 32-bit
Name: IBM Global Security Kit for WebSphere MQ
Version: 8.0.14.53
Build Type: Production
Mode: 64-bit
Haben Sie einen vollständigen MQ-Client installiert oder läuft nur mit amqmdnet.dll? – Shashi
Ich habe die vollständige MQ installiert (speziell 7.5.0.6 - aktualisiert von 7.5.0.1, die mit IIB Toolkit kam) – simonalexander2005
Wenn Sie mir eine Möglichkeit geben können, genauer zu überprüfen, was ich installiert habe, könnte das hilfreich sein – simonalexander2005