Filter class is only available within 2.0. Filter is added to metadata
(when it shouldn't), brings in resteasy factory class, older web.xml
stuff tries to use older versions, result CCE
Ales Justin wrote:
All I see is that you add a metadata for your RE filter.
The rest should be standard JBossWeb/Tomcat behavior on top of metadata.
Don't see how 2.0 class could crawl in. But it looks like it does manage to do so.
:-)
On May 25, 2010, at 3:14 PM, Bill Burke wrote:
> It could be just that the deployer is screwing up and adding a resteasy filter from
2.0 within the deployment when it should not be doing that.
>
> Ales Justin wrote:
>> This is strange, as I did a quick check, and I see both things:
>> * the code that takes RPF out from servlet context - ServletContainerDispatcher
>> * the code that puts it into servlet context - ResteasyBootstrap
>> should be loaded by war's classloader, hence your local RE should be used.
>> But this was a quick check ...
>> On May 25, 2010, at 10:52 AM, Galder Zamarreno wrote:
>>> Hi,
>>>
>>> Last week I was testing deploying a war file with RESTEasy on 1.2.1.GA in the
war archive's WEB-INF/lib directory and I was getting a CCE like the one below.
>>>
>>> 12:39:58,448 ERROR [[/infinispan-server-rest]] Exception starting filter
Resteasy: java.lang.ClassCastException: org.jboss.resteasy.spi.ResteasyProviderFactory
cannot be cast to org.jboss.resteasy.spi.ResteasyProviderFactory
>>> at
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:55)
[:]
>>> at
org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.init(FilterDispatcher.java:39)
[:]
>>> at
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:462)
[:]
>>> at
org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3286) [:]
>>> at
org.apache.catalina.core.StandardContext.start(StandardContext.java:3887) [:]
>>>
>>> AS ships with a different version of RESTEasy library which would explain
this issue (latest AS ships 2.0-beta-2). However, AFAIR in the past WEB-INF/lib was
deployed under a different classloader and hence this shouldn't be a problem, should
it?
>>>
>>> FilterDispatcher is a class that's only in REST 2.0, so somehow
tomcat's ApplicationFilterConfig loads a 2.0 filter class (this is probably configured
in some web.xml somewhere) but when this 2.0 class tries to load ResteasyProviderFactory,
this is loaded from the war's lib directory (1.x).
>>> providerFactory = (ResteasyProviderFactory)
servletContext.getAttribute(ResteasyProviderFactory.class.getName());
>>>
>>> So, the underlying issue might be related to a change in initialisation or
deployment from RESTEasy 1.x to 2.x.
> --
> Bill Burke
> JBoss, a division of Red Hat
>
http://bill.burkecentral.com