I am trying to connect to IBM MQ. I've read in multiple docs that this line should help prevent it:
mqQueueConnectionFactory.setIntProperty(CommonConstants.WMQ_CONNECTION_MODE, CommonConstants.WMQ_CM_CLIENT);
But in my case it doesn't. Anyone knows how to fix this and what the actual problem is?
import com.ibm.mq.MQEnvironment;
import org.apache.camel.component.jms.JmsComponent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ibm.mq.jakarta.jms.MQQueueConnectionFactory;
import org.springframework.jms.annotation.EnableJms;
import com.ibm.msg.client.jakarta.wmq.*;
import com.ibm.msg.client.jakarta.wmq.common.CommonConstants;
import javax.net.ssl.*;
import java.security.KeyStore;
@Bean
public JmsComponent mq() {
JmsComponent jmsComponent = new JmsComponent();
jmsComponent.setConnectionFactory(mqQueueConnectionFactory());
return jmsComponent;
}
@Bean
public MQQueueConnectionFactory mqQueueConnectionFactory() {
MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
mqQueueConnectionFactory.setHostName(host);
try {
//keystore is being fetched here
String keystoreKey = "${keyStorePassword}";
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("${keyStore}"),
keystoreKey.toCharArray());
// Create key manager
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
keyManagerFactory.init(keyStore, keystoreKey.toCharArray());
KeyManager[] km = keyManagerFactory.getKeyManagers();
// Create trust manager
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");
trustManagerFactory.init(KeyStore.getInstance(trustStore, trustStorePassword));
TrustManager[] tm = trustManagerFactory.getTrustManagers();
// Initialize SSLContext
SSLContext sslContext = SSLContext.getInstance("TLSv1");
sslContext.init(km, tm, null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
mqQueueConnectionFactory.setPort(port);
mqQueueConnectionFactory.setChannel(channel);
mqQueueConnectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
mqQueueConnectionFactory.setObjectProperty(WMQConstants.WMQ_SSL_SOCKET_FACTORY, sslSocketFactory);
mqQueueConnectionFactory.setSSLCipherSuite(sslCipherSuite);
mqQueueConnectionFactory.setIntProperty(CommonConstants.WMQ_CONNECTION_MODE, CommonConstants.WMQ_CM_CLIENT);
mqQueueConnectionFactory.setQueueManager(queueManager);
MQEnvironment.sslSocketFactory = sslSocketFactory;
} catch (Exception e) {
e.printStackTrace();
}
return mqQueueConnectionFactory;
}
}
And this is the stacktrace:
org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing; nested exception is com.ibm.mq.jmqi.local.LocalMQ$2: CC=2;RC=2495;AMQ8598: Failed to load the IBM MQ native JNI library: 'mqjbnd'.
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:311) ~[spring-jms-6.0.10.jar:6.0.10]
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:184) ~[spring-jms-6.0.10.jar:6.0.10]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:510) ~[spring-jms-6.0.10.jar:6.0.10]
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:572) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:425) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:392) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:159) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172) ~[camel-core-processor-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:475) ~[camel-core-processor-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:196) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:164) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:163) ~[camel-core-processor-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:379) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:208) ~[camel-timer-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:76) ~[camel-timer-4.0.0-RC1.jar:4.0.0-RC1]
at java.base/java.util.TimerThread.mainLoop(Timer.java:566) ~[na:na]
at java.base/java.util.TimerThread.run(Timer.java:516) ~[na:na]
Caused by: com.ibm.msg.client.jakarta.jms.DetailedJMSException: JMSFMQ6312: An exception occurred in the Java(tm) MQI.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:334) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:226) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8653) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:8023) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:322) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:242) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jakarta.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6026) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jakarta.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:111) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jakarta.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:200) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196) ~[spring-jms-6.0.10.jar:6.0.10]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:497) ~[spring-jms-6.0.10.jar:6.0.10]
... 15 common frames omitted
Caused by: com.ibm.mq.jmqi.local.LocalMQ$2: CC=2;RC=2495;AMQ8598: Failed to load the IBM MQ native JNI library: 'mqjbnd'.
at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1167) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalMQ$1.run(LocalMQ.java:307) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) ~[na:na]
at com.ibm.mq.jmqi.local.LocalMQ.initialise_inner(LocalMQ.java:262) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalMQ.initialise(LocalMQ.java:224) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalMQ.<init>(LocalMQ.java:1249) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalServer.<init>(LocalServer.java:230) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
at com.ibm.mq.jmqi.JmqiEnvironment.getInstance(JmqiEnvironment.java:765) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.JmqiEnvironment.getMQI(JmqiEnvironment.java:699) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8645) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
... 23 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: no mqjbnd in java.library.path: /Users/user/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429) ~[na:na]
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818) ~[na:na]
at java.base/java.lang.System.loadLibrary(System.java:1989) ~[na:na]
at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1140) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
... 37 common frames omitted
2023-07-19T10:39:05.986+02:00 WARN 59061 --- [timer://mytimer] o.a.camel.component.timer.TimerConsumer : Error processing exchange. Exchange[F460175233ACADD-0000000000000000]. Caused by: [org.springframework.jms.UncategorizedJmsException - Uncategorized exception occurred during JMS processing; nested exception is com.ibm.mq.jmqi.local.LocalMQ$2: CC=2;RC=2495;AMQ8598: Failed to load the IBM MQ native JNI library: 'mqjbnd'.]
org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing; nested exception is com.ibm.mq.jmqi.local.LocalMQ$2: CC=2;RC=2495;AMQ8598: Failed to load the IBM MQ native JNI library: 'mqjbnd'.
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:311) ~[spring-jms-6.0.10.jar:6.0.10]
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:184) ~[spring-jms-6.0.10.jar:6.0.10]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:510) ~[spring-jms-6.0.10.jar:6.0.10]
at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:572) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:425) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:392) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:159) ~[camel-jms-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172) ~[camel-core-processor-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:475) ~[camel-core-processor-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:196) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:164) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:163) ~[camel-core-processor-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:379) ~[camel-base-engine-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:208) ~[camel-timer-4.0.0-RC1.jar:4.0.0-RC1]
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:76) ~[camel-timer-4.0.0-RC1.jar:4.0.0-RC1]
at java.base/java.util.TimerThread.mainLoop(Timer.java:566) ~[na:na]
at java.base/java.util.TimerThread.run(Timer.java:516) ~[na:na]
Caused by: com.ibm.msg.client.jakarta.jms.DetailedJMSException: JMSFMQ6312: An exception occurred in the Java(tm) MQI.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:334) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:226) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8653) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:8023) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:322) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:242) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jakarta.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6026) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jakarta.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:111) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jakarta.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:200) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196) ~[spring-jms-6.0.10.jar:6.0.10]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:497) ~[spring-jms-6.0.10.jar:6.0.10]
... 15 common frames omitted
Caused by: com.ibm.mq.jmqi.local.LocalMQ$2: CC=2;RC=2495;AMQ8598: Failed to load the IBM MQ native JNI library: 'mqjbnd'.
at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1167) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalMQ$1.run(LocalMQ.java:307) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) ~[na:na]
at com.ibm.mq.jmqi.local.LocalMQ.initialise_inner(LocalMQ.java:262) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalMQ.initialise(LocalMQ.java:224) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalMQ.<init>(LocalMQ.java:1249) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.local.LocalServer.<init>(LocalServer.java:230) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
at com.ibm.mq.jmqi.JmqiEnvironment.getInstance(JmqiEnvironment.java:765) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.mq.jmqi.JmqiEnvironment.getMQI(JmqiEnvironment.java:699) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
at com.ibm.msg.client.jakarta.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8645) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
... 23 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: no mqjbnd in java.library.path: /Users/user/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429) ~[na:na]
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818) ~[na:na]
at java.base/java.lang.System.loadLibrary(System.java:1989) ~[na:na]
at com.ibm.mq.jmqi.local.LocalMQ.loadLib(LocalMQ.java:1140) ~[com.ibm.mq.jakarta.client-9.3.3.0.jar:9.3.3.0 - p933-L230531]
... 37 common frames omitted