java.lang.ClassCastException : com. tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory 无法转换为 javax.jms.QueueConnectionFactory

标签 java lookup

我在尝试查找 JNDI 上下文时遇到以下异常,尽管此站点上已经回答了类似的问题,将类路径中缺少的 tibjms.jar 引用为根原因。

java.lang.ClassCastException: com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory cannot be cast to javax.jms.QueueConnectionFactory
at com.xxx.host.tibco.ConnectionHandler$JMSConnectionFactory.<init>(ConnectionHandler.java:337)
at com.xxx.host.tibco.ConnectionHandler.init(ConnectionHandler.java:94)
at com.xxx.host.tibco.ConnectionHandler.<init>(ConnectionHandler.java:84)
at com.xxx.host.tibco.ConnectionHandler.getInstance(ConnectionHandler.java:63)
at com.xxx.productOne.host.HostGetMemberBalanceRequest.doDecision(HostGetMemberBalanceRequest.java:42)
at com.audium.server.voiceElement.DecisionElementBase.service(DecisionElementBase.java:386)
at com.audium.server.controller.Controller.goToDecision(Controller.java:2857)
at com.audium.server.controller.Controller.goToElement(Controller.java:2687)
at com.audium.server.controller.Controller.continueCall(Controller.java:2511)
at com.audium.server.controller.Controller.goToElement(Controller.java:2742)
at com.audium.server.controller.Controller.continueCall(Controller.java:2511)
at com.audium.server.controller.Controller.doPost(Controller.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:662)

除此之外,我还有同一段代码在另一台具有完全相同版本/编号的服务器上正常工作。 TOMCAT 中的库。

以下是如何查找上下文的代码片段:

InitialContext iniCtx;
        try {
            iniCtx = new InitialContext(oProperties);
            PoolableObjectFactory objectFactory = new JMSConnectionFactory(iniCtx);
            this.pool = new GenericObjectPool(objectFactory);
            createQueues(iniCtx);
            singleton = this;
            System.out.println("Connection Handler is initialized");
        } catch (NamingException ne) {
            ne.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

非常感谢您在故障排除方面的任何帮助。

最佳答案

像这样的问题总是由不同的类加载器加载一个类(在本例中为 javax.jms.QueueConnectionFactory)。通常,但并非总是,不同的类加载器意味着类加载的位置不同。在调试器中很容易找出依次加载类的位置

javax.jms.QueueConnectionFactory.class.getProtectionDomain().getCodeSource().getLocation();

connectionFactory.getSuperclass()..

如果大多数情况下位置不同,原因会立即清楚。

关于java.lang.ClassCastException : com. tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory 无法转换为 javax.jms.QueueConnectionFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18896932/

相关文章:

java - 无法解析符号callbackManager facebook sdk 4.0 的lib

java - AudioClip没有声音-Java

java - android studio_firebase_存储_获取下载网址

node.js - 使用 MongoDB 聚合时 - 如何过滤掉没有聚合子项的结果?

excel - Excel 中的 if/And 语句和查找

java - 查询 : Why is this hashtable breaking on me?

java - 基本 JPA 问题 : "Could not determine type for: java.util.Set"

java - 如何找到继承给定接口(interface)的类实例?

c# - 使用 StartsWith() 时如何提高查找性能

c - C中不同变量的状态机