JMS与WebsphereMQ的连接

时间:2016-04-20 09:51:03

标签: jms ibm-mq

我正在尝试使用WebsphereMQ连接到JMS

定义了以下配置:

properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
properties.put(Context.URL_PKG_PREFIXES, "com.ibm.ws.naming");
properties.put(Context.PROVIDER_URL, "iiop://localhost:2809");
properties.put(Context.SECURITY_PRINCIPAL, "user")
properties.put(Context.SECURITY_CREDENTIALS, "password")

Maven POM文件中包含以下依赖项:

<dependency>
    <groupId>com.ibm</groupId>  
    <artifactId>com.ibm.mqjms</artifactId>
    <version>7.0.1.4</version>
</dependency>
<dependency>
    <groupId>com.ibm</groupId>
    <artifactId>com.ibm.mq.jmqi</artifactId>
    <version>7.0.1.4</version>
</dependency>
<dependency>
  <groupId>com.ibm</groupId>
  <artifactId>com.ibm.dhbcore</artifactId>
  <version>7.0</version>
</dependency>

<dependency>
   <groupId>com.ibm.mq</groupId>
   <artifactId>com.ibm.mq.jar</artifactId>
   <version>7.0.1.4</version>
   <scope>runtime</scope>
</dependency>

尝试实例化上下文(new InitialContext(properties))时,抛出以下异常:

javax.naming.NoInitialContextException: Cannot instantiate class: com.ibm.websphere.naming.WsnInitialContextFactory [Root exception is java.lang.ClassNotFoundException: com.ibm.websphere.naming.WsnInitialContextFactory]
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
    at javax.naming.InitialContext.init(InitialContext.java:242)
    at javax.naming.InitialContext.<init>(InitialContext.java:216)

是否缺少maven依赖?

由于

2 个答案:

答案 0 :(得分:1)

不确定maven坐标是什么,因为我认为这些库不在任何公共存储库中,因此坐标将是特定于repo的,但根据this post,所需的jar文件是:

  • wssec.jar
  • naming.jar
  • namingclient.jar中
  • lmproxy.jar
  • sas.jar
  • ecutils.jar

答案 1 :(得分:0)

尼古拉斯的回答是正确的。 (将其从评论移到允许格式化)

IBM不会将他们的jar分发到Maven存储库。组织中的某个人手动部署它们(这是一种常见做法)。

你要么:

  1. 未将maven settings.xml或项目pom.xml指向您组织的内部Maven存储库

  2. 需要手动将MQ jar部署到存储库。

    mvn deploy:deploy-file -DgroupId = com.ibm.mq -DartifactId = mqjms -Dversion = 7.5.0.2 -Dfile = mqjms.jar

  3. 请参阅:https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html