ServletServerCache和ClassNotFoundException之谜

时间:2012-08-13 12:47:31

标签: java web-services maven-2 resteasy jboss6.x

我尝试在JBoss服务器上添加缓存系统,如Resteasy文档中所述: Resteasy Caching Features,第29.3部分。 (本地服务器端响应缓存):

  

接下来要做的是添加一个ServletContextListener,org.jboss.resteasy.plugins.cache.server.ServletServerCache。必须在web.xml文件中的ResteasyBootstrap侦听器之后指定。

所以我做了,我在ResteasyBootstrap监听器后面的 web.xml 中添加了一个ServletServerCache监听器:

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.cache.server.ServletServerCache
    </listener-class>
</listener>

不幸的是,这会在部署阶段产生ClassNotFoundException:

  

14:01:44,817 ERROR [org.apache.catalina.core.ContainerBase。[jboss.web]。[localhost]。[/ DoQuBookWeb]] Erreur lors de la configuration de la classe d'écoutedel'application (应用程序监听器)org.jboss.resteasy.plugins.cache.server.ServletServerCache:java.lang.ClassNotFoundException:org.jboss.resteasy.plugins.cache.server.ServletServerCache

(抱歉法国人)

所以我的问题是:在这种情况下我是唯一的一个(它似乎不是谷歌的常见错误)?我的错误/是什么?什么是正确的方式?

有关我使用maven的信息,并且我包含了resteasy-cache-core 2.3.1.GA依赖关系,而且在这一点上我有点失落......

提前感谢您的帮助。



编辑:

我查看了网络服务器上部署的档案。我确实找到了Jar resteasy-cache-core(包含ServletServerCache)

以下简要介绍项目架构:

- Main project
    - Ear project (generate the deployed EAR)
         - pom.xml
    - Ejb project (generate an embeded JAR)
         - all ejbs 
         - pom.xml
    - Web project (generate an embeded WAR)
         - some js stuff
         - web.xml 
         - pom.xml

在“mvn deploy”之后,在输出Maven2中给出一个包含EAR的自包含:

- lib / *.jar
- META-INF/
    - application.xml
    - etc
- Ejb-1.0.0.jar (all ejbs)
- Web.war
    - js stuff/
    - META-INF/
        - etc
    - WEB-INF/
        - web.xml CALLING ServletServerCache
        - jboss-web.xml
        - jboss-app.xml
        - lib / *.jar WITH resteasy-cache-core.X.X.X.jar
        - classes/

所以,imho,Maven2正确捆绑它。但是什么?这仍然是神秘的。

有什么想法吗?目前尚不清楚为什么仍然没有找到这门课程。

(很抱歉这么长的帖子)

1 个答案:

答案 0 :(得分:2)

我使用resteasy并尝试了它包含的jboss-cache。我刚刚添加了

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-cache-core</artifactId>
    <version>2.3.5.Final</version> <!--or the version you use-->
</dependency>

到我的pom.xml,并添加了

<listener>
    <javaee:listener-class>
        org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
    </javaee:listener-class>
</listener>

<servlet>
    <servlet-name>resteasy-servlet</servlet-name>
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    </servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>resteasy-servlet</servlet-name>
    <url-pattern>/MyRestContext</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>resteasy.server.cache.maxsize</param-name>
    <param-value>10000</param-value>
</context-param>

<context-param>
    <param-name>resteasy.server.cache.eviction.wakeup.interval</param-name>
    <param-value>5000</param-value>
</context-param>

<listener>
    <listener-class>
        org.jboss.resteasy.plugins.cache.server.ServletServerCache
    </listener-class>
</listener>

到我的web.xml文件。

当然,不要忘记添加其他resteasy依赖项。