2017-02-09 11 views
0

私はcontaineriseするJavaアプリケーションが与えられました。ehcacheがTomcatのDockerイメージで動作していません

アプリケーションは現在、Tomcat8 JRE8 AWS Elasticbeanstalkインスタンスで実行されています。

しかし、OpenJDK8とTomcat8がRPM経由でインストールされているAmazon Linuxのベースイメージから構築された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が使用できない場合、このエラーが発生します。

私はアプリケーションペイロードでチェックしましたし、正しいjarファイルが利用可能である

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 

開発者は、アプリケーションがEhcacheの古いバージョンを拾っていることを私に言ったが、私が見ることができませんこれはバニラドッカーの画像でどのように可能ですか?私は、実行時に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> 

どのような援助が理解されるであろう。

答えて

1

Ehcacheは歴史の過程で瓶の名前を変更しました。あなたのクラスパスにehcache-core-2.4.5.jarehcache-2.10.2.jarの両方があることが原因です。

おそらく、最初のものが最初に選択されたため、この無効な属性エラーが発生します。ほとんどの場合、ehcache-core-2.4.5.jarを削除する必要がありますが、Ehcacheは常に2.x行にわたる下位互換性を維持しようとしましたが、それは他の依存関係を取り除く必要があります。

+0

答えは正しいです。ちなみに、私があなただったら 'updateCheck'をfalseにします。 – Henri

+0

意味がありますが、ElasticBeanstalkインスタンスの問題ではないが、Dockerコンテナの問題である理由が不思議です。 –

関連する問題