問題
- Liferayに導入したカスタムキャッシュの実体がアクセスできない。 override-liferay-multi-vm-clustered.xmlでカスタムキャッシュを設定した。 でスクリプトコンソールからカスタムキャッシュエンティティにアクセスしようとした場合:
MultiVMPoolUtil.getPortalCache("com.custom.service.model.impl.AnyImpl").getKeys();DXP 7.1のスロー:
com.liferay.portal.cache.ehcache.LiferayCacheEventListenerFactory cannot be found by com.liferay.portal.cache.ehcache.impl_1.0.12
環境
- DXP 7.1 , DXP 7.0 (Fix pack 28+)
解像度
- カスタムキャッシュは2つの方法で設定することができます:a) プラグインの方法 または b) 今回のケースであるxmlの方法です。 以下、手順をご確認ください。
1./ portal-ext.propertiesに以下のポータルプロパティをチューニングします:
ehcache.replicator.properties.${specific.cache.name}=一例として:
ehcache.replicator.properties.com.custom.service.model.impl.AnyImpl=replicatePutsViaCopy=true,replicateUpdatesViaCopy=true
は、カスタムキャッシュをどのように動作させたいかによって異なります。 上記プロパティに値が指定されない場合は、PortalCacheReplicator.javaで指定された定数にフォールバックする。
2./ portal-ext.propertiesのoverride-liferay-multi-vm-clustered.xml をポイントします:
ehcache.multi.vm.config.location=/myehcache/override-liferay-multi-vm-clustered.xml
via 相対パス、WEB-INF/classes からの相対パス、absolute パスは受け付けません。 上記の例では、WEB-INF/classes/myehcache フォルダにxmlを配置しています。
3./ override-liferay-multi-vm-clustered.xml: liferay-multi-vm-clustered.xml を /osgi/marketplace/Liferay Foundation - Liferay Portal Cache - Impl.com.liferay.portal.cache.ehcache.impl.jar から抽出します。DXP 7.1 では /osgi/marketplace/Liferay Foundation.lpkg にある com.liferay.portal.cache.ehcache.jar から、DXP 7.0 では /osgi/marketplace/Liferay Foundation.lpkg から、ファイル名を override-liferay-multi-vm-clustered.xml に変えます。 ファイルの最後、 </ehcache> タグの前にカスタムキャッシュの設定を追記します。
4./ override-liferay-multi-vm-clustered.xml をクラスパス( WEB-INF/cl またはそのサブフォルダ)に配置します。 上記の例では、WEB-INF/classes/myehcacheフォルダーへ)
5./ Portalを起動します。
追加情報
- DXP 7.0のキャッシュサイズ、Time To Live および レプリケーションを変更する
- モジュールでキャッシュの設定を変更する