Service Builderを使用するポートレットのアップグレード

Liferay DXP 7.1は引き続きService Builderを使用するため、永続性の詳細ではなく、アプリケーションのビジネスロジックに集中できます。 モデルクラス、ローカルおよびリモートサービス、および永続性は引き続き生成されます。

このチュートリアルでは、Guestbookポートレット(プロジェクトguestbook-portlet)と呼ばれる、LiferayプラグインSDK 6.2ポートレットのアップグレードについて説明します。 Liferay Portal 6.2ラーニングパスWriting a Liferay MVC Applicationの、Writing a Data-Driven Applicationセクションからのチュートリアルです。

図1:Guestbookポートレットは、ゲストブックとゲストブックエントリをモデル化します。

このチュートリアルを最大限に活用するには、オリジナルポートレットのソースコードおよびアップグレードされたソースコードをダウンロードして参照できます。

Guestbookポートレットには、次の特性があります。

  • MVCPortletを拡張
  • モデル、ビュー、コントローラーレイヤーを分離
  • Service BuilderでのHibernateによる永続性
  • JSPによって実装された表示レイヤー
  • マニュアルの依存関係管理に依存
  • LiferayプラグインSDK 6.2で開発

ほとんどのService Builderポートレットのアップグレードには、次の手順が含まれます。

  1. Liferay DXP 7.1のAPIにコードを適合させる
  2. 依存関係を解決する
  3. サービスを構築する

まずはコードを適応させることから始めます。

1. Liferay DXP 7.1のAPIにコードを適合させる

Liferay Upgrade Plannerを使用してコードをアップデートし、コンパイルの事象をすばやく解決します。 次に、残っているコンパイルエラーをマニュアルで修正します。

Guestbookポートレットには、次のコンパイルエラーがあります。

/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())%>" />

これは、マニュアルで修正する必要があるGuestbookポートレットの唯一のコンパイルエラーです。

2. 依存関係を解決する

Guestbookポートレットの依存関係は変更されていないため、解決する依存関係はありません。

ポートレットの依存関係を適合させる必要がある場合は、チュートリアルResolving a Plugin’s Dependenciesを参照してください。

3. サービスを構築する

Liferay Portal 6.2で行ったように、サービスを構築します。

Guestbookポートレットの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 Portal6.2では、Service Builderはpackage-pathが指定するパス属性に、例外クラスを生成します。 Liferay DXP 7.1では、Service Builderはそれらを[package-path]/exceptionに生成します。

古いパス:

[package-path]

新しいパス:

[package-path]/exception 

例として、Guestbookポートレットのパッケージパスはcom.liferay.docs.guestbookです。 exception要素GuestbookName用の例外クラスは、docroot/WEB-INF/service/com/liferay/docs/guestbook/exceptionへ生成されます。 例外を使用するクラスは、com.liferay.docs.guestbook.exception.GuestbookNameExceptionをインポートする必要があります。

ポートレットの例外クラスへの参照をアップデートします。

通常通りにポートレットをデプロイします。 サーバーは、次のポートレット状態を示すメッセージを出力します。

  • WAR processing
  • WAB startup
  • Availability to users

Guestbookポートレットをデプロイすると、次のメッセージが生成されます。

2018-03-21 18:23:10.032 INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:262] Processing guestbook-portlet-7.1.0.1.war
2018-03-21 18:23:15.355 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][BaseAutoDeployListener:43] Copying portlets for C:\portals\liferay-ce-portal-7.1-m1\tomcat-8.0.32\temp\20180321182315333UGEPAGTR\guestbook-portlet.war
2018-03-21 18:23:15.829 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][BaseDeployer:876] Deploying guestbook-portlet.war
2018-03-21 18:23:17.797 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][BaseAutoDeployListener:50] Portlets for C:\portals\liferay-ce-portal-7.1-m1\tomcat-8.0.32\temp\20180321182315333UGEPAGTR\guestbook-portlet.war copied successfully
2018-03-21 18:23:19.621 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][HotDeployImpl:226] Deploying guestbook-portlet from queue
2018-03-21 18:23:19.621 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][PluginPackageUtil:1003] Reading plugin package for guestbook-portlet
2018-03-21 18:23:19.642 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][ServiceComponentLocalServiceImpl:598] Running GB SQL scripts
21-Mar-2018 18:23:19.669 INFO [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war] org.apache.catalina.core.ApplicationContext.log Initializing Spring root WebApplicationContext
2018-03-21 18:23:20.066 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][PortletHotDeployListener:186] Registering portlets for guestbook-portlet
2018-03-21 18:23:20.271 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][PortletHotDeployListener:298] 1 portlet for guestbook-portlet is available for use
2018-03-21 18:23:20.468 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][BundleStartStopLogger:35] STARTED guestbook-portlet_7.1.0.1 [657]

これで、ポートレットがLiferay DXPで利用可能になりました。

Service Builderを使用したポートレットのアップグレードおよびデプロイが完了しました。

関連トピック

プラグインSDKプロジェクトをWorkspaceとGradleに移行する

依存関係管理ツールの使用

WABジェネレーターの使用

データアップグレードプロセスの移行

« Liferay MVCポートレットのアップグレードLiferay JSFポートレットのアップグレード »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています