컨테이너화할 Java 응용 프로그램이 제공되었습니다.Tomcat Docker 이미지에서 ehcache가 작동하지 않습니다.
응용 프로그램은 현재 Tomcat8 JRE8 AWS Elasticbeanstalk 인스턴스에서 실행 중입니다.
그러나 OpenJDK8 및 Tomcat8이 설치된 Amazon Linux 기본 이미지에서 RPM을 통해 설치된 Docker 이미지에 응용 프로그램을 배포 할 수 없습니다.
전개 에러으로 Ehcache에 관한 것이다 :
Error creating bean with name 'getEhcache' defined in *****: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Error configuring from input stream. Initial cause was null:16: Element <cache> does not allow attribute "maxEntriesLocalHeap".
I 이해 사용되고으로 Ehcache하고으로 Ehcache 버전 간의 구성 불일치가있는 경우 오류가 일반적으로 발생하는 것을 maxEntriesLocalHeap 버전 2.10에 도입 된, 즉 것을 버전 2.10을 사용할 수없는 경우이 오류가 발생합니다.
내가 응용 프로그램 페이로드에 확인했습니다, 그리고 올바른 항아리로 볼 수 있습니다 :
개발자는 응용 프로그램으로 Ehcache의 이전 버전을 따기 내게 말했지만, 한bash-4.2# pwd
/var/lib/tomcat8/webapps/ROOT/WEB-INF/lib
bash-4.2# ls -la ehcache-*
-rw-rw-r-- 1 root root 8914463 Jan 24 12:27 ehcache-2.10.2.jar
-rw-rw-r-- 1 root root 1006074 Jan 24 12:27 ehcache-core-2.4.5.jar
-rw-rw-r-- 1 root root 124522 Jan 24 12:27 ehcache-spring-annotations-1.2.0.jar
나는 볼 수 없습니다 바닐라 도커 이미지에서 이것이 가능한 방법. 나는 그것이 실행될 때 Docker 컨테이너에서 권한이나 파일 시스템 액세스와 관련이있는 것으로 만들어지는 가짜 오류라고 생각합니다. 응용 프로그램과 함께 제공
ehcache.xml 파일은 다음과 같습니다
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true"
monitoring="autodetect"
dynamicConfig="true">
<diskStore path="java.io.tmpdir"/>
<cache name="messageCache"
maxEntriesLocalHeap="10000"
maxEntriesLocalDisk="1000"
eternal="false"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="43200" timeToLiveSeconds="43200"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap"/>
</cache>
어떤 도움을 주시면 감사하겠습니다.
답변이 정확합니다. 부수적으로, 나는 당신이라면'updateCheck'을 false로 바꿀 것입니다. – Henri
의미가 있지만, 이것이 ElasticBeanstalk 인스턴스의 문제는 아니지만 Docker 컨테이너의 문제 인 이유에 대해 궁금합니다. –