Spring MVCポートレットのアップグレード

SpringポートレットMVCフレームワークは、ポートレットへの依存関係の導入と、モデルビューコントローラーパターンの実装を容易にします。 Liferay Portal 6.xのポートレットでこのフレームワークを使用する場合は、Liferay DXP 7.1へアップグレードできます。

このチュートリアルでは、My Spring MVC(プロジェクトmy-spring-mvc-portlet)と呼ばれる、Spring MVCポートレットのアップグレードについて説明します。 これはプラグインSDKのspring_mvcテンプレートから作成された、必要最小限のポートレットです。

図1:My Spring MVCポートレットには、名前とLiferay DXPの情報が表示されます。

詳細はオリジナルのソースコードおよびアップグレードされたソースコードをダウンロードして参照してください。

以下の図は、my-spring-mvc-portletプロジェクトを示しています。

図2:my-spring-mvc-portletプロジェクトには、従来のLiferayプラグインファイル、Spring Portlet MVCアプリケーションコンテキスト(spring-context /)、およびコントローラークラスMySpringMVCPortletviewControllerがあります。

これらのファイルには、Spring関連のコンテンツがあります。

  • view.jsp → ポートレットの名前とLiferay DXPのリリース情報を表示します。
  • my-spring-mvc-portlet.xml → Liferay DXPはこのコンテキストファイルをポートレットに使用します。
  • portlet-applications-context.xml → SpringのSpringContextLoaderListenerクラスはこのコンテキストファイルを使用します。
  • MySpringMVCPortletviewController → マップVIEWview.jspにリクエストし、Liferay DXPリリース情報をモデル属性に割り当てます。
  • portlet.xml → コンテキスト設定ファイルmy-spring-mvc-portlet.xmlを参照し、登録済みポートレット要求ハンドラーのディスパッチャーを指定します。
  • web.xml → コンテキスト設定ファイルportlet-application-context.xmlを参照し、ViewRendererServlet を指定して、ポートレットの要求と応答およびHTTPサーブレットの要求と応答を変換します。

Spring MVCポートレットのアップグレード手順は次のとおりです。

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

  2. 依存関係を解決する

liferayのAPIにコードを適合させる

Liferay Upgrade Plannerは、コードのアップデートとコンパイルの事象の迅速な解決を促進します。

Upgrade Plannerは、プラグインのliferay-plugin-package.propertiesファイルのliferay-versionsプロパティの値をアップデートする必要があるかどうかを検出し、それを自動的に修正するオプションを提供します。 これはmy-spring-mvc-portletが必要とする、唯一のコード適応です。

依存関係を解決する

Liferay Portal 6.2では、my-spring-mvc-portletliferay-plugin-package.propertiesファイルのportal-dependency-jarsプロパティでそれらを指定することにより、ポータルのJARを活用しました。 プロパティはLiferay DXP 7.1で廃止されているため、Gradle、MavenまたはApache Ant/Ivyなどの依存関係管理フレームワークを使用して、依存関係を取得する必要があります。

サンプルポートレットプラグインを従来のプラグインからLiferay Workspace Webアプリケーションに変換することで、依存関係の解決が容易になりました。

アップデートされたmy-spring-mvc-portletbuild.gradleファイルは次のとおりです。

dependencies {
    compileOnly group: 'aopalliance', name: 'aopalliance', version: '1.0'
    compileOnly group: 'commons-logging', name: 'commons-logging', version: '1.2'
    compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.0.0"
    compileOnly group: "javax.portlet", name: "portlet-api", version: "2.0"
    compileOnly group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1"
    compile group: 'org.jboss.arquillian.junit', name: 'arquillian-junit-container', version: '1.1.3.Final'
    compile group: 'org.jboss.arquillian.container', name: 'arquillian-tomcat-remote-7', version: '1.0.0.CR6'
    compile group: 'com.liferay', name: 'com.liferay.ant.arquillian', version: '1.0.0-SNAPSHOT'
    compile group: 'org.springframework', name: 'spring-aop', version: '4.1.9.RELEASE'
    compile group: 'org.springframework', name: 'spring-beans', version: '4.1.9.RELEASE'
    compile group: 'org.springframework', name: 'spring-context', version: '4.1.9.RELEASE'
    compile group: 'org.springframework', name: 'spring-core', version: '4.1.9.RELEASE'
    compile group: 'org.springframework', name: 'spring-expression', version: '4.1.9.RELEASE'
    compile group: 'org.springframework', name: 'spring-web', version: '4.1.9.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '4.1.9.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc-portlet', version: '4.1.9.RELEASE'
}

my-spring-mvc-portletの依存アーティファクトの一部には、新しい名前が付けられています。

古い名前新しい名前
spring-web-portletspring-webmvc-portlet
spring-web-servletspring-webmvc

Maven Centralは、アーティファクト依存関係情報を提供します。

ポートレットの記述子ファイルによって参照されるクラスパッケージをインポートするには、liferay-plugin-package.propertiesファイルのImport-Packageヘッダーにパッケージを追加します。 詳細については、Deploying a Spring MVC Portletを参照してください。

java.*パッケージ以外でJavaのrt.jarからのパッケージに依存している場合、ポータルプロパティorg.osgi.framework.bootdelegationをオーバーライドし、プロパティのリストにそれを追加します。 詳細についてはこちらをご覧ください。

ポートレットをデプロイする準備ができました。 通常通りデプロイします。

Liferay DXPのWAB ジェネレーターは、ポートレットWARをWebアプリケーションバンドル(WAB)に変換し、LiferayのOSGiランタイムフレームワークにWABをインストールします。

2018-04-12 19:28:36.810 INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:262] Processing my-spring-mvc-portlet.war
2018-04-12 19:28:42.182 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\20180412192842100ZSINUETA\my-spring-mvc-portlet.war
2018-04-12 19:28:42.706 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][BaseDeployer:876] Deploying my-spring-mvc-portlet.war
2018-04-12 19:28:47.708 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\20180412192842100ZSINUETA\my-spring-mvc-portlet.war copied successfully
2018-04-12 19:28:56.600 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][HotDeployImpl:226] Deploying my-spring-mvc-portlet from queue
2018-04-12 19:28:56.601 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][PluginPackageUtil:1003] Reading plugin package for my-spring-mvc-portlet
2018-04-12 19:28:56.700 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][PortletHotDeployListener:186] Registering portlets for my-spring-mvc-portlet
2018-04-12 19:28:56.955 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][PortletHotDeployListener:298] 1 portlet for my-spring-mvc-portlet is available for use
2018-04-12 19:28:57.114 INFO  [fileinstall-C:/portals/liferay-ce-portal-7.1-m1/osgi/war][BundleStartStopLogger:35] STARTED my-spring-mvc-portlet_7.1.0.1 [658]

これでSpring MVCポートレットをLiferay DXP 7.1にアップグレードできました。  

関連トピック

Spring MVC

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

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

WABジェネレーターの使用

« サーブレットベースのポートレットのアップグレードStruts 1ポートレットのアップグレード »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています