部署到其他服务器会产生ClassNotFoundException TIBCO JMS

时间:2015-12-31 18:43:37

标签: weblogic12c spring-jms tibco-ems

我能够在开发中成功部署我的应用。我使用Spring JMS模板与Tibco客户端进行通信,在weblogic中我设置了一个外部服务器,目标队列为Tibco队列,连接工厂与Tibco连接工厂。我的JNDI初始上下文工厂:是tcp:// name:port ...我能够发布消息并收听它。没有问题。

ISSUE: 当部署到QA(来自开发的战争并被置于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

有关可能出现的问题的任何建议?

编辑:人们已经建议这是一个明确的类路径错误。但是在开发中我没有在weblogic中的启动服务器上的类路径中包含任何内容。

2 个答案:

答案 0 :(得分:0)

我没有在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依赖。

答案 1 :(得分:0)

您需要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>