我正在尝试使用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依赖?
由于
答案 0 :(得分:1)
不确定maven坐标是什么,因为我认为这些库不在任何公共存储库中,因此坐标将是特定于repo的,但根据this post,所需的jar文件是:
答案 1 :(得分:0)
尼古拉斯的回答是正确的。 (将其从评论移到允许格式化)
IBM不会将他们的jar分发到Maven存储库。组织中的某个人手动部署它们(这是一种常见做法)。
你要么:
未将maven settings.xml或项目pom.xml指向您组织的内部Maven存储库
需要手动将MQ jar部署到存储库。
mvn deploy:deploy-file -DgroupId = com.ibm.mq -DartifactId = mqjms -Dversion = 7.5.0.2 -Dfile = mqjms.jar
请参阅:https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html