Liferay DXP 7.1は引き続きService Builderを使用するため、永続性の詳細ではなく、アプリケーションのビジネスロジックに集中できます。 モデルクラス、ローカルおよびリモートサービス、および永続性は引き続き生成されます。
ほとんどのService Builderポートレットのアップグレードには、次の手順が含まれます。
まずはコードを調整することから始めます。
ステップ1:コードをLiferay DXP 7.1のAPIに適合させる
Upgrade Plannerを使用して、ポートレットをLiferay DXP 7.1のAPIに適合させます。 プランナーのアップグレードの問題の修復ステップを実行すると、既存の事象の多くが自動修正されます。 残りの事象については、プランナーは新しいAPIの影響を受けるコード、およびそれを適応させる方法を特定します。
たとえば、次のコンパイルエラーがあるサンプルポートレットについて検討します。
/html/guestbook/view.jsp(58,1) PWC6131: Attribute total invalid for tag search-container-results according to TLD
view.jsp
ファイルは、Liferay DXP 7.1のliferay-ui
タグライブラリに存在しないタグライブラリ属性total
を指定します。 2番目の属性total
に注意してください。
<liferay-ui:search-container-results
results="<%=EntryLocalServiceUtil.getEntries(scopeGroupId,
guestbookId, searchContainer.getStart(),
searchContainer.getEnd())%>"
total="<%=EntryLocalServiceUtil.getEntriesCount(scopeGroupId,
guestbookId)%>" />
このようなタグを作るため、total
属性の割り当てを削除します。
<liferay-ui:search-container-results
results="<%=EntryLocalServiceUtil.getEntries(scopeGroupId,
guestbookId, searchContainer.getStart(),
searchContainer.getEnd())%>" />
コードが新しいAPIに適応するまで、これらのエラータイプなどを解決します。
ステップ2:依存関係を解決する
アプリケーションの依存関係を適合するには、チュートリアルResolving a Plugin’s Dependenciesを参照してください。 依存関係がアップグレードされたら、サービスを再構築してください。\
ステップ3:サービスを構築する
ポートレットのサービスを再構築するには、記事Running Service Builderを参照してください。
以前のService Builderコードをアップグレードすると、異なる結果を生成する可能性があります。その変更の例を次に示します。
Liferay Portal 6.2ポートレットのservice.xml
ファイルは、exception
要素で例外クラス名を次のように指定します。
<service-builder package-path="com.liferay.docs.guestbook">
...
<exceptions>
<exception>GuestbookName</exception>
<exception>EntryName</exception>
<exception>EntryMessage</exception>
<exception>EntryEmail</exception>
</exceptions>
</service-builder>
Liferayポータル6.2では、Service Builderはpackage-path
が指定するパス属性に、例外クラスを生成します。 Liferay DXP 7.1では、Service Builderはそれらを[package-path]/exception
に生成します。
古いパス:
[package-path]
新しいパス:
[package-path]/exception
例として、サンプルポートレットのパッケージパスはcom.liferay.docs.guestbook
です。 exception
要素GuestbookName
用の例外クラスは、docroot/WEB-INF/service/com/liferay/docs/guestbook/exception
へ生成されます。 例外を使用するクラスは、com.liferay.docs.guestbook.exception.GuestbookNameException
をインポートする必要があります。 Service Builderプロジェクトでこのアップグレードが必要な場合は、ポートレットの例外クラスへの参照をアップデートする必要があります。
Service Builderポートレットがアップグレードされたら、デプロイします。
これでポートレットがLiferay DXPで利用可能になりました。 Service Builderを使用するポートレットのアップグレードはこれで完了です。\