0
votes

I was able to deploy my app successfully in dev. I am using Spring JMS template to communicate with Tibco Client and in weblogic i have setup a foreign server with destination queue as Tibco queue and connection factory with Tibco connection factory. My JNDI Initial Context Factory: is tcp://name:port...I was able to publish the message and listen to it. No issues.

ISSUE: When deploying to QA (the war from dev is taken and placed into QA) and during the deployment process we get this

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

Any suggestions on what might be going wrong?

EDIT: People have suggested that this is a clear class path error. But in dev i did not include anything in class path on start server in weblogic.

2
Add tibjms.jar to your CLASSPATH.Rao

2 Answers

0
votes

Instead of adding a foreign server to weblogic, I went with JMS template and set the below properties.

@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;
    }

in .properties file place this

ems.contextFactory=com.tibco.tibjms.naming.TibjmsInitialContextFactory

Also, add tibjms dependency in pom.

0
votes

You need TibjmsInitialContextFactory Jar in order to make the above code work.

Below are the Maven Dependencies in case you are using Maven project:

<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>