ClassCastException原因

时间:2018-06-21 11:40:00

标签: java soap wsdl apache-camel cxf

我得到ClassCastException。这两个类来自不同的罐子,但是 JettyContinuationProviderFactory正在实现ContinuationProviderFactory类。

Caused by: javax.xml.ws.WebServiceException: java.lang.ClassCastException: Cannot cast org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProviderFactory to org.apache.cxf.transport.http.ContinuationProviderFactory
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:371) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:539) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_80]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_80]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_80]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_80]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1612) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1553) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    ... 23 more
Caused by: java.lang.ClassCastException: Cannot cast org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProviderFactory to org.apache.cxf.transport.http.ContinuationProviderFactory
    at java.lang.Class.cast(Class.java:3186) [rt.jar:1.7.0_80]
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.getBeanOfType(ExtensionManagerImpl.java:326) [cxf-rt-core-2.7.14.jar:2.7.14]
    at org.apache.cxf.bus.spring.SpringBeanLocator.getBeanOfType(SpringBeanLocator.java:138) [cxf-rt-core-2.7.14.jar:2.7.14]
    at org.apache.cxf.bus.CXFBusImpl.getExtension(CXFBusImpl.java:107) [cxf-rt-core-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.initConfig(AbstractHTTPDestination.java:519) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.<init>(AbstractHTTPDestination.java:149) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.servlet.ServletDestination.<init>(ServletDestination.java:52) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.servlet.ServletDestinationFactory.createDestination(ServletDestinationFactory.java:33) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:305) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:142) [cxf-rt-bindings-soap-2.7.14.jar:2.7.14]
    at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:83) [cxf-api-2.7.14.jar:2.7.14]
    at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:62) [cxf-api-2.7.14.jar:2.7.14]
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:170) [cxf-rt-frontend-simple-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:456) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:334) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    ... 32 more

17:02:35,992 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/cisBusiness]] (ServerService Thread Pool -- 57) JBWEB000287: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fulFillment': Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: java.lang.ClassCastException: Cannot cast org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProviderFactory to org.apache.cxf.transport.http.ContinuationProviderFactory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) [spring-context-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) [spring-context-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383) [spring-web-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) [spring-web-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3777) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
    at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:156) [jboss-as-web-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
    at org.jboss.as.web.deployment.WebDeploymentService.access$000(WebDeploymentService.java:60) [jboss-as-web-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
    at org.jboss.as.web.deployment.WebDeploymentService$1.run(WebDeploymentService.java:93) [jboss-as-web-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_80]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_80]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_80]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_80]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: javax.xml.ws.WebServiceException: java.lang.ClassCastException: Cannot cast org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProviderFactory to org.apache.cxf.transport.http.ContinuationProviderFactory
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:371) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:539) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_80]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_80]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_80]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_80]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1612) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1553) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    ... 23 more
Caused by: java.lang.ClassCastException: Cannot cast org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProviderFactory to org.apache.cxf.transport.http.ContinuationProviderFactory
    at java.lang.Class.cast(Class.java:3186) [rt.jar:1.7.0_80]
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.getBeanOfType(ExtensionManagerImpl.java:326) [cxf-rt-core-2.7.14.jar:2.7.14]
    at org.apache.cxf.bus.spring.SpringBeanLocator.getBeanOfType(SpringBeanLocator.java:138) [cxf-rt-core-2.7.14.jar:2.7.14]
    at org.apache.cxf.bus.CXFBusImpl.getExtension(CXFBusImpl.java:107) [cxf-rt-core-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.initConfig(AbstractHTTPDestination.java:519) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.http.AbstractHTTPDestination.<init>(AbstractHTTPDestination.java:149) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.servlet.ServletDestination.<init>(ServletDestination.java:52) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.servlet.ServletDestinationFactory.createDestination(ServletDestinationFactory.java:33) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:305) [cxf-rt-transports-http-2.7.14.jar:2.7.14]
    at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:142) [cxf-rt-bindings-soap-2.7.14.jar:2.7.14]
    at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:83) [cxf-api-2.7.14.jar:2.7.14]
    at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:62) [cxf-api-2.7.14.jar:2.7.14]
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:170) [cxf-rt-frontend-simple-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:456) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:334) [cxf-rt-frontend-jaxws-2.7.14.jar:2.7.14]
    ... 32 more

我已经在Tomcat中进行了肥皂网络服务的演示,效果很好。但是这些错误是在JBOSS EAP 6的情况下生成的。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这可能是一个类加载问题,您可能在类路径上有2个不同的jar,它们都包含ContinuationProviderFactory.class

代码的不同部分现在可能正在使用该接口的不同版本,因此您的JettyContinuationProviderFactory现在正在实现一个版本,但是您将JettyContinuationProviderFactory实例传递给的方法期望使用另一个接口

这将导致类型冲突,而类型转换无法通过强制转换解决,因此会出现此异常。从JVM类加载的角度来看,这似乎很愚蠢。

它在Tomcat上运行的原因是您的类路径可能恰好更清洁。 解决方案是调查类路径上的哪些jar提供ContinuationProviderFactory并消除重复项。