我正在使用Grails插件(routing-jms)将消息排入基于Oracle AQ的队列。它使用tomcat工作正常,但在部署到Weblogic 10.3服务器时抛出异常。
Caused by: java.lang.ClassCastException: weblogic.jms.foreign.IgnoreXAResourceImpl
at oracle.jms.WebLogicHelper.<clinit>(WebLogicHelper.java:57)
at oracle.jms.AQjmsConstants.<clinit>(AQjmsConstants.java:310)
at oracle.jms.AQjmsConnectionFactory.<init>(AQjmsConnectionFactory.java:64)
at oracle.jms.AQjmsQueueConnectionFactory.<init>(AQjmsQueueConnectionFactory.java:129)
at oracle.jms.AQjmsFactory.getQueueConnectionFactory(AQjmsFactory.java:160)
at RoutingJmsGrailsPlugin$_closure1.doCall(RoutingJmsGrailsPlugin.groovy:30)
at grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:755)
at grails.spring.BeanBuilder.beans(BeanBuilder.java:584)
at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:527)
at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1870)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3155)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1518)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:487)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:427)
提供任何帮助。
答案 0 :(得分:1)
实际上,WebLogic使用类加载器的层次结构(请参阅this article)。似乎同一个类通过两个不同的类加载器加载。你不能在类加载器之间进行转换,因此ClassCastException
。
重新检查您的依赖项,以排除服务器加载的任何JAR文件,也包括您的应用程序。