部署到其他服务器给出 ClassNotFoundException TIBCO JMS
deploying to other Server gives ClassNotFoundException TIBCO JMS
我能够在开发中成功部署我的应用程序。我正在使用 Spring JMS 模板与 Tibco 客户端进行通信,在 weblogic 中我设置了一个外部服务器,目标队列作为 Tibco 队列,连接工厂与 Tibco 连接工厂。我的 JNDI 初始上下文工厂:是 tcp://name:port...我能够发布消息并收听它。没有问题。
问题:
当部署到 QA 时(来自开发的 war 被获取并放入 QA)并且在部署过程中我们得到这个
Caused by: javax.naming.NoInitialContextException: Cannot instantiate class: com.tibco.tibjms.naming.TibjmsInitialContextFactory [Root exception is javax.naming.NoInitialContextException: Cannot instantiate class: com.tibco.tibjms.naming.TibjmsInitialContextFactory [Root exception is java.lang.ClassNotFoundException: com.tibco.tibjms.naming.TibjmsInitialContextFactory]]
at weblogic.utils.StackTraceDisabled.unknownMethod()
Caused by: javax.naming.NoInitialContextException: Cannot instantiate class: com.tibco.tibjms.naming.TibjmsInitialContextFactory [Root exception is java.lang.ClassNotFoundException: com.tibco.tibjms.naming.TibjmsInitialContextFactory]
... 1 more
Caused by: java.lang.ClassNotFoundException: com.tibco.tibjms.naming.TibjmsInitialContextFactory
... 1 more
对可能出现的问题有什么建议吗?
编辑:人们认为这是一个明显的 class 路径错误。但是在开发中,我没有在 weblogic 中启动服务器的 class 路径中包含任何内容。
我没有将外部服务器添加到 weblogic,而是使用 JMS 模板并设置了以下属性。
@Bean
public JndiTemplate jndiTemplate() throws JMSException {
JndiTemplate jndiTemplate = new JndiTemplate();
Properties jndiProps = new Properties();
Properties props = System.getProperties();
String env = props.getProperty("cwt.env");
jndiProps.setProperty("java.naming.factory.initial", environment.getProperty("ems.contextFactory"));
jndiProps.setProperty("java.naming.security.principal", environment.getProperty("java.naming.security.principal"));
jndiProps.setProperty("java.naming.security.credentials", environment.getProperty("java.naming.security.credentials"));
jndiProps.setProperty("java.naming.provider.url", environment.getProperty("tibco.ems.namingUrl"));
jndiTemplate.setEnvironment(jndiProps);
return jndiTemplate;
}
在 .properties 文件中放置这个
ems.contextFactory=com.tibco.tibjms.naming.TibjmsInitialContextFactory
此外,在 pom 中添加 tibjms 依赖。
您需要 TibjmsInitialContextFactory
个 Jar 才能使上述代码正常工作。
以下是 Maven 依赖项,以防您使用 Maven 项目:
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibjms</artifactId>
<version>8.3</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibcrypt</artifactId>
<version>8.3</version>
</dependency>
我能够在开发中成功部署我的应用程序。我正在使用 Spring JMS 模板与 Tibco 客户端进行通信,在 weblogic 中我设置了一个外部服务器,目标队列作为 Tibco 队列,连接工厂与 Tibco 连接工厂。我的 JNDI 初始上下文工厂:是 tcp://name:port...我能够发布消息并收听它。没有问题。
问题: 当部署到 QA 时(来自开发的 war 被获取并放入 QA)并且在部署过程中我们得到这个
Caused by: javax.naming.NoInitialContextException: Cannot instantiate class: com.tibco.tibjms.naming.TibjmsInitialContextFactory [Root exception is javax.naming.NoInitialContextException: Cannot instantiate class: com.tibco.tibjms.naming.TibjmsInitialContextFactory [Root exception is java.lang.ClassNotFoundException: com.tibco.tibjms.naming.TibjmsInitialContextFactory]]
at weblogic.utils.StackTraceDisabled.unknownMethod()
Caused by: javax.naming.NoInitialContextException: Cannot instantiate class: com.tibco.tibjms.naming.TibjmsInitialContextFactory [Root exception is java.lang.ClassNotFoundException: com.tibco.tibjms.naming.TibjmsInitialContextFactory]
... 1 more
Caused by: java.lang.ClassNotFoundException: com.tibco.tibjms.naming.TibjmsInitialContextFactory
... 1 more
对可能出现的问题有什么建议吗?
编辑:人们认为这是一个明显的 class 路径错误。但是在开发中,我没有在 weblogic 中启动服务器的 class 路径中包含任何内容。
我没有将外部服务器添加到 weblogic,而是使用 JMS 模板并设置了以下属性。
@Bean
public JndiTemplate jndiTemplate() throws JMSException {
JndiTemplate jndiTemplate = new JndiTemplate();
Properties jndiProps = new Properties();
Properties props = System.getProperties();
String env = props.getProperty("cwt.env");
jndiProps.setProperty("java.naming.factory.initial", environment.getProperty("ems.contextFactory"));
jndiProps.setProperty("java.naming.security.principal", environment.getProperty("java.naming.security.principal"));
jndiProps.setProperty("java.naming.security.credentials", environment.getProperty("java.naming.security.credentials"));
jndiProps.setProperty("java.naming.provider.url", environment.getProperty("tibco.ems.namingUrl"));
jndiTemplate.setEnvironment(jndiProps);
return jndiTemplate;
}
在 .properties 文件中放置这个
ems.contextFactory=com.tibco.tibjms.naming.TibjmsInitialContextFactory
此外,在 pom 中添加 tibjms 依赖。
您需要 TibjmsInitialContextFactory
个 Jar 才能使上述代码正常工作。
以下是 Maven 依赖项,以防您使用 Maven 项目:
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibjms</artifactId>
<version>8.3</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibcrypt</artifactId>
<version>8.3</version>
</dependency>