Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每个spring webapp仅加载一次图像_Java_Spring_Singleton_Javabeans_Startup - Fatal编程技术网

Java 每个spring webapp仅加载一次图像

Java 每个spring webapp仅加载一次图像,java,spring,singleton,javabeans,startup,Java,Spring,Singleton,Javabeans,Startup,我需要将一堆图像加载到我的Spring webapp中。出于性能原因,只有在启动webapp后才能执行此操作。图像应保存在一个单件中,以便多个用户、会话等进行访问 我已经用一个初始化器构建了一个JavaBean来加载图像,在我的控制器中我注入这个Bean并获取图像。行得通,但注射不是正确的选择 如何构建一个单例bean来保存图像,并且每个webapp只加载一次图像?您考虑过使用内置的吗?只需将其添加到您的web.xml: <filter> <filter-name>

我需要将一堆图像加载到我的Spring webapp中。出于性能原因,只有在启动webapp后才能执行此操作。图像应保存在一个单件中,以便多个用户、会话等进行访问

我已经用一个初始化器构建了一个JavaBean来加载图像,在我的控制器中我注入这个Bean并获取图像。行得通,但注射不是正确的选择

如何构建一个单例bean来保存图像,并且每个webapp只加载一次图像?您考虑过使用内置的吗?只需将其添加到您的
web.xml

<filter>
    <filter-name>pageCachingFilter</filter-name>
    <filter-class>net.sf.ehcache.constructs.web.filter.SimpleCachingHeadersPageCachingFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>pageCachingFilter</filter-name>
    <url-pattern>*.htm</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.gif</url-pattern>
    <url-pattern>*.jpg</url-pattern>
    <url-pattern>*.css</url-pattern>
</filter-mapping>
<cache name="SimplePageCachingFilter"
       maxElementsInMemory="1000"
       eternal="false"
       timeToIdleSeconds="31536000"
       timeToLiveSeconds="31536000"
       overflowToDisk="false"
       memoryStoreEvictionPolicy="LRU"
       statistics="true"
        />
EhCache现在将拦截所有客户端对静态资源的请求,读取它们一次,将它们放入缓存并返回给用户。为了使它更好,它甚至会添加HTTP
Expiry
headeres,这样客户端就不会为相同的资源再次呼叫您


与单例中手动编写的加载和缓存相比,这种方法不是更好吗?

听起来不错,使用ist是配置过滤器的唯一必要条件?美好的将
ehcache.xml文件放在哪里?路径是否与web.xml相同?以前从未使用过ehcache。您需要将
ehcache.xml
放在
类路径的根目录中(例如
/src/main/resources
)。他们有非常广泛的文档,请查看以查看其他功能。我按照您所说的配置了所有内容,将
-标记添加到
ehcache.xml
,并通过文档中的maven代码片段包含ehcache。但是tomcat无法启动应用程序,
失败-上下文路径/webapp上的应用程序无法启动
,看起来tomcat无法正确解析web xml。。尚未找到包含详细信息的日志条目。任何想法,是什么导致的?很难说,你真的必须找到确切的例外。它可以是任何内容:
ehcache.xml
web.xml
未找到/格式不正确,
ehcache.jar
未在类路径上找到。查看您的应用程序日志,我正在使用完全相同的配置并取得了巨大成功。在
localhost.log
-->
严重:异常启动筛选器页面cachingfilter java.lang.ClassNotFoundException:net.sf.ehcache.constructs.web.filter.SimpleCachingHeadersPageCachingFilter
web.xml看起来像您的,
WEB-INF/lib
中包含的jar有
slf4j.jar
ehcache core.jar
ehcache terracotta.jar