JVMレベル(tomcatのsetenv.bat
および setenv.sh
)でタイムゾーン設定を変更すると、そのJVMで実行されるすべてのプロセスに影響します。
この記事では、タイムゾーンがJVMレベルでGMTに設定されていない場合に発生する可能性のあるいくつかの既知の問題について説明します。
解決
1. カレンダーポートレットが正しく機能しない場合があります
タイムゾーンがJVMレベルでGMTに設定されていない場合、カレンダーポートレットからエクスポートされた終日のイベントの開始日と終了日は、エクスポートされた.icsファイルがMicrosoftOutlookにインポートされた後に誤った日付を表示する場合があります。 根本的な原因は、JVMレベルでタイムゾーンを変更すると、ポータルが終日のイベントの開始日と終了日を誤って計算することです。
また、別の関連する問題としてLPS-33526が存在します。
2. 日付フィールドを持つ構造を使用して作成されたWebコンテンツは、公開後に誤った日付を表示します
たとえば、タイムゾーンがJVMレベルでGMTに設定されていない場合、-Duser.timezone = Europe / Berlinに設定されている場合、日付フィールドを持つストラクチャを使用して作成されたWebコンテンツは、公開後に誤った日付を表示します。
-
-Duser.timezoneがEurope/Berlinと等しくなるように、環境に適したsetenvを構成します:
-Duser.timezone=Europe/Berlin
- Liferayを開始します
- 管理 > サイト管理 > コンテンツ > Webコンテンツに移動します
- 日付フィールドを含む新しいストラクチャを追加し、それをテンプレートに割り当てます
- 手順4で作成したストラクチャとテンプレートを使用して新しい記事を作成し、日付フィールドに日付を選択します
公開後、日付が手順5で設定した日付より前の日に設定されていることを確認します。
要約すると、ポータルのデータベースに保存されている各日付は、GMT時間で保存されている必要があります。 ポータルが1つの保存された日付をエンドユーザーに表示する必要がある場合、ポータルは、アプリケーションサーバーの現在の日付(この日付は構成されたJVMレベルのタイムゾーンの影響を受けます)と保存されたGMT形式の日付に基づいて表示日を計算します。 表示日が正しく計算されるようにするには、JVMレベルでタイムゾーンをGMTに設定する必要があります。 そうしないと、タイムゾーンオフセットが正しくなくなり、表示日付が誤って計算されて表示されます。