legacy-knowledge-base
公開されました Jul. 2, 2025

LiferayポータルとTerracotaのセットアップ

written-by

Liferay Support

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

この記事はレガシー記事です。 Liferay製品の旧バージョンにも適用されます。 記事のメンテナンスは終了していますが、情報はまだ通用する可能性があります。

TerracottaとLiferayの連携を実現する方法について解説します。

解像度

TerracottaとLiferayを正常に連携させるためには、 LPS-31709 からのパッチが必要となります。

パッチを入手後、以下の手順に従ってください:

*Liferayのホームフォルダ、Tomcatのホームフォルダ、Liferay Portal 6.1 EE GA2 Terracottaのホームフォルダ、Terracottaが動作するIPアドレスとポートに対応する環境変数を設定し、シェルスクリプトの例を使用する場合、次の説明で提供します。
LIFERAY_HOME=/run/shm/6120/bundles

TOMCAT_HOME=$LIFERAY_HOME/tomcat-7.0.27

TERRACOTTA_ADDRESS=127.0.0.1:9510

TERRACOTTA_HOME=$HOME/Downloads/terracotta-3.5.5

1. Liferayが使用しているEhCacheのバージョンに対応するTerracottaのバージョンを検索します。 例えば、6.1EE SP1(6.1.20)では、LiferayはEhCache 2.4.6を使用します。 そのため、EhCache 2.4.xに同梱されているTerracottaのバージョンが必要です。 Terracotta 3.5.3はEhCache 2.4.6、Terracotta 3.5.5はEhCache 2.4.8で出荷しています。

2. LiferayのWEB-INF/libフォルダにあるEhCacheとSLF4jのJARをすべて削除し、Terracottaのehcache/libフォルダに用意されているものと入れ替えます。 これをシェルスクリプトで書くと、次のようになります:

rm $TOMCAT_HOME/webapps/ROOT/WEB-INF/lib/ehcache*.jar

rm $TOMCAT_HOME/webapps/ROOT/WEB-INF/lib/slf4j*.jar

cp $TERRACOTTA_HOME/ehcache/lib/ehcache*.jar

$TOMCAT_HOME/webapps/ROOT/WEB-INF/lib

cp $TERRACOTTA_HOME/ehcache/lib/slf4j*.jar $TOMCAT_HOME/webapps/ROOT/WEB-INF/lib

3. セッションレプリケーションを使用しない場合(Lifreay 6.1では現在セッションレプリケーションはできませんのでご注意ください)、terracotta-toolkit JARをLiferayのWEB-INF/libフォルダにコピーします。 これをシェルスクリプトで書くと、次のようになります:

cp $TERRACOTTA_HOME/common/terracotta-toolkit*.jar

$TOMCAT_HOME/webapps/ROOT/WEB-INF/lib

4. portal-impl.jar から hibernate-terracotta.xml と liferay-multi-vm-terracotta.xml を取り出し、Liferay の WEB-INF/classes にある "myehcache" フォルダに配置します。 その後、「localhost:9510」のインスタンスを、Terracottaが動作している実際のIPアドレスとポートに置き換えます(デフォルトではポート9510で動作しているので、IPアドレスは別のサーバーにある場合のみ変更してください)。 これをシェルスクリプトで書くと、次のようになります:

unzip -qq $TOMCAT_HOME/webapps/ROOT/WEB-INF/lib/portal-impl.jar

ehcache/hibernate-terracotta.xml

ehcache/liferay-multi-vm-terracotta.xml -d

$TOMCAT_HOME/webapps/ROOT/WEB-INF/classes

mv $TOMCAT_HOME/webapps/ROOT/WEB-INF/classes/ehcache

$TOMCAT_HOME/webapps/ROOT/WEB-INF/classes/myehcache

sed -i "s/localhost:9510/$TERRACOTTA_ADDRESS/g"

$TOMCAT_HOME/webapps/ROOT/WEB-INF/classes/myehcache/hibernate-terracotta.xml

sed -i "s/localhost:9510/$TERRACOTTA_ADDRESS/g"

$TOMCAT_HOME/webapps/ROOT/WEB-INF/classes/myehcache/liferay-multi-vm-terracotta.xml

5. 新しいhibernate-terracotta.xmlとliferay-multi-vm-terracotta.xmlをportal-ext.propertiesに追加します。 例えば、 $LIFERAY_HOMEの portal-ext.properties を使用する場合、シェルスクリプトは次のようになります:

echo -e "\n" >> $LIFERAY_HOME/portal-ext.properties

echo "net.sf.ehcache.configurationResourceName=/myehcache/hibernate-terracotta.xml"

>> $LIFERAY_HOME/portal-ext.properties

echo "ehcache.multi.vm.config.location=/myehcache/liferay-multi-vm-terracotta.xml"

>> $LIFERAY_HOME/portal-ext.properties

6. LiferayのWEB-INF/libフォルダにあるQuartz JARをすべて削除し、Terracottaのquartzフォルダに用意されているquartz-allとquartz-terracotta JARで置き換えます。 Terracottaの配布物には他にもQuartzのJARが含まれていますが、無視して大丈夫です。 これをシェルスクリプトで書くと、次のようになります:

rm $TOMCAT_HOME/webapps/ROOT/WEB-INF/lib/quartz*.jar

cp $TERRACOTTA_HOME/quartz/quartz-all*.jar $TOMCAT_HOME/webapps/ROOT/WEB-INF/lib

cp $TERRACOTTA_HOME/quartz/quartz-terracotta*.jar

$TOMCAT_HOME/webapps/ROOT/WEB-INF/lib

7. portal-ext.propertiesを更新して、古いorg.quartz.*プロパティをすべて空白にして、jobStoreクラスをorg.terracotta.quartz.TerracottaJobStoreに設定して、新しいプロパティ「tcConfigUrl」を追加して、TerracottaがあるIPアドレスとポートにポイントします。 これをシェルスクリプトで書くと、次のようになります:

echo -e "\n" >> $LIFERAY_HOME/portal-ext.properties

echo "org.quartz.jobStore.class=org.terracotta.quartz.TerracottaJobStore"

>> $LIFERAY_HOME/portal-ext.properties

echo "org.quartz.jobStore.tcConfigUrl=$TERRACOTTA_ADDRESS" >>

$LIFERAY_HOME/portal-ext.properties

echo "org.quartz.jobStore.dataSource=" >> $LIFERAY_HOME/portal-ext.properties

echo "org.quartz.jobStore.isClustered=" >> $LIFERAY_HOME/portal-ext.properties

echo "org.quartz.jobStore.misfireThreshold=" >>

$LIFERAY_HOME/portal-ext.properties

echo "org.quartz.jobStore.tablePrefix=" >> $LIFERAY_HOME/portal-ext.properties

echo "org.quartz.jobStore.useProperties=" >> $LIFERAY_HOME/portal-ext.properties

8. 最後に、Terracottaによるセッションレプリケーションの有効化を検討します。 仮に、LiferayのEhCacheのバージョンを、TerracottaTomcat70xSessionValveが存在するTerracottaのバージョンで使われているものと同じものにアップグレードし、すべてのEhCacheラッパークラスを修正して、アップグレードしたEhCacheインターフェースクラスに追加した新しいメソッドをすべて適切に実装するとした場合です。 そうすると、ユーザーはTerracottaを使ったセッションレプリケーションを有効にすることができるようになります。

そのために、terracotta-toolkit JARをlib/extに追加し、terracota-session JARもlib/extに含まれていることを確認します。 その後、各WebアプリケーションのすべてのコンテキストXML(Tomcatの場合はconf/Catalina/localhostに格納)を更新し、Terracottaバルブの使用を認識できるようにします。 これをシェルスクリプトとして書くと、次のようになります:

cp $TERRACOTTA_HOME/common/terracotta-toolkit*.jar $TOMCAT_HOME/lib/ext

cp $TERRACOTTA_HOME/sessions/terracotta-session*.jar $TOMCAT_HOME/lib/ext

for file in $TOMCAT_HOME/conf/Catalina/localhost/*; do

sed -i "s/<\/Context>/\t<Valve

className=\"org.terracotta.session.TerracottaTomcat70xSessionValve\"

tcConfigUrl=\"$TERRACOTTA_ADDRESS\"\/>\n<\/Context>/" $file

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base