Grails Routing-JMS 插件 - 部署到 weblogic 时出现问题

Grails Routing-JMS plugin - Issue while deployment into weblogic

我正在使用 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.next(ModuleStateDriver.java:427)

感谢任何帮助。

实际上,WebLogic 使用 class 加载程序的层次结构(参见 this article)。似乎相同的 class 正在通过两个不同的 class 加载器加载。而且你不能在 class 加载程序之间转换,因此 ClassCastException

重新检查您的依赖项以排除任何由服务器和您的应用程序加载的 JAR 文件。