【问题标题】:deploying to other Server gives ClassNotFoundException TIBCO JMS部署到其他服务器会产生 ClassNotFoundException TIBCO JMS
【发布时间】:2016-04-05 15:56:45
【问题描述】:

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

问题: 在部署到 QA 时(来自 dev 的战争被带到 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 的启动服务器上的类路径中包含任何内容。

【问题讨论】:

  • tibjms.jar 添加到您的CLASSPATH

标签: weblogic12c spring-jms tibco-ems


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2013-12-11
      • 2015-11-03
      • 2012-02-22
      相关资源
      最近更新 更多