テンプレート処理中にエラーが発生しました。
Java method "com.liferay.portal.json.JSONFactoryImpl.createJSONObject(String)" threw an exception when invoked on com.liferay.portal.json.JSONFactoryImpl object "com.liferay.portal.json.JSONFactoryImpl@2ad66ae2"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: navigationJSONObject = jsonFactoryUti...  [in template "17855804202317#32484267#LEARN-ARTICLE-NAV" at line 4, column 9]
----
1<#assign 
2	groupFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL() 
3	groupPathFriendlyURLPublic = themeDisplay.getPathFriendlyURLPublic() + groupFriendlyURL 
4	navigationJSONObject = jsonFactoryUtil.createJSONObject(navigation.getData()) 
5	navigationMenuItems = 
6
7			"Analytics Cloud": { 
8				"image": "/documents/d${groupFriendlyURL}/analytics_c-svg", 
9				"title": "Analytics Cloud", 
10				"url": "analytics-cloud" 
11			}, 
12			"Commerce": { 
13				"image": "/documents/d${groupFriendlyURL}/commerce_product-svg", 
14				"title": "Commerce", 
15				"url": "commerce" 
16			}, 
17			"DXP": { 
18				"image": "/documents/d${groupFriendlyURL}/dxp_p-svg", 
19				"title": "DXP / Portal", 
20				"url": "dxp" 
21			}, 
22			"Liferay Cloud": { 
23				"image": "/documents/d${groupFriendlyURL}/dxp_c-svg", 
24				"title": "Liferay Cloud", 
25				"url": "liferay-cloud" 
26			}, 
27			"Reference": { 
28				"image": "/documents/d${groupFriendlyURL}/reference-svg", 
29				"title": "Reference", 
30				"url": "reference" 
31
32
33 
34	breadcrumbJSONArray = navigationJSONObject.getJSONArray("breadcrumb") 
35	childrenJSONArray = navigationJSONObject.getJSONArray("children") 
36	parentJSONObject = navigationJSONObject.getJSONObject("parent") 
37	productJSONObject = breadcrumbJSONArray.getJSONObject(breadcrumbJSONArray.length()-1)!navigationJSONObject.getJSONObject("self") 
38	siblingsJSONArray = navigationJSONObject.getJSONArray("siblings") 
39/> 
40 
41<div class="learn-article-nav"> 
42	<#if productJSONObject?has_content && productJSONObject.getString("title")?has_content && navigationMenuItems[productJSONObject.getString("title")]?has_content && navigationMenuItems[productJSONObject.getString("title")].title?has_content> 
43		<div 
44			class="dropdown learn-article-nav-root learn-dropdown" 
45
46			<div class="learn-article-nav-item"> 
47				<div class="d-flex"> 
48					<div class="learn-article-nav-image"> 
49						<img 
50							class="lexicon-icon lexicon-icon-caret-bottom product-icon" 
51							role="presentation" 
52							src='${navigationMenuItems[productJSONObject.getString("title")].image}' 
53							viewBox="0 0 512 512" 
54						/> 
55					</div> 
56 
57					<span class="learn-article-nav-text">${navigationMenuItems[productJSONObject.getString("title")].title}</span> 
58				</div> 
59 
60				<div id="dropdown-icon"> 
61					<svg 
62						class="lexicon-icon lexicon-icon-caret-bottom" 
63						role="presentation" 
64						viewBox="0 0 512 512" 
65
66						<use xlink:href="/o/admin-theme/images/clay/icons.svg#caret-bottom"></use> 
67					</svg> 
68				</div> 
69			</div> 
70 
71			<ul class="dropdown-menu learn-dropdown-menu"> 
72				<#list navigationMenuItems as key, value> 
73					<li> 
74						<a 
75							class="dropdown-item learn-article-nav-item" 
76							href="/w/${navigationMenuItems[key].url}/index" 
77							tabindex="4" 
78
79							<span class="d-flex"> 
80								<span class="learn-article-nav-image"> 
81									<img 
82										class="lexicon-icon lexicon-icon-caret-bottom product-icon mt-0 mr-2" 
83										role="presentation" 
84										src="${value.image}"height: 25px; margin-left: 5px; max-width: none; width: 25px; 
85										viewBox="0 0 512 512" 
86									/> 
87								</span> 
88								<span class="learn-article-nav-text">${value.title}</span> 
89							</span> 
90 
91							<#if navigationMenuItems[productJSONObject.getString("title")].url == value.url> 
92								<span> 
93									<@clay["icon"] symbol="check" /> 
94								</span> 
95							</#if> 
96						</a> 
97					</li> 
98				</#list> 
99			</ul> 
100		</div> 
101	</#if> 
102 
103	<div class="learn-article-nav-content"> 
104		<#if parentJSONObject?has_content && parentJSONObject.getString("url")?has_content> 
105			<div class="learn-article-nav-item learn-article-nav-parent liferay-nav-item p-2"> 
106				<div class="mr-2"> 
107					<a 
108						href='${parentJSONObject.getString("url")}' 
109
110						<svg 
111							class="lexicon-icon lexicon-icon-angle-left" 
112							role="presentation" 
113							viewBox="0 0 512 512" 
114
115							<use xlink:href="/o/admin-theme/images/clay/icons.svg#angle-left"></use> 
116						</svg> 
117					</a> 
118				</div> 
119 
120				<span>${parentJSONObject.getString("title")}</span> 
121			</div> 
122		</#if> 
123 
124		<#if childrenJSONArray.length() gt 0> 
125			<ul class="m-0 p-2"> 
126				<#list 0..childrenJSONArray.length()-1 as i> 
127					<li class="learn-article-nav-item"> 
128						<a 
129							class='liferay-nav-item ${(navigationJSONObject.getJSONObject("self").url == childrenJSONArray.getJSONObject(i).url)?then("selected", "")}' 
130							href="${childrenJSONArray.getJSONObject(i).url}" 
131
132							<span>${childrenJSONArray.getJSONObject(i).getString("title")}</span> 
133						</a> 
134					</li> 
135				</#list> 
136			</ul> 
137		<#elseif siblingsJSONArray.length() gt 0> 
138			<ul class="m-0 p-2"> 
139				<#list 0..siblingsJSONArray.length()-1 as i> 
140					<li class="learn-article-nav-item"> 
141						<a 
142							class='liferay-nav-item ${(navigationJSONObject.getJSONObject("self").url == siblingsJSONArray.getJSONObject(i).url)?then("selected", "")}' 
143							href="${siblingsJSONArray.getJSONObject(i).url}" 
144
145							<span>${siblingsJSONArray.getJSONObject(i).getString("title")}</span> 
146						</a> 
147					</li> 
148				</#list> 
149			</ul> 
150		</#if> 
151	</div> 
152</div> 

アップグレード後の考慮事項

データベースをアップグレードした後、本番環境用にLiferayを再度構成し、Liferayインスタンスに影響を与える可能性のある機能の変更を確認する必要があります。

本番環境設定を再度有効にする

データベースをアップグレードした後、プロダクション設定を再度有効にしてください。

検索インデクス

7.2へのアップグレードで検索インデックスを無効にした場合は、無効にするために使用した .config ファイルを削除するか、.config ファイルで indexReadOnly="false" を設定して、再度有効にしてください。 例えば、

rm osgi/configs/com.liferay.portal.search.configuration.IndexStatusManagerConfiguration.config

検索インデックスの再インデックスは、すべてのLiferayのアップグレード後に必要です。 インデックスを再作成する、

  1. グローバルメニュー( グローバルメニューアイコン )をクリックし、 コントロールパネル タブを開きます。

  2. Configurationセクションの Search をクリックし、 Index Actions タブを選択します。

  3. 再インデックス作成モード を選択し、 All search indexesReindex をクリックします。

You can reindex your search indexes in the Control Panel.

note

古いバージョン(7.1以下)からアップグレードした場合は、検索インデックスを処理するために、 Elasticsearch をインストールすることを検討してください。

データベース設定

アップグレード前にアップグレード用にデータベースをチューニングした場合は( データベース・チューニング・アップグレード を参照)、本番用データベースの設定を復元します。

note

データのアップグレード中にシャード環境から移行した場合は、仮想インスタンスへの移行を完了するために、さらに構成を調整する必要があります。 詳細については、 アップグレードと更新のプロパティ セクションを参照してください。

最新のマーケットプレイスアプリのインストール

新しい Liferay バージョンに対応した Marketplace アプリ の最新バージョンをインストールし、 Gogo シェルコマンド を使用して、必要なデータベースのアップグレードを確認し、実行します。

機能変更の考慮

新しいLiferayバージョンでは、機能と動作が変わります。 以下の機能や動作がどのように変化するかを確認する。

Webコンテンツの表示権限を有効にする

7.1以前は、デフォルトですべてのユーザーがウェブコンテンツの記事を閲覧できました。 デフォルトで閲覧権限がチェックされるようになった。 ロールごとに各ウェブコンテンツ記事の閲覧権限を編集することができます。

note

7.4より前のバージョンでは、コントロールパネル設定システム設定ウェブコンテンツ仮想インスタンススコープウェブコンテンツに移動し、記事の表示許可チェック有効の選択を解除することで、すべてのウェブコンテンツ記事の表示許可を開くことができました。

Disable the permissions check for viewing web content by scrolling down in the Web Content menu in the System Settings.

Webコンテンツの画像チェック

7.2にアップグレードすると、ウェブコンテンツの画像が File Store (ドキュメントライブラリとしても知られています)に移動し、以前のテーブルであるJournalArticleImageが削除されます。 イメージを移行できない場合、Liferayは失敗を報告します:

ジャーナル記事の画像{ファイル名}をファイルリポジトリに追加できません。

メッセージがなければ、画像はファイルストアにあるはずです。 ウェブコンテンツの記事をプレビューして画像を確認する。

メンテナンスモードでの非推奨項目と機能の考慮

メンテナンスモード の廃止予定と機能を確認し、それらがあなたの Liferay インスタンスにどのような影響を与えるか対処する計画を立てましょう。

廃止されたデータを削除する

不要で役に立たないデータがあれば、それを削除することができる。 ここでは、よくある時代遅れのデータと、それを削除するためのツールを2つ紹介する。

  • 廃止されたLiferayアプリまたはモジュールからのデータ。 データクリーンアップ ツールを使用して削除します。

  • 利用可能なLiferayアプリおよびモジュールからの廃止されたデータ。 データ削除 ツールを使用して削除します。

さいごに

必要なアップグレード後のタスクがすべて完了すると、Liferayサーバーは以前と同じように通常の操作ができるようになります。