Ehcache导致Tomcat 7给404

时间:2014-05-05 15:12:48

标签: tomcat7 ehcache

我有一个基于Lift的REST应用程序。我的开发环境正在运行内置于SBT的Jetty服务器,应用程序部署在Tomcat 7上。

我最近将Ehcache集成到我的设置中,丢弃了自定义缓存。它在我的Jetty开发服务器中完美运行。但是,当我部署到tomcat时,我的Lift应用程序提供的任何URL都会获得404。除了日志中的404之外,没有例外,也没有我认为相关的日志项。

当我注释掉引用Ehcache的行并将其作为依赖项删除时,Tomcat会启动并正常工作并为这些URL提供服务。一旦我取消注释Ehcache,它就会再次出现在404.

有谁知道发生了什么事?我知道Ehcache使用SLF4J进行记录,是否以某种方式阻止ehcache错误出现在我的日志中?

build.sbt的相关部分:

  Seq(
"net.liftweb"       %% "lift-webkit"        % liftVersion        % "compile",
"net.liftweb"       %% "lift-mapper"        % liftVersion        % "compile",
"com.typesafe.slick" %% "slick" % "2.0.0-M3",
"org.eclipse.jetty" % "jetty-webapp"        % "8.1.7.v20120910"  % "container,test",
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container,test" artifacts Artifact("javax.servlet", "jar", "jar"),
"ch.qos.logback"    % "logback-classic"     % "1.0.6",
"org.specs2"        %% "specs2"             % "1.14"             % "test",
"mysql"             % "mysql-connector-java" % "5.1.25",
"net.sf.ehcache"    % "ehcache"             % "2.8.2",
"javax.transaction"    % "transaction-api"  % "1.1",
"org.slf4j"         % "slf4j-simple"        % "1.7.7"

ehcache.xml的相关部分

<cache  name="mycache" 
        maxEntriesLocalHeap="10000" 
        maxEntriesLocalDisk="1000" 
        eternal="false" 
        diskSpoolBufferSizeMB="20" 
        timeToIdleSeconds="21600" 
        timeToLiveSeconds="43200" 
        memoryStoreEvictionPolicy="LFU" 
        transactionalMode="off">
</cache>

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

终于解决了这个问题。这是两个不同的问题。首先,Tomcat 7.0.42存在一个错误(或多个)我在生产中运行。 EhCache默默地失败了。

在7.0.52的单独安装中,它抛出一个异常,说它无法找到我的ehcache.xml文件。将文件移动到WEB-INF / classes /解决了该异常并且应用程序启动了。然而,回到我的7.0.42安装,它仍然不会启动。

强制我的生产安装到7.0.52后,应用程序启动并正常工作。

总而言之,我有两个问题:

  1. Ehcache无法找到我的配置文件
  2. Tomcat 7.0.42似乎有一个错误
  3. 解决方案:

    1. 将ehcache.xml移至WEB-INF / classes
    2. 从7.0.42升级Tomcat - &gt; 7.0.52