我尝试在 JBoss 服务器上添加缓存系统,如 Resteasy 文档中所述: Resteasy Caching Features ,第 29.3 部分。 (本地服务器端响应缓存):
The next thing you have to do is to add a ServletContextListener, org.jboss.resteasy.plugins.cache.server.ServletServerCache. This must be specified after the ResteasyBootstrap listener in your web.xml file.
所以我这样做了,我在 ResteasyBootstrap 监听器之后添加了一个 ServletServerCache 监听器,如 web.xml 中所述:
<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'écoute de l'application (application listener) 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部署”之后,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/
所以,恕我直言,Maven2 正确地捆绑了它。但什么?这仍然很神秘。
有什么想法吗?我不清楚为什么仍未找到该类(class)。
(抱歉,帖子太长了)
最佳答案
我使用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 依赖项。
关于java - ServletServerCache 和 ClassNotFoundException 之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934556/