概要

  • ポータルのメイン処理

構造

  • StrutsのActionServletを拡張している
  • URLマッピングは /c/*

クラスロード時

メソッド詳細
■ com.liferay.portal.servlet.MainServlet#init()
初期化処理を行う

  • EventsProcessor に初期処理登録
  • com.liferay.portal.events.StartupAction
  • Velocityの処理
  • PluginPackageの処理
  • ポートレットの初期化
    • 定義ファイルの読み込み
      • /WEB-INF/portlet-custom.xml
      • /WEB-INF/portlet-ext.xml
      • /WEB-INF/liferay-portlet.xml
      • /WEB-INF/liferay-portlet-ext.xml
    • PortletApp初期処理
    • ポートレットのインスタンス生成
  • レイアウトの初期化
    • 定義ファイルの読み込み
      • /WEB-INF/liferay-layout-templates.xml
      • /WEB-INF/liferay-layout-templates-ext.xml
  • テーマの初期化
    • 定義ファイルの読み込み
      • /WEB-INF/liferay-look-and-feel.xml
      • /WEB-INF/liferay-look-and-feel-ext.xml
  • スケジューラの起動
    • LDAPインポート
    • リモートリポジトリのチェック
    • アナウンス、カレンダー、ジャーナル、掲示板
  • POPメッセージリスナ 初期化処理
  • SocialActivityInterpreter 初期化処理
    • ※ HTML出力時の割り込み処理っぽい
  • web.xmlのチェック
    • セッションタイムアウト時間の設定
  • Last modified pathsの設定
    • CSSとJavascriptのキャッシュ処理?
  • Global Statup Eventsの実行
    • システム起動時に一度だけ実行される
    • com.liferay.portal.events.GlobalStartupAction
      • オートデプロイリスナの登録
  • 会社の初期化
    • com.liferay.portal.util.PortalInstances#initCompany()
      • ThreadLocalに会社IDを設定
      • ポートレットのカテゴリ登録処理
      • 記事の検索情報同期化?
      • LDAPインポート
      • メッセージリソース読み込み
      • Application Startup Eventsの実行

■ com.liferay.portal.servlet.MainServlet#service()
リクエスト処理

  • シャットダウン中であれば、シャットダウンのHTMLを返す
    • 計画停止ができる?
  • ServletContextをRequestにぶら下げ
  • 最終更新日のチェック
  • PortletSessionTracker の設定
    • 用途不明
  • PortletRequestProcessorをRequestにぶら下げ
  • TilesDefinitionFactoryServletContextにぶら下げ
  • リクエストパラメタを暗号化しているどうか (リクエストパラメタ shuo で判断)
  • 認証処理 → 認証ではなく、ユーザテーブルの更新(最終ログイン日時とか)
  • Pre Service Eventsの実行
  • Strutsの上位クラスに処理を委譲
  • Post Service Eventsの実行
  • ThreadLocalのクリーンアップ処理

■ 不明点

  • 個別ポートレットはどのタイミングで呼び出されるか?
  • 認証処理はもう少し詳細を追いたい