AEM ポータルとポートレット aem-portals-and-portlets
このドキュメントでは、次の点について説明します。
- AEM Portal のアーキテクチャ
- AEM as a portal の管理と設定
- AEMをポータルとして使用する
- ポートレット(例えば、web サーバーなど)内の AEM コンテンツのインストール、設定、表示
AEM Portal のアーキテクチャ aem-portal-architecture
AEM portal アーキテクチャには、ポータルとポートレットの定義が含まれます。
ポータルとは what-is-a-portal
ポータルとは、パーソナライゼーション、シングルサインオン、様々なソースからのコンテンツ統合を提供し、情報システムのプレゼンテーションレイヤーをホストする Web アプリケーションです。
AEM では JSR 286 準拠のポートレットを実行できます。ポートレットコンポーネントによって、ページにポートレットを埋め込むことができます。AEM コンテンツポートレットの管理を参照してください。
ポートレットとは what-is-a-portlet
ポートレットとは、動的コンテンツを生成するコンテナ内にデプロイされる Web コンポーネントです。 ポートレットインターフェイスはパッケージ化され、ポートレットコンテナ内の.war ファイルとしてデプロイされます。 AEMをポータルとして実行している場合は、ポートレットの.war ファイルを使用してポートレットを実行する必要があります。
ポータルに表示されるAEMコンテンツを設定するには、 ポートレットでのAEMのインストール、設定、使用.
AEM Portal Director aem-portal-director
AEM Content Portlet の管理 administering-the-aem-content-portlet
AEMコンテンツポートレットを使用すると、ポータルにAEMコンテンツを表示できます。 このポートレットは /crx-quickstart/opt/portal
にあり、様々な方法でカスタマイズできます。例えば、AEMがデフォルトの動作を上書きするために必要な認証情報を生成する独自の認証サービスをデプロイすることで、SSO/認証処理をカスタマイズできます。 プラグインは、定義された API を使用し、API に対してプラグインを作成することで、独自の機能を追加できます。 プラグインは、実行中のポートレットにデプロイできます。 適切に機能させるには、起動時に表示するコンテンツパスと共に、AEMオーサーインスタンスとパブリッシュインスタンスの設定が必要です。
一部の設定はポートレット環境設定によって変更できますが、その他の設定の変更は OSGi サービス設定で行います。設定の変更には、config ファイルまたは OSGi Web コンソールを使用します。
ポートレット環境設定 portlet-preferences
ポータルの環境設定は、ポータルサーバーでのデプロイ時に設定するか、 WEB-INF/portlet.xml ファイルを作成してから、ポートレット Web アプリケーションをデプロイします。 デフォルトでは portlet.xml ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="https://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd"
version="1.0">
<portlet>
<portlet-name>RSSWeatherPortlet</portlet-name>
<portlet-class>org.jboss.portlet.weather.WeatherPortlet</portlet-class>
<init-param>
<name>default_zipcode</name>
<value>05673</value>
</init-param>
<init-param>
<name>RSS_XSL</name>
<value>/WEB-INF/Rss.xsl</value>
</init-param>
<init-param>
<name>base_url</name>
<value>https://xml.weather.yahoo.com/forecastrss?p=</value>
</init-param>
<expiration-cache>180</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<portlet-info>
<title>Weather Portlet</title>
</portlet-info>
<portlet-preferences>
<preference>
<name>expires</name>
<value>180</value>
</preference>
<preference>
<name>RssXml</name>
<value>https://xml.weather.yahoo.com/forecastrss?p=33145</value>
<read-only>false</read-only>
</preference>
</portlet-preferences>
</portlet>
</portlet-app>
ポートレットは、次の環境設定を使用して設定できます。
OSGi Web コンソール osgi-web-console
ポータルサーバーがホスト localhost、ポート 8080 で実行され、AEM ポートレット Web アプリケーションが Web アプリケーションコンテキスト cqportlet にマウントされていると想定すると、Web コンソールの URL は http://localhost:8080/cqportlet/cqbridge/system/console
になります。デフォルトのユーザーとパスワードはです。 admin.
を開きます。 設定 「 」タブで「 」を選択します。 Portal Directory CQ Server Configuration. ここでオーサーインスタンスおよびパブリッシュインスタンスのベース URL を指定します。この手順については、ポートレットの設定で説明します。
設定の指定 providing-configurations
自動デプロイメントと設定プロビジョニングをサポートするために、AEMコンテンツポートレットには組み込みの設定サポートがあり、ポートレットアプリケーションに提供されるクラスパスから設定を読み込もうとします。
起動時に、システムプロパティ com.day.cq.portet.config は、現在の環境を検出するために読み取られます。 通常、このプロパティの値は dev, prod, テスト など。 環境が設定されていない場合、設定は読み取られません。
環境を設定している場合、クラスパス com/day/cq/portlet/{env}.config で config ファイルが検索されます(env はその環境の実際の値に置き換えられます)。このファイルには、この環境のすべての設定ファイルが一覧表示されます。 これらのファイルは、設定ファイルの場所を基準に検索されます。 例えば、ファイルに my.service.xml,
行が含まれている場合、 このファイルは、クラスパス com/day/cq/portlet/my.service.config.
から読み取られます。ファイルの名前は、サービスの永続性 ID に .config を付けたものになります。 先ほどの例では、永続性 ID は my.service です。設定ファイルの形式は、Apache Sling OSGi インストーラーによって使用されている形式と同じです。
つまり、各環境に対して、対応する設定ファイルを追加する必要があります。 すべての環境に適用する設定は、これらのすべてのファイルに入力する必要があります。単一の環境の場合は、そのファイルに入力するだけです。 このメカニズムにより、どの環境でどの設定が読み取られるかを完全に制御できます。
異なるシステムプロパティを使用して環境を検出できます。 システムプロパティを指定します com.day.cq.portet.configproperty の代わりに使用するシステムプロパティの名前を含む com.day.cq.portet.config.
キャッシュとキャッシュの無効化 caching-and-caching-invalidation
ポートレットは、デフォルト設定で、AEM WCM から受け取った応答をユーザー固有のキャッシュにキャッシュします。 パブリッシュインスタンスのコンテンツで変更が発生した場合、キャッシュを無効にする必要があります。 この目的で、AEM WCM では、オーサーインスタンス上にレプリケーションエージェントを設定する必要があります。 キャッシュは手動でフラッシュすることもできます。 この項では、これらの両方の手順について説明します。
ポートレットには独自のキャッシュを設定できるので、AEMへのアクセス権を必要とせずに、ポートレット内のコンテンツを表示できます。 ポータルは、/libs/portal/director 内のコンテンツとして使用できます。 コンテンツにアクセスするには、AEM インスタンスを起動して、CRXDE Lite または WebDav を使用してその場所からファイルをダウンロードします。
このバンドルは実行時にデプロイするか、デプロイ前にポートレット Web アプリケーションの WEB-INF/lib/resources/bundles
に追加します。
キャッシュがデプロイされた後は、ポートレットによってパブリッシュインスタンスからコンテンツがキャッシュされます。ポートレットのキャッシュは、AEMから Dispatcher をフラッシュして無効化できます。 ポートレットが独自のキャッシュを使用するように設定するには、次の手順を実行します。
-
ポータルサーバーをターゲットにするオーサー環境でレプリケーションエージェントを設定します。
-
ポータルサーバーがホスト localhost、ポート 8080 で実行され、AEM ポートレット Web アプリケーションがコンテキスト cqportlet にマウントされていると想定すると、キャッシュをフラッシュするための URL は
http://localhost:8080/cqportlet/cqbridge/cqpcache?Path=$(path)
になります。GET メソッドを使用してください。注意: 要求パラメーターを使用する代わりに、Path という名前の http ヘッダーを送信できます。
レプリケーションエージェントによるキャッシュのフラッシュ flushing-the-cache-via-replication-agent
通常の Dispatcher の無効化と同様に、レプリケーションエージェントを設定して、ポータルのAEMポートレットキャッシュをターゲットに設定できます。 レプリケーションエージェントを設定した後、通常のページアクティベーションのたびにポータルのキャッシュがフラッシュされます。
AEMポートレットを実行する複数のポータルノードを操作する場合は、この手順で説明するように、各ノードにエージェントを作成する必要があります。
ポータルのレプリケーションエージェントを設定するには:
-
オーサーインスタンスにログインします。
-
「Web サイト」タブで、「ツール」タブをクリックします。
-
レプリケーションエージェントの 新規 メニューで、「新しいページ」をクリックします。
-
「テンプレート」で、「レプリケーションエージェント」を選択し、エージェントの名前を入力します。「作成」をクリックします。
-
作成したレプリケーションエージェントをダブルクリックします。 まだ設定されていないので、無効と表示されます。
-
「編集」をクリックします。
-
内 設定 タブで、 有効 チェックボックスで、シリアル化の種類として「Dispatcher Flush 」を選択し、再試行のタイムアウト ( 例:60000) を入力します。
-
「トランスポート」タブをクリックします。
-
「URI 」フィールドに、ポートレットのフラッシュ URI(URL) を入力します。 URL は次の形式です。
code language-xml https://<wps-host>:<port>/<wps-context>/<cq5-portlet-context>/cqbridge/cqpcache
-
「拡張」タブをクリックします。
-
「HTTP メソッド」フィールドに 「GET」 と入力します。
-
「HTTP ヘッダー」フィールドで + をクリックし、新しいエントリおよびタイプとして Path: {path} を追加します。
-
必要に応じて、「プロキシ」タブをクリックし、エージェントのプロキシ情報を入力します。
-
「OK」をクリックして、変更を保存します。
-
接続をテストするには、「接続をテスト」リンクをクリックします。レプリケーションテストが成功したかどうかを示すログメッセージが表示されます。 次に例を示します。
ポートレットのキャッシュの手動フラッシュ manually-flushing-the-portlet-cache
レプリケーションエージェント用に設定されたのと同じ URL にアクセスして、ポートレットのキャッシュを手動でフラッシュできます。 詳しくは、 キャッシュのフラッシュ を URL の形式に設定します。 また、フラッシュ対象を示すには、URL パラメーターの Path=<path> を使用してこの URL を拡張する必要があります。
次に例を示します。
https://10.0.20.99:10040/wps/PA_CQ5_Portlet/cqbridge/cqpcache?Path=*
キャッシュ全体をフラッシュします。 キャッシュからhttps://10.0.20.99:10040/wps/PA_CQ5_Portlet/cqbridge/cqpcache?Path=/content/mypage/xyz
が/content/mypage/xyz
をフラッシュします。
ポータルセキュリティ portal-security
ポータルは、駆動認証メカニズムです。 技術ユーザー、ポータルユーザー、グループなどを使用してAEMにログインできます。 ポートレットにはポータル内のユーザーのパスワードへのアクセス権がないので、ポートレットがユーザーに正常にログインするためのすべての資格情報を知らない場合は、SSO ソリューションを使用する必要があります。 この場合、AEMポートレットは必要な情報をすべてAEMに転送し、次にこの情報を基になるAEMリポジトリに転送します。 この動作はプラグ可能で、カスタマイズ可能です。
公開時の認証 authentication-on-publish
この節では、ポートレットが基になるAEM WCM インスタンスとの通信で使用できる認証モードについて説明します。
デフォルトでは、AEMのパブリッシュインスタンスにユーザー情報は送信されません。コンテンツは、常に匿名ユーザーとして表示されます。 ユーザー固有の情報をAEMから配信する場合、または公開用のユーザー認証が必要な場合は、これをオンにする必要があります。
ポートレットの認証設定へのアクセス accessing-the-portlet-s-authentication-configuration
ポートレットがAEM WCM インスタンスで使用する認証設定オプションは、Web コンソール(OSGi 設定)で使用できます。
ポートレットの認証設定にアクセスするには、次の手順に従います。
-
次の URL で Web コンソールにアクセスします。
http://localhost:8080/cqportlet/cqbridge/system/console
デフォルト設定での例:
https://wps-host:10040/wps/PA_CQ5_Portlet/cqbridge/system/console
-
Web コンソールにログインします。デフォルトの資格情報は、
admin/admin
です。 -
コンソールで、「Configuration」を選択します。
-
Configuration メニューで、設定する特定のサービスを選択します。サービスは、OSGi フレームワーク内のポートレットによって提供されます。
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 サービス名 説明 Day Portal Director Authenticator AEM WCM インスタンスに使用する認証モードを設定します。 選択したモードに応じて、技術ユーザーまたは SSO Cookie の名前を指定できます。 また、AEM WCM パブリッシュインスタンスの認証を有効にすることもできます。 Day Portal Director File Cache ポートレットがAEM WCM インスタンスから受け取った応答をキャッシュする方法のパラメーターを設定します。 Day Portal Director HTTP Client Service ポートレットが基になるAEM WCM インスタンスに HTTP 経由で接続する方法を設定します。 例えば、プロキシサーバーを指定できます。 Day Portal Director Locale Handler ポートレットがサポートするロケールを設定します。 AEM WCM インスタンスへのリクエストはユーザーのロケールに基づいています。例えば、ユーザーの言語が「ドイツ語」の場合、 /content/geometrixx/de/
にリクエストされます。Day Portal Director Privilege Manager 現在ログインしているユーザーに基づいて、ポートレットで「Web サイト」タブをテストするかどうかを設定します。 Day Portal Director Toolbar Renderer ポートレットのツールバーのレンダリングをカスタマイズします。 -
さらに、Web コンソールとログサービスを設定できます。 例えば、Apache Felix OSGi Management Console リンクをクリックして、Web コンソールの管理者資格情報を変更できます。
テクニカルユーザーモード technical-user-mode
デフォルトモードでは、AEM WCM オーサーインスタンスのポートレットによって発行されたすべてのリクエストは、現在のポータルユーザーに関係なく、同じテクニカルユーザーを使用して認証されます。 テクニカルユーザーモードは、デフォルトで有効になっています。 このモードは、OSGi 管理コンソールのそれぞれの設定画面で有効または無効にします。
指定されたテクニカルユーザーは AEM WCM オーサーインスタンスに存在する必要があり、公開時の認証 が有効な場合は、パブリッシュインスタンスにも存在する必要があります。オーサリング作業に十分なユーザーアクセス権限を与えてください。
SSO sso
ポートレットでは、AEMを初期状態で使用する場合に SSO をサポートします。 オーセンティケーターサービスが SSO を使用し、現在のポータルユーザーを cqpsso
という cookie として Basic 形式で AEM に送信するように設定することができます。AEM は、パス / に対して SSO 認証ハンドラーを使用するように設定する必要があります。cookie 名をもここで設定する必要があります。
それに従って、AEM リポジトリの crx-quickstart/repository/repository.xml
も次のように設定する必要があります。
<LoginModule class="com.day.crx.security.authentication.CRXLoginModule">
...
<param name="trust_credentials_attribute" value="TrustedInfo"/>
<param name="anonymous_principal" value="anonymous"/>
</LoginModule>
SSO 認証モード sso-authentication-mode
ポートレットは、シングルサインオン (SSO) スキームを使用してAEM WCM を認証できます。 このモードでは、現在ポータルにログインしているユーザーは、SSO Cookie の形式でAEM WCM に転送されます。 SSO モードを使用する場合、AEMポートレットにアクセスできるすべてのポータルユーザーは、基になるAEM WCM インスタンスに対して認識される必要があります。最も一般的には、AEM WCM が LDAP に接続されている形で、事前にユーザーを手動で作成しておく必要があります。 また、ポートレット内で SSO を有効にする前に、基盤の AEM WCM オーサーインスタンス(および 公開時の認証 が有効な場合のパブリッシュインスタンス)を、SSO ベースのリクエストを受け入れるように設定しておく必要もあります。
ポートレットで SSO 認証モードを使用するように設定するには、次の手順を実行します(次の節で詳しく説明)。
- AEM WCM のリポジトリが信頼された資格情報を受け入れるようにします。
- AEM WCM で SSO 認証を有効にします。
- AEMポートレットで SSO 認証を有効にします。
AEM WCM のリポジトリーが信頼できる資格情報を受け入れることを有効にする enabling-aem-wcm-s-repository-to-accept-trusted-credentials
AEM WCM で SSO を有効にする前に、AEM WCM から提供される信頼済みの資格情報を受け入れるように基になるリポジトリを設定する必要があります。 これをおこなうには、AEM repository.xml を設定します。
-
AEM WCM がインストールされているファイルシステムで、次のファイルを開きます。
//crx-quickstart/repository/repository.xml
-
この XML ファイル内で LoginModule のエントリを探し、その設定に対して trust_credentials_attribute を追加します。
code language-xml <LoginModule class="com.day.crx.security.authentication.CRXLoginModule"> ... <param name="trust_credentials_attribute" value="TrustedInfo"/> <param name="anonymous_principal" value="anonymous"/> </LoginModule>
-
変更を有効にするには、AEM WCM を再起動します。
AEM WCM での SSO 認証の有効化 enabling-sso-authentication-in-the-aem-wcm
AEM WCM で SSO を有効にするには、AEM WCM の Apache Felix Web Management Console(OSGi) で関連する設定エントリにアクセスします。
-
URI の https://<AEM-host>:<port>/system/console を使用してコンソールにアクセスします。
-
「構成」メニューで、「SSO 認証ハンドラ」を選択します。 この例では、SSO ハンドラーはAEMポートレットが提供する Cookie に基づいて、すべてのパスに対する SSO リクエストを受け付けます。 設定は異なる場合があります。
table 0-row-3 1-row-3 パス / すべてのリクエストに対して SSO ハンドラーを有効にします cookie 名 cqpsso ポートレットの OSGi コンソールで設定した、ポートレットによって提供される Cookie の名前。 -
クリック 保存 SSO を有効にします。 現在、SSO はプライマリ認証スキームです。
AEM WCM が受け取るリクエストごとに、まず SSO ベースの認証が試行されます。 失敗した場合は、通常の基本認証スキームへのフォールバックが実行されます。 そのため、SSO を使用しないAEM WCM への通常の接続は引き続き可能です。
AEMポートレットでの SSO 認証の有効化 enabling-sso-authentication-in-a-aem-portlet
基盤の AEM WCM インスタンスが SSO リクエストを受け入れるようにするために、ポートレットの認証モードを「Technical」から「SSO」に切り替える必要があります。
AEM ポートレットで SSO 認証を有効にするには:
-
URI の https://<aem-host>:<port>/system/console を使用してコンソールにアクセスします。
-
[Configuration] メニューで、利用可能な設定の一覧から [Day Portal Director Authenticator] を選択します。
-
「モード」で「SSO」を選択します。 その他のパラメーターはデフォルト値のままにします。
-
「Save」をクリックして、ポートレットの SSO を有効にします。
テストの目的で、管理者権限を持つAEM WCM で同じユーザーを作成した後、ポータルの管理者ユーザーでポートレットにアクセスします。
この手順を実行した後、リクエストは SSO を使用して認証されます。 HTTP 通信の一般的なスニペットにより、次の SSO およびポートレット固有のヘッダーが表示されます。
C-12-#001898 -> [GET /mynet/en/_jcr_content/par/textimage/image.img.png HTTP/1.1 ]
C-12-#001963 -> [cq5:locale: en ]
C-12-#001979 -> [cq5:used-locale: en ]
C-12-#002000 -> [cq5:locales: en,en_US ]
C-12-#002023 -> [cqp:user: wpadmin ]
C-12-#002042 -> [cqp:portal: IBM WebSphere Portal/6.1 ]
C-12-#002080 -> [cqp:windowid: 7_CGAH47L000CE302V2KFNOG0084 ]
C-12-#002124 -> [cqp:windowstate: normal ]
C-12-#002149 -> [cqp:portletmode: view ]
C-12-#002172 -> [User-Agent: Jakarta Commons-HttpClient/3.1 ]
C-12-#002216 -> [Host: 10.0.0.68:4502 ]
C-12-#002238 -> [Cookie: $Version=0; cqpsso=Basic+d3BhZG1pbg%3D%3D ]
C-12-#002289 -> [ ]
PIN 認証を有効にする enabling-pin-authentication
AEMコンテンツポートレットのデフォルトのインライン編集機能を使用せず、ポータル外のポートレットのオーサリングと管理の一部をAEMオーサーインスタンスで直接使用する場合は、PIN 認証を有効にする必要があります。 また、管理ボタンの設定を変更する必要があります。
Web サイト管理ページを開く、またはポートレットからページを編集する場合、AEMコンテンツポートレットでは新しいピン認証が使用されます。 デフォルトでは、ピン認証は無効になっているので、AEMで次の設定変更を行う必要があります。
-
repository.xml ファイルに信頼できる情報を追加することで、AEMで信頼できる認証を有効にします。
code language-xml <LoginModule class="com.day.crx.security.authentication.CRXLoginModule"> ... <param name="trust_credentials_attribute" value="TrustedInfo"/> </LoginModule>
-
OSGi 設定コンソールで、デフォルトでhttp://localhost:4502/system/console/configMgrにあるを選択します。 CQ PIN Authentication Handler を選択します。
-
を編集します。 URL ルートパス 単一の値のみを含むためのパラメーター /.
権限 privileges
ポートレットの一部の機能は、特権によって保護されます。 現在のユーザーがこの関数にアクセスするには、この権限が必要です。 次の権限が事前に定義されています。
- "toolbar" :これは、ポートレット内のツールバーを表示または使用するための一般的な権限です。
- "prefs" :この権限を持つユーザーは、ポートレットの環境設定を表示または変更できます。
- "cq-author:edit" :この権限を持つユーザーは、コンテンツの編集ビューを呼び出すことができます。
- "cq-author:preview" :この権限を持つユーザーは、プレビューを表示できます。
- "cq-author:siteadmin" :この権限を持つユーザーは、AEM内で siteadmin を開くことができます。
権限を管理する最善の方法は、ポータルの役割を使用し、これらの権限に役割を割り当てることです。 これは、OSGi 設定を通じておこなうことができます。 「Day Portal Director Privilege Manager」は、権限ごとに一連の役割を設定できます。 ユーザーがいずれかの役割を持っている場合、ユーザーは対応する権限を持ちます。
また、ポートレットインスタンスごとのベースに基づいて、このロールのアクセス権を定義することもできます。 ポートレットの環境設定ダイアログには、上記の権限ごとに入力フィールドが含まれます。 権限ごとに、ポートレットの役割のコンマ区切りリストを設定できます。 値が設定されている場合、これは「Day Portal Director Privilege Manager」サービスのグローバル設定を上書きし、役割が結合されないので、このグローバル設定から同じ役割を追加する必要が生じる場合があります。 値を指定しない場合は、グローバル設定が使用されます。
AEMポートレットアプリケーションのカスタマイズ customizing-the-aem-portlet-application
指定されたAEMポートレットアプリケーションは、AEMと同様に、Web アプリケーション内で OSGi コンテナを開始します。 このアーキテクチャを使用すると、OSGi の次の利点をすべて活用できます。
- 更新と拡張が容易
- ポータルサーバーと通信せずに、ポートレットのホットアップデートを実行できる
- ポートレットのカスタマイズが容易
ツールバーボタン toolbar-buttons
ツールバーとそのボタンは設定可能で、カスタマイズできます。 ツールバーに独自のボタンを追加したり、どのモードで表示されるボタンを定義したりできます。 各ボタンは、OSGi 設定を通じて設定できる OSGi サービスです。
OSGi Web コンソールには、 設定 タブをクリックします。 ボタンごとに、このボタンを表示するモードを定義できます。 これにより、例えばすべてのモードを削除して、ボタンを無効にすることができます。
デフォルトでは、AEMコンテンツポートレットはインライン編集機能を使用します。 ただし、編集のためにAEMオーサーインスタンスに切り替える場合は、 SiteAdmin ボタン そして コンテンツファインダーボタン を無効にします。 編集ボタン. この場合、AEM で PIN 認証を適切に設定してください。
ポートレットの Felix Web コンソールを介してバンドルをインストールすると、ポートレットのツールバーレイアウトをカスタマイズできます。このコンソールには、事前に定義された場所にカスタムの CSS/HTMLが含まれています。
バンドル構造 bundle-structure
次に、バンドル構造の例を示します。
$ jar tvf target/toolbarlayout-0.0.1-SNAPSHOT.jar | awk '{print $8}'
META-INF/
META-INF/MANIFEST.MF
/com/day/cq/portlet/toolbar/layout/
/com/day/cq/portlet/toolbar/layout/author.gif
/com/day/cq/portlet/toolbar/layout/back.gif
/com/day/cq/portlet/toolbar/layout/button.html
/com/day/cq/portlet/toolbar/layout/edit.gif
/com/day/cq/portlet/toolbar/layout/manage.html
/com/day/cq/portlet/toolbar/layout/publish.html
/com/day/cq/portlet/toolbar/layout/refresh.gif
/com/day/cq/portlet/toolbar/layout/siteadmin.gif
/com/day/cq/portlet/toolbar/layout/toolbar.css
META-INF フォルダーには、OSGi でバンドルとして識別するために必要な MANIFEST.MF ファイルが含まれます。 次のように表示されます。
Manifest-Version: 1.0
Built-By: djaeggi
Created-By: Apache Maven Bundle Plugin
Import-Package: com.day.cq.portlet.toolbar.layout
Bnd-LastModified: 1234178347159
Export-Package: com.day.cq.portlet.toolbar.layout
Bundle-Version: 0.0.1.SNAPSHOT
Bundle-Name: Company CQ5 Portal Director Portlet Toolbar Layout
Bundle-Description: This bundle provides a custom layout for the CQ5 P
ortal Director Portlet Toolbar.
Build-Jdk: 1.5.0_16
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.day.cq.portlet.company.toolbarlayout
Tool: Bnd-0.0.255
HTML/CSS/画像が/com/day/cq/portlet/toolbar/layout フォルダー内にあることは、ポートレットによって必須となり、変更できません。 同様に、MANIFEST.MF の Import-Package ヘッダーと Export-Package ヘッダーも/com/day/cq/portlet/toolbar/layout と呼ばれる必要があります。 Bundle-SymbolicName は、一意の完全修飾パッケージ名である必要があります。
Maven などのツールを使用してビルドするか、この節で示すように、関連するヘッダーを設定して jar ファイルを手動で作成できます。
ポートレットツールバービュー portlet-toolbar-views
ポートレットのツールバーには、基本的に 2 つのビュー状態があります。 各ビューおよび関連するボタンは、それぞれのボタンファイルを使用してHTMLできます。
公開ビュー publish-view
公開ビューには、ツールバーを管理ビューに切り替えるボタンが 1 つだけあります。 公開ビューは、 前のバンドル. HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。
公開ビューのプレースホルダー publish-view-placeholders
ビューを管理 manage-view
管理ビューには、次の 4 つのボタンがあります。[ 編集 ]、[Web サイト ] タブ、[ 更新 ]、[ 戻る ] の順に選択します。 管理ビューは、 前のバンドル. HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。
[ 管理 ] [ ビュープレースホルダ ] manage-view-placeholders
ボタン buttons
ボタンは、どの表示に対しても、button.html で定義されているのと同じ共通HTMLを使用します。
HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。
管理および公開ビューボタン manage-and-publish-view-buttons
button.html ファイルの例:
<div class="cqp_button">
<a href="#" onclick="{onclick}">
<img src="/wps/PA_CQ5_Portlet/cqbridge/static/{id}.gif" alt="{text}"
title="{text}"/>
</a>
</div>
カスタムレイアウトのインストール installing-a-custom-layout
カスタムレイアウトをインストールするには、ポートレットの OSGI Web コンソールにアクセスします バンドル 」セクションに移動して、バンドルをアップロードします。
パッケージ packages
インストール用のパッケージをアップロードまたは作成する必要がある場合は、詳しい説明について AEM ドキュメントのパッケージマネージャーを参照してください。
リンク処理 link-handling
すべてのリンクは、ポータルコンテキスト内で動作するように書き換えられます。 デフォルトでは、レンダリングパラメータを持つリンクが使用されます。 Portal DirectorHTMLの書き換えは、代わりにアクションリンクを使用するように設定できます。
また、コンテンツパスを表示するために問い合わせられる追加のリクエストパラメーターを定義することもできます。これは、例えば外部から特定のコンテンツへのリンクがある場合に便利です。
さらに、Portal Director HTML Rewriter に、リンクの書き換え除外を定義するための正規表現のリストを設定することができます。例えば、外部システムへの相対リンクがある場合、それらのリンクをこの除外リストに追加する必要があります。
ローカライゼーション localization
AEMコンテンツポートレットには、AEMのコンテンツが正しい言語で表示されるように、ローカライゼーション機能が組み込まれています。
これは、次の 2 つの手順で実行します。
- ポータルディレクトリのロケール検出は、ポータルからロケール設定を取得することで、ポータルユーザーのロケールを検出します。 このサービスは、AEMで使用可能な言語のリストを使用して設定する必要があります。
- Portal Director Locale Handler は、現在の要求のローカライゼーションを処理します。 リクエストされたコンテンツのパス(例:
/content/geometrixx/en/company.html
/)を取得し、設定に従って、en を実際のユーザーのロケールに書き換えます。
Portal Director Locale Handler には、ロケール情報をチェックするためのパスを設定できます。通常、この設定には /content
以下のすべてと、パス内のロケール情報の位置が含まれます。Portal Director Locale Handler はデフォルトで、AEM 内の多言語サイトの推奨構造に従います。
パス内のロケール情報を処理するための厳格なルールがないサイトの場合は、ロケールハンドラーを独自の実装に置き換えることが可能です。
オプションの OSGi サービス optional-osgi-services
オプションの OSGi サービスを実装して、ポートレットの様々な部分をカスタマイズできます。 各サービスは Java インターフェイスに対応しています。 このインターフェイスを実装して、バンドルによってポートレットにデプロイすることができます。
デフォルトのサービスの置き換え replacing-default-services
次のサービスは、(対応する Java インターフェイスと共に)コンテンツポートレットにデフォルトの実装を持っています。 カスタマイズするには、新しいサービス実装を含むバンドルをポートレットアプリケーションにデプロイする必要があります。
このようなサービスを実装する場合は、必ず service.ranking プロパティを正の値に設定します。 デフォルトの実装ではランク 0 が使用され、ポートレットは最もランキングの高いサービスを使用します。
ポートレットイベント portlet-events
ポートレット API(JSR-286) は、ポートレットイベントを指定します。 AEMコンテンツポートレットには統合ブリッジがあり、AEMポートレット用のポートレットイベントが OSGi イベントとして配信されるので、ポートレットイベントの処理がプラグ可能です。
特定のイベントを処理する場合は、デプロイメント記述子でイベントを受け取るものとして宣言し(またはポータルサーバーを介して設定します)、EventHandler インターフェイスを宣言する OSGi サービスを実装します( OSGi EventAdmin の仕様を参照)。
ポートレットイベントが発生するたびに、特定の OSGi イベントが送信され、ハンドラーを呼び出します。 ハンドラーは、すべてのコンテキスト情報を取得し、それに応じてポートレットのステータスを更新したり、新しいイベントを送信したりできます。 基本的に、handle メソッド内ではポートレットイベントフェーズのすべての機能を使用できます。
AEM as a Portal using-aem-as-a-portal
ポートレットコンポーネントを使用して、ポートレットウィンドウをAEMページに追加します。 アプリケーションサーバーにインストールする共有ライブラリを使用すると、ポートレットコンポーネントはデプロイ済みのポートレットアプリケーションを検出できます。
AEMをポータルとして使用するには、次のタスクを実行します。
- ポートレットコンポーネントと共有ライブラリをインストールします。
- ポートレットコンポーネントをサイドキックに追加します。
- ポータルコンポーネントに表示するポートレットを含む Web アプリケーションを設定およびデプロイします。
- ポートレットコンポーネントをページに追加し、表示するポートレットを選択します。
ポートレットコンポーネントのインストール installing-the-portlet-component
AEM Quickstart JAR ファイルには、ポートレットコンポーネントファイルが含まれています。 ファイル(cq-portlet-components.zip)を取得するには、Quickstart を実行するか、その内容を抽出します。
-
Quickstart JAR ファイルを実行するかその内容を抽出して、次の場所にある cq-portlet-components.zip ファイルを特定します。
- クイックスタートを実行:crx-quickstart/opt/portal
- クイックスタートの内容を抽出:静的/オプト/ポータル
-
アプリケーションサーバーにデプロイされている CQ5 オーサーインスタンスのパッケージマネージャーを開きます(https://appserverhost:port/cq5author/crx/packmgr)。
-
パッケージマネージャーを使用して、cq-portlets-components.zip パッケージをアップロードし、インストールします。
このパッケージによって、リポジトリ内の /libs/portal/director フォルダーに cq-portlet-director-sharedlibs-x.x.x.jar がインストールされます。
-
cq-portlet-director-sharedlibs-x.x.x.jar をハードドライブにコピーします。 FileVault や WebDAV クライアントなど、任意の方法でファイルを取得できます。
-
cq-portlet-director-sharedlibs.x.x.x.jar ファイルをアプリケーションサーバーの共有ライブラリフォルダーに移動し、デプロイされたポートレットアプリケーションでクラスを使用できるようにします。
サイドキックへのポートレットコンポーネントの追加 adding-the-portlet-component-to-sidekick
作成者が使用できるように、ポートレットコンポーネントを段落システムに追加します。
-
サイドキックで、定規アイコンをクリックしてデザインモードに切り替えます。
-
最初の段落の上にある
Design of par
ヘッダーの横の「編集」をクリックします。 -
「一般」コンポーネントカテゴリで、ポートレットコンポーネントの横にあるチェックボックスをオンにして「OK」をクリックします。
ポートレットアプリケーションの設定とデプロイ configuring-and-deploying-your-portlet-applications
ポートレットをアプリケーションサーバーの Web コンテナにデプロイして、ポータルコンポーネントで使用できるようにします。 ポートレットアプリケーションをデプロイする前に、このアプリケーションが AEM ポータルコンテナサーブレットを読み込むように設定する必要があります。この設定によって、ポートレットコンポーネントがポートレットにアクセスできるようになります。
-
ポートレットアプリケーションの WAR ファイルの内容を抽出します。
ヒント: jar xf nameofapp.war コマンドによってファイルを抽出します。
-
web.xml ファイルをテキストエディターで開きます。
-
次のサーブレット設定を web-app 要素内に追加します。
code language-xml <servlet> <servlet-name>slingportal</servlet-name> <servlet-class>org.apache.sling.portal.container.api.ContainerServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>slingportal</servlet-name> <url-pattern>/SlingPortletInvoker</url-pattern> </servlet-mapping>
-
web.xml ファイルを保存し、WAR ファイルを再度パッケージ化します。
ヒント:
jar cvf nameofapp.war *
コマンドにより、現在のディレクトリの内容を nameofapp.war ファイルに追加します。 -
ポートレットアプリケーションをアプリケーションサーバーにデプロイします。 詳しくは、使用しているアプリケーションサーバーのドキュメントを参照してください。
AEMページへのポートレットの追加 adding-portlets-to-your-aem-page
ポータルコンポーネントを使用して、ポートレットウィンドウを Web ページに追加します。 コンポーネントのプロパティを使用して、表示するポートレットを指定します。
-
Web ページで、 ポートレット サイドキックの「一般」グループからページにコンポーネントを追加します。
note note NOTE コンポーネントをページにドラッグした後、ページを再読み込みして、正しく機能することを確認します。 -
コンポーネントをダブルクリックして、ポートレットのプロパティを開きます。
-
内 ポートレットエンティティ ドロップダウンメニューから、リストからポートレットを選択します。
-
を選択またはクリアします。 タイトルバーを非表示 ポートレットのタイトルバーを表示するかどうかに応じて、「 」チェックボックスをオンにします。
-
内 ポートレットウィンドウ 必要に応じて、一意のポートレットウィンドウ ID を入力します。
note note NOTE 同じページで同じポートレットを複数回使用する場合は、各ポートレットに異なるウィンドウ ID を付けます。 -
「OK」をクリックします。ポートレットがAEMページに表示されます。
ポートレットでのAEMのインストール、設定、使用 installing-configuring-and-using-aem-in-a-portlet
AEM WCM が提供するコンテンツにアクセスするには、ポータルサーバーがAEM Portal Directorポートレットに適合している必要があります。 これをおこなうには、この節で説明する手順に従って、ポートレットをインストール、設定、ポータルページに追加します。
デフォルトでは、ポートレットは localhost:4503 のパブリッシュインスタンスに接続し、localhost:4502 のオーサーインスタンスに接続します。 これらの値は、ポートレットのデプロイ時に変更できます。 ポータルディレクタは、リポジトリ内の/libs/portal/directory の下にコンテンツとして表示されます。 ポータルディレクターを使用する前に、アプリケーション WAR ファイルをダウンロードする必要があります。
WAR ファイルのダウンロード downloading-the-war-file
-
WebDAV または CRXDE Lite を使用して、/libs/portal/director に移動します。
-
cq-portlet-webapp.war をダウンロードします。
ポートレットのインストール installing-the-portlet
ポートレットをインストールするには:
-
管理者権限でポータルにログインします。
-
Web ポータルのポートレット管理部分に移動します。
-
「インストール」をクリックし、ダウンロードしたAEMポートレットアプリケーション (cq-portlet-webapp.war) を参照して、そのポートレットに関するその他の重要な情報を入力します。
他のポートレット基本情報については、デフォルト値を使用するか、値を変更します。デフォルト値を使用する場合、ポートレットのアドレスは https://<wps-host>:<port>/wps/PA_CQ5_Portlet になります。ポートレットによって提供される OSGi 管理コンソールのアドレスは https://<wps-host>:<port>/wps/ PA_CQ5_Portlet/cqbridge/system/console になります(デフォルトのユーザー名とパスワードは admin/admin です)。
-
ポートレットアプリケーションが自動的に開始するようにするには、そのオプションまたはチェックボックスをオンにし、変更を保存します。 インストールが成功したことを示すメッセージが表示されます。
ポートレットの設定 configuring-the-portlet
ポートレットをインストールした後、基になるAEMインスタンス(オーサーおよびパブリッシュ)の URL を知るように設定する必要があります。 また、他のオプションも設定できます。
ポートレットを設定するには:
-
アプリサーバーのポータル管理ウィンドウで、ポートレット管理に移動します。すべてのポートレットが表示され、AEM Portal Directorポートレットを選択します。
-
必要に応じて、ポートレットを設定します。 例えば、オーサーインスタンスとパブリッシュインスタンスの URL と、開始パスの URL を変更する必要が生じる場合があります。 デフォルトの設定については、ポートレット環境設定を参照してください。
note note NOTE ポートレットを / 以外のコンテキストパスで実行している AEM オーサーインスタンスおよびパブリッシュインスタンスに接続するように設定する場合は、(Felix Web コンソールなどを使用して)これらの AEM インスタンスの HTML ライブラリマネージャー設定で強制 CQUrlInfo を有効にする必要があります。そうしなければ、編集が機能せず、環境設定ダイアログが表示されません。 -
アプリケーションサーバーで設定の変更を保存します。
-
ポートレットの OSGI 管理コンソールに移動します。デフォルトの場所は
https://<wps-host>:<port>/wps/PA_CQ5_Portlet/cqbridge/system/console/configMgr
です。デフォルトのユーザー名とパスワードは admin/admin です。 -
「Day Portal Director CQ Server Configuration」設定を選択し、次の値を編集します。
- 作成者のベース URL:AEMオーサーインスタンスのベース URL。
- ベース URL を公開:AEMパブリッシュインスタンスのベース URL。
- Author Is Used As Publish:オーサーインスタンスが(開発用に)パブリッシュインスタンスとして
使用されているかどうかを指定します。
-
「保存」をクリックします。これで、ポートレットをポータルページに追加してポータルを使用できるようになりました。
コンテンツの URL content-urls
AEMからコンテンツが要求されると、ポートレットは現在の表示モード(パブリッシュまたはオーサー)と現在のパスを使用して、完全な URL を組み立てます。 デフォルト値を使用した場合の最初の URL は http://localhost:4503/content/geometrixx/en.portlet.html
です。htmlSelector
の値が URL の拡張子の前に自動的に追加されます。
ポートレットがヘルプモードに切り替えられ、appendHelpViewModeAsSelector
が選択された場合は、同じように help
セレクターが付加されます(例:http://localhost:4503/content/geometrixx/en.portlet.html.help
)。ポートレットウィンドウが最大化され、appendMaxWindowStateAsSelector
が選択された場合は、同じようにそのセレクターが付加されます(例:http://localhost:4503/content/geometrixx/en.portlet.max.help
)。
セレクターはAEMで評価でき、異なるセレクターに対しては異なるテンプレートを使用できます。
AEMでのコンテンツ URL マップの使用 using-a-content-url-map-in-aem
通常、開始パスはAEM内のコンテンツを直接指します。 ポートレット環境設定ではなく AEM 内で開始パスを管理する場合は、開始パスが AEM 内のコンテンツマップを示すように設定できます(例:/var/portlets
)。この場合、AEMで実行するスクリプトは、ポートレットから送信された情報を使用して、開始 URL を決定できます。 正しい URL にリダイレクトする必要があります。
ポータルページへのポートレットの追加 adding-the-portlet-to-the-portal-page
ポートレットをポータルページに追加するには、次の手順を実行します。
-
アプリサーバーの管理ウィンドウにいることを確認し、ページを管理する場所に移動します。 ( 例えば、WebSphere 6.1 では、 ページを管理) をクリックします。
-
ポートレットの名前を選択し、既存のページを選択するか新しいページを作成します。
-
ページレイアウトを編集します。
-
ポートレットを選択し、コンテナに追加します。
-
変更を保存します。
ポートレットの使用 using-the-portlet
ポートレットに追加したページにアクセスするには、次の手順を実行します。
- ポートレットのパーソナライゼーションメニューで、ポータルでの設定と同じようにポートレットを設定します。
- 設定を開き(ポートレットには、ポートレットの設定で設定された公開開始 URL が表示されます)、必要に応じて編集を加え、保存します。