我有一个基于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>
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
终于解决了这个问题。这是两个不同的问题。首先,Tomcat 7.0.42存在一个错误(或多个)我在生产中运行。 EhCache默默地失败了。
在7.0.52的单独安装中,它抛出一个异常,说它无法找到我的ehcache.xml文件。将文件移动到WEB-INF / classes /解决了该异常并且应用程序启动了。然而,回到我的7.0.42安装,它仍然不会启动。
强制我的生产安装到7.0.52后,应用程序启动并正常工作。
总而言之,我有两个问题:
解决方案: