Jms MQQueueConnectionFactory对象创建中的NullPointerException

Jms MQQueueConnectionFactory对象创建中的NullPointerException,jms,ibm-mq,Jms,Ibm Mq,我在使用v8.0.0.4.0使用com.ibm.mq.jar实例化MQConnectionFactory()对象时遇到以下错误,而在com.ibm.mq.jar v6.0.0.1中同样可以正常工作 保持线程池大小:-false |最大线程池大小:--1 |线程池非活动超时:-0 |不可用-:-com.ibm.msg.client.commonservices.csi异常:JMSCS0002 java.lang.NullPointerException 位于com.ibm.msg.client.j

我在使用v8.0.0.4.0使用com.ibm.mq.jar实例化MQConnectionFactory()对象时遇到以下错误,而在com.ibm.mq.jar v6.0.0.1中同样可以正常工作

保持线程池大小:-false |最大线程池大小:--1 |线程池非活动超时:-0 |不可用-:-com.ibm.msg.client.commonservices.csi异常:JMSCS0002

java.lang.NullPointerException 位于com.ibm.msg.client.jms.internal.jmsfactoryfactorympl.getInstance(jmsfactoryfactorympl.java:170) 位于com.ibm.msg.client.jms.admin.jmsconnectionfactorympl.setProviderFactory(jmsconnectionfactorympl.java:167) 位于com.ibm.mq.jms.MQConnectionFactory。(MQConnectionFactory.java:271) 位于com.ibm.mq.jms.MQQueueConnectionFactory。(MQQueueConnectionFactory.java:72) 在com.SendMessage.putToQueue上(SendMessage.java:66) 位于com.sendmages.main(sendmages.java:123)

在我看来,这是一种奇怪而糟糕的编码方式。您并没有给我所有的代码,而是一个片段,但我可以猜测它来自一个名为putToQueue()的方法。因此,您应该将用于调用的变量命名为正确的名称,而不是进行无用的编码

sQueue.setExpiry(0L);
你明白这意味着什么吗?这意味着消息将在零毫秒内过期!!!!换句话说,消息基本上在您将其放入队列时过期。有点毫无意义。如果您想要无限制,请删除该行或使用“-1L”(即CMQC.MQEI_unlimited)

同样,您不理解该值的含义。“-1”表示对主题使用父持久值。您应该使用0表示非持久性(CMQC.MQPER_not_persistent),或者使用1表示持久性(CMQC.MQPER_persistent)

天哪。您能否至少“假装”理解安全性,并在createQueueConnection()方法调用上设置用户标识和密码

最后,连接的start()方法在哪里

i、 e


发布你的代码,这样我们就可以看到你在做什么。@Roger..发布了代码。我上面给出的代码只是一个概念证明。我以后一定会将代码更改为标准。我不介意邮件的安全性或过期性。我想检查我是否能够建立连接并发送一些消息。这里的问题是“connection=factory.createQueueConnection();”在MQ v6 jar中工作,但在v8.0.0.4 jar中不工作。我认为更多的是关于密码套件。如果您对此有任何意见,请让我知道。修复其他问题,特别是缺少启动方法,然后担心SSL/TLS的问题。我无法创建连接对象,没有它我无法启动连接。在connection=factory.createQueueConnection(userId,password)处引发异常;
host = s; 
channel = s1; 
port = j; 
requestQ = s2;
sQueue.setExpiry(0L);
sQueue.setPersistence(-1);
connection = factory.createQueueConnection();
connection = factory.createQueueConnection(userId, password);
connection.start();