はOK、私はすべての人々に回避策を見つけたと思います手続きするミズ。うまくいけば、それは他の人を助けるかもしれない。
まず、ehCacheをアップグレードして、テラコッタで作業できるように、クラスパスにテラコッタのjarファイルを追加する必要があります。これは、Railoにバンドルされているehcache.jarを削除する必要があることを意味します。これは、Terracottaで動作しない古いバージョンであるためです。ジャーは、次のとおり
- ehcacheをコア - ## ## ##ジャー(## ## ##バージョンである。)
- ehcacheを、テラコッタ - ## ##。。。。。 。##
- SLF4J-APIをジャー - ## ## ##
- SLF4J-JDK14をジャー - 。。。## ## ##
- SLF4J-log4j12をジャー - 。。。。## ## ### jar
- terracotta-toolkit-1.3-runtime - ##。##。jar
- Railoライブラリから "ehcache.jar"を削除してください。さもなければ、Terracottaはロードされません。
次は< terracottaConfig URL =は "localhost:9510" を追加する必要がありますあなたのクラスパスにする必要がありますあなたのehcache.xmlに= "true" を/ >行クラスタ化/ >と<テラコッタを。これは、テラコッタのウェブサイトによく記載されています。
ehCacheは、すべてのクラスをロードするためにContextClassLoader()を取ります。失敗すると、ClassLoaderUtilにフォールバックします。 Railo contextClassLoader()はデフォルトで "org.apache.catalina.loader.WebappClassLoader"(Tomcat ClassLoader)に設定されています。このクラスローダーは、レールオブジェクトを正しく見つけることができませんでしたので、 "railo.loader.classloader.RailoClassLoader"に変更する必要があります。これは、スレッドごとに(すなわち、要求ごと)コンテキストクラスローダであるので、あなたはあなたのonRequestStart()メソッドの開始時に、次のコマンドを呼び出す必要があります:
<cfset getPageContext().getThread().currentThread().setContextClassLoader(getPageContext().getClass().getClassLoader()) />
これはehcacheをを修正し、休止すべきです。次のセッションでは、テラコッタと一緒にtomcatバルブを使用することが問題になるようです。これは、Railoがリクエストを処理する前にバルブが呼び出されたように見えるからです。したがって、 "org.apache.catalina.loader.WebappClassLoader"が使用され、クラスが見つからない例外がスローされます。この問題を回避するには、ehcacheとTerracottaにセッション自体を格納し、クラスタ全体に分散させます。問題は、Terracottaに格納されたオブジェクトは直列化可能である必要があり、J2EEセッションは直列化可能でない「org.apache.catalina.connector.SessionFacade」に基づいていることです。したがって、この制限を回避するために、J2EEセッションをシリアライズ可能な単純な構造体にstructCopy(session)コマンドを使用して変換し、結果の構造体をehcacheに配置しました。
これは、あなたがテラコッタとレールで行くことができるはずです。
Javaオブジェクトを介して直接ehcacheとやり取りするか、Railo ehCacheプロバイダを使用してからcacheGetとcachePut経由で –