我使用Wildfly 9同时部署两个Web应用程序(战争)。我最近升级了其中一个应用程序使用的石英版本,现在我在部署时遇到以下错误:
Caused by: org.quartz.SchedulerConfigException: Unable to instantiate InstanceIdGenerator class: org.quartz.simpl.SimpleInstanceIdGenerator cannot be cast to org.quartz.spi.InstanceIdGenerator [See nested exception: java.lang.ClassCastException: org.quartz.simpl.SimpleInstanceIdGenerator cannot be cast to org.quartz.spi.InstanceIdGenerator]
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:814)
at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
at org.springframework.scheduling.quartz.SchedulerFactoryBean.createScheduler(SchedulerFactoryBean.java:597)
at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1631)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568)
... 42 more
Caused by: java.lang.ClassCastException: org.quartz.simpl.SimpleInstanceIdGenerator cannot be cast to org.quartz.spi.InstanceIdGenerator
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:811)
... 47 more
据我所知,Wildfly没有使用石英(是吗?),所以我假设有一个类加载confilct与来自其他应用程序的石英依赖。我试图在Jboss-deployment-structure中添加一个石英排除,但冲突仍然存在。这是我的jboss-deployment-structure:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="deployment.urtdsm-historian"/>
<!-- ANTLR -->
<module name="org.antlr" />
<!-- ASM -->
<module name="asm.asm" />
<!-- APACHE COMMONS -->
<module name="org.apache.commons.beanutils" />
<module name="org.apache.commons.codec" />
<module name="org.apache.commons.collections" />
<module name="org.apache.commons.io" />
<module name="org.apache.commons.pool" />
<!-- JAVAX.VALIDATION -->
<module name="javax.validation.api" />
<!-- DOM4J -->
<module name="org.dom4j" />
<!-- JTA -->
<module name="javax.transaction.api" />
<!-- WOODSTOX -->
<module name="org.codehaus.woodstox" />
<!-- JETTISON -->
<module name="org.codehaus.jettison" />
<!-- JACKSON -->
<module name="org.codehaus.jackson.jackson-core-asl" />
<module name="org.codehaus.jackson.jackson-mapper-asl" />
<!-- JAVASSIST -->
<module name="org.javassist" />
<!-- APACHE NEETHI -->
<module name="org.apache.neethi" />
</dependencies>
<exclusions>
<module name="org.hibernate" />
<module name="org.hibernate.validator" />
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
<module name="org.apache.commons.logging" />
<module name="org.apache.log4j" />
<module name="org.jboss.logging" />
<module name="org.jboss.logging.jul-to-slf4j-stub" />
<module name="org.jboss.logmanager" />
<module name="org.jboss.logmanager.log4j" />
<module name="com.sun.xml.bind" />
<module name="org.quartz-scheduler" />
</exclusions>
<exclude-subsystems>
<subsystem name="webservices" />
<subsystem name="weld" />
</exclude-subsystems>
</deployment>
<module name="deployment.urtdsm-historian">
<dependencies>
<module name="deployment.urtdsm-historian-0.1-SNAPSHOT.war">
<exports>
<exclude path="org/hibernate/**" />
<exclude path="org/springframework/orm/**" />
<exclude path="org/springframework/transaction/**" />
<exclude path="org/quartz-scheduler/**" />
<include path="com/tdf/**" />
<include path="com/psymetrix/**" />
<include path="org/springframework/**" />
<include path="org/aopalliance/**" />
<include path="org/aspectj/**" />
<include path="org/postgresql/**" />
</exports>
</module>
</dependencies>
</module>
</jboss-deployment-structure>
我无法找到关于两次部署战争之间的类加载冲突的文档。我在这里做错了吗?任何帮助,将不胜感激。感谢。
Quartz - 2.2.1
Wildfly - 9.0.1
答案 0 :(得分:0)
我通过排除Spring调度来修复此问题。我的Quartz排除正在运行,但Quartz仍然通过依赖链进入。