SpringポートレットMVCフレームワークは、ポートレットへの依存関係の導入と、モデルビューコントローラーパターンの実装を容易にします。 Liferay Portal 6.xのポートレットでこのフレームワークを使用する場合は、Liferay DXP 7.1へアップグレードできます。
このチュートリアルでは、My Spring MVC(プロジェクトmy-spring-mvc-portlet
)と呼ばれる、Spring MVCポートレットのアップグレードについて説明します。 これはプラグインSDKのspring_mvc
テンプレートから作成された、必要最小限のポートレットです。
詳細はオリジナルのソースコードおよびアップグレードされたソースコードをダウンロードして参照してください。
以下の図は、my-spring-mvc-portlet
プロジェクトを示しています。
これらのファイルには、Spring関連のコンテンツがあります。
view.jsp
→ ポートレットの名前とLiferay DXPのリリース情報を表示します。my-spring-mvc-portlet.xml
→ Liferay DXPはこのコンテキストファイルをポートレットに使用します。portlet-applications-context.xml
→ SpringのSpringContextLoaderListener
クラスはこのコンテキストファイルを使用します。MySpringMVCPortletviewController
→ マップVIEW
がview.jsp
にリクエストし、Liferay DXPリリース情報をモデル属性に割り当てます。portlet.xml
→ コンテキスト設定ファイルmy-spring-mvc-portlet.xml
を参照し、登録済みポートレット要求ハンドラーのディスパッチャーを指定します。web.xml
→ コンテキスト設定ファイルportlet-application-context.xml
を参照し、ViewRendererServlet
を指定して、ポートレットの要求と応答およびHTTPサーブレットの要求と応答を変換します。
Spring MVCポートレットのアップグレード手順は次のとおりです。
liferayのAPIにコードを適合させる
Liferay Upgrade Plannerは、コードのアップデートとコンパイルの事象の迅速な解決を促進します。
Upgrade Plannerは、プラグインのliferay-plugin-package.properties
ファイルのliferay-versions
プロパティの値をアップデートする必要があるかどうかを検出し、それを自動的に修正するオプションを提供します。 これはmy-spring-mvc-portlet
が必要とする、唯一のコード適応です。
依存関係を解決する
Liferay Portal 6.2では、my-spring-mvc-portlet
はliferay-plugin-package.properties
ファイルのportal-dependency-jars
プロパティでそれらを指定することにより、ポータルのJARを活用しました。 プロパティはLiferay DXP 7.1で廃止されているため、Gradle、MavenまたはApache Ant/Ivyなどの依存関係管理フレームワークを使用して、依存関係を取得する必要があります。
サンプルポートレットプラグインを従来のプラグインからLiferay Workspace Webアプリケーションに変換することで、依存関係の解決が容易になりました。
アップデートされたmy-spring-mvc-portlet
のbuild.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-portlet | spring-webmvc-portlet |
spring-web-servlet | spring-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にアップグレードできました。