このドキュメントでは、次の点について説明します。
AEM portal アーキテクチャには、ポータルとポートレットの定義が含まれます。
ポータルとは、パーソナライゼーション、シングルサインオン、様々なソースからのコンテンツ統合を提供し、情報システムのプレゼンテーションレイヤーをホストする Web アプリケーションです。
AEM では JSR 286 準拠のポートレットを実行できます。ポートレットコンポーネントによって、ページにポートレットを埋め込むことができます。AEM コンテンツポートレットの管理を参照してください。
ポートレットとは、動的コンテンツを生成するコンテナ内にデプロイされる Web コンポーネントです。 ポートレットインターフェイスはパッケージ化され、ポートレットコンテナ内の.war ファイルとしてデプロイされます。 AEMをポータルとして実行している場合は、ポートレットの.war ファイルを使用してポートレットを実行する必要があります。
ポータルに表示されるAEMコンテンツを設定するには、 ポートレットでのAEMのインストール、設定、使用.
AEM Portal Directorは、AEM 6.4 以降で非推奨です。詳しくは、 廃止および削除された機能.
AEMコンテンツポートレットを使用すると、ポータルにAEMコンテンツを表示できます。 このポートレットは /crx-quickstart/opt/portal
にあり、様々な方法でカスタマイズできます。例えば、AEMがデフォルトの動作を上書きするために必要な認証情報を生成する独自の認証サービスをデプロイすることで、SSO/認証処理をカスタマイズできます。 プラグインは、定義された API を使用し、API に対してプラグインを作成することで、独自の機能を追加できます。 プラグインは、実行中のポートレットにデプロイできます。 適切に機能させるには、起動時に表示するコンテンツパスと共に、AEMオーサーインスタンスとパブリッシュインスタンスの設定が必要です。
一部の設定はポートレット環境設定によって変更できますが、その他の設定の変更は OSGi サービス設定で行います。設定の変更には、config ファイルまたは OSGi Web コンソールを使用します。
ポータルの環境設定は、ポータルサーバーでのデプロイ時に設定するか、 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>
ポートレットは、次の環境設定を使用して設定できます。
startPath | ポートレットの開始パスは次のとおりです。最初に表示されるコンテンツを定義します。 重要:ポートレットを / 以外のコンテキストパスで実行している AEM オーサーインスタンスおよびパブリッシュインスタンスに接続するように設定する場合は、(Felix Web コンソールなどを使用して)これらの AEM インスタンスの HTML ライブラリマネージャー設定で強制 CQUrlInfo を有効にする必要があります。そうしなければ、編集が機能せず、環境設定ダイアログが表示されません。 |
htmlSelector | 各 URL に追加されるセレクター。 デフォルトでは portlet であり、HTML ページへのすべてのリクエストが、.portlet.html で終わる URL を使用します。 これにより、AEM内でカスタムスクリプトを使用してポートレットのレンダリングを行うことができます。 |
addCssToPortalHeader | デフォルトでは、AEMのHTMLページに含まれる CSS ファイルがポートレットに含まれます。 このオプションを無効にすると、デフォルトの CSS ファイルは除外されます。 このオプションを有効にすると、ポータルの動作に応じて、CSS ファイルが html ページの先頭に追加されるか、html ページに埋め込まれます。 |
includeToolbar | デフォルトでは、管理機能用のツールバーがコンテンツポートレット内にレンダリングされます。 このオプションを無効にすると、ツールバーはレンダリングされません。 |
urlParameterNames | ポートレットに対して表示する新しいコンテンツ URL を含む可能性のある代替 URL パラメーター名のリスト。 リストは上から下へと処理され、値を含む最初のパラメーターが使用されます。 URL が見つからない場合は、デフォルトの URL パラメーターが使用されます。 指定された URL は、そのまま使用され、それ以上変更はありません。 この設定は、デプロイ済みのポートレットごとにおこなわれます。また、「Day Portal Director Portlet Bridge」の OSGi 設定で、一部の URL パラメーターをグローバルに設定することもできます。 |
preferenceDialog | AEMの環境設定ダイアログへのパス。空のままにした場合は、組み込みの環境設定ダイアログが使用されます。 デフォルトは/libs/portal/content/prefs.htmlです。 |
initialRedirect | デフォルトでは、ポートレットは最初の呼び出し時にポータルページ全体の JavaScript リダイレクトを実行します。 これは、最新のポータルサーバーのドラッグ&ドロップシナリオをサポートするためです。 実稼動環境では、このリダイレクトはほとんど必要とされないので、この環境設定をに設定してオフにすることができます。 false. |
ポータルサーバーがホスト localhost、ポート 8080 で実行され、AEM ポートレット Web アプリケーションが Web アプリケーションコンテキスト cqportlet にマウントされていると想定すると、Web コンソールの URL は http://localhost:8080/cqportlet/cqbridge/system/console
になります。デフォルトのユーザーとパスワードはです。 admin.
を開きます。 設定 「 」タブで「 」を選択します。 Portal Directory CQ Server Configuration. ここでオーサーインスタンスおよびパブリッシュインスタンスのベース URL を指定します。この手順については、ポートレットの設定で説明します。
OSGi Web コンソールは、開発(またはテスト)中に設定を変更する目的でのみ使用します。 実稼動システムのコンソールへのリクエストを必ずブロックしてください。
自動デプロイメントと設定プロビジョニングをサポートするために、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.
ポートレットは、デフォルト設定で、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 ヘッダーを送信できます。
通常の Dispatcher の無効化と同様に、レプリケーションエージェントを設定して、ポータルのAEMポートレットキャッシュをターゲットに設定できます。 レプリケーションエージェントを設定した後、通常のページアクティベーションのたびにポータルのキャッシュがフラッシュされます。
AEMポートレットを実行する複数のポータルノードを操作する場合は、この手順で説明するように、各ノードにエージェントを作成する必要があります。
ポータルのレプリケーションエージェントを設定するには:
オーサーインスタンスにログインします。
「Web サイト」タブで、「ツール」タブをクリックします。
レプリケーションエージェントの新規メニューで、「新しいページ」をクリックします。
「テンプレート」で、「レプリケーションエージェント」を選択し、エージェントの名前を入力します。「作成」をクリックします。
作成したレプリケーションエージェントをダブルクリックします。 まだ設定されていないので、無効と表示されます。
「編集」をクリックします。
内 設定 タブで、 有効 チェックボックスで、シリアル化の種類として「Dispatcher Flush 」を選択し、再試行のタイムアウト ( 例:60000) を入力します。
「トランスポート」タブをクリックします。
「URI 」フィールドに、ポートレットのフラッシュ URI(URL) を入力します。 URL は次の形式です。
https://<wps-host>:<port>/<wps-context>/<cq5-portlet-context>/cqbridge/cqpcache
「拡張」タブをクリックします。
「HTTP メソッド」フィールドに 「GET」 と入力します。
「HTTP ヘッダー」フィールドで + をクリックし、新しいエントリおよびタイプとして Path: {path} を追加します。
必要に応じて、「プロキシ」タブをクリックし、エージェントのプロキシ情報を入力します。
「OK」をクリックして、変更を保存します。
接続をテストするには、「接続をテスト」リンクをクリックします。レプリケーションテストが成功したかどうかを示すログメッセージが表示されます。 次に例を示します。
レプリケーションエージェント用に設定されたのと同じ 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
をフラッシュします。
ポータルは、駆動認証メカニズムです。 技術ユーザー、ポータルユーザー、グループなどを使用してAEMにログインできます。 ポートレットにはポータル内のユーザーのパスワードへのアクセス権がないので、ポートレットがユーザーに正常にログインするためのすべての資格情報を知らない場合は、SSO ソリューションを使用する必要があります。 この場合、AEMポートレットは必要な情報をすべてAEMに転送し、次にこの情報を基になるAEMリポジトリに転送します。 この動作はプラグ可能で、カスタマイズ可能です。
この節では、ポートレットが基になるAEM WCM インスタンスとの通信で使用できる認証モードについて説明します。
デフォルトでは、AEMのパブリッシュインスタンスにユーザー情報は送信されません。コンテンツは、常に匿名ユーザーとして表示されます。 ユーザー固有の情報をAEMから配信する場合、または公開用のユーザー認証が必要な場合は、これをオンにする必要があります。
ポートレットがAEM WCM インスタンスで使用する認証設定オプションは、Web コンソール(OSGi 設定)で使用できます。
AEMを操作する場合、OSGi サービス(コンソールまたはリポジトリノード)の設定を管理する方法がいくつかあります。
詳しくは、 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 フレームワーク内のポートレットによって提供されます。
サービス名 | 説明 |
---|---|
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 コンソールの管理者資格情報を変更できます。
デフォルトモードでは、AEM WCM オーサーインスタンスのポートレットによって発行されたすべてのリクエストは、現在のポータルユーザーに関係なく、同じテクニカルユーザーを使用して認証されます。 テクニカルユーザーモードは、デフォルトで有効になっています。 このモードは、OSGi 管理コンソールのそれぞれの設定画面で有効または無効にします。
指定されたテクニカルユーザーは AEM WCM オーサーインスタンスに存在する必要があり、公開時の認証が有効な場合は、パブリッシュインスタンスにも存在する必要があります。オーサリング作業に十分なユーザーアクセス権限を与えてください。
ポートレットでは、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) スキームを使用してAEM WCM を認証できます。 このモードでは、現在ポータルにログインしているユーザーは、SSO Cookie の形式でAEM WCM に転送されます。 SSO モードを使用する場合、AEMポートレットにアクセスできるすべてのポータルユーザーは、基になるAEM WCM インスタンスに対して認識される必要があります。最も一般的には、AEM WCM が LDAP に接続されている形で、事前にユーザーを手動で作成しておく必要があります。 また、ポートレット内で SSO を有効にする前に、基盤の AEM WCM オーサーインスタンス(および公開時の認証が有効な場合のパブリッシュインスタンス)を、SSO ベースのリクエストを受け入れるように設定しておく必要もあります。
ポートレットで SSO 認証モードを使用するように設定するには、次の手順を実行します(次の節で詳しく説明)。
AEM WCM で SSO を有効にする前に、AEM WCM から提供される信頼済みの資格情報を受け入れるように基になるリポジトリを設定する必要があります。 これをおこなうには、AEM repository.xml を設定します。
AEM WCM がインストールされているファイルシステムで、次のファイルを開きます。
//crx-quickstart/repository/repository.xml
この XML ファイル内で LoginModule のエントリを探し、その設定に対して trust_credentials_attribute を追加します。
<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 を有効にするには、AEM WCM の Apache Felix Web Management Console(OSGi) で関連する設定エントリにアクセスします。
URI の https://<AEM-host>:<port>/system/console を使用してコンソールにアクセスします。
「構成」メニューで、「SSO 認証ハンドラ」を選択します。 この例では、SSO ハンドラーはAEMポートレットが提供する Cookie に基づいて、すべてのパスに対する SSO リクエストを受け付けます。 設定は異なる場合があります。
パス | / | すべてのリクエストに対して SSO ハンドラーを有効にします |
---|---|---|
cookie 名 | cqpsso | ポートレットの OSGi コンソールで設定した、ポートレットによって提供される Cookie の名前。 |
クリック 保存 SSO を有効にします。 現在、SSO はプライマリ認証スキームです。
AEM WCM が受け取るリクエストごとに、まず SSO ベースの認証が試行されます。 失敗した場合は、通常の基本認証スキームへのフォールバックが実行されます。 そのため、SSO を使用しないAEM WCM への通常の接続は引き続き可能です。
基盤の 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 -> [ ]
AEMコンテンツポートレットのデフォルトのインライン編集機能を使用せず、ポータル外のポートレットのオーサリングと管理の一部をAEMオーサーインスタンスで直接使用する場合は、PIN 認証を有効にする必要があります。 また、管理ボタンの設定を変更する必要があります。
Web サイト管理ページを開く、またはポートレットからページを編集する場合、AEMコンテンツポートレットでは新しいピン認証が使用されます。 デフォルトでは、ピン認証は無効になっているので、AEMで次の設定変更を行う必要があります。
repository.xml ファイルに信頼できる情報を追加することで、AEMで信頼できる認証を有効にします。
<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 ルートパス 単一の値のみを含むためのパラメーター /.
ポートレットの一部の機能は、特権によって保護されます。 現在のユーザーがこの関数にアクセスするには、この権限が必要です。 次の権限が事前に定義されています。
権限を管理する最善の方法は、ポータルの役割を使用し、これらの権限に役割を割り当てることです。 これは、OSGi 設定を通じておこなうことができます。 「Day Portal Director Privilege Manager」は、権限ごとに一連の役割を設定できます。 ユーザーがいずれかの役割を持っている場合、ユーザーは対応する権限を持ちます。
また、ポートレットインスタンスごとのベースに基づいて、このロールのアクセス権を定義することもできます。 ポートレットの環境設定ダイアログには、上記の権限ごとに入力フィールドが含まれます。 権限ごとに、ポートレットの役割のコンマ区切りリストを設定できます。 値が設定されている場合、これは「Day Portal Director Privilege Manager」サービスのグローバル設定を上書きし、役割が結合されないので、このグローバル設定から同じ役割を追加する必要が生じる場合があります。 値を指定しない場合は、グローバル設定が使用されます。
指定されたAEMポートレットアプリケーションは、AEMと同様に、Web アプリケーション内で OSGi コンテナを開始します。 このアーキテクチャを使用すると、OSGi の次の利点をすべて活用できます。
ツールバーとそのボタンは設定可能で、カスタマイズできます。 ツールバーに独自のボタンを追加したり、どのモードで表示されるボタンを定義したりできます。 各ボタンは、OSGi 設定を通じて設定できる OSGi サービスです。
OSGi Web コンソールには、 設定 タブをクリックします。 ボタンごとに、このボタンを表示するモードを定義できます。 これにより、例えばすべてのモードを削除して、ボタンを無効にすることができます。
デフォルトでは、AEMコンテンツポートレットはインライン編集機能を使用します。 ただし、編集のためにAEMオーサーインスタンスに切り替える場合は、 SiteAdmin ボタン そして コンテンツファインダーボタンを無効にします。 編集ボタン. この場合、AEM で PIN 認証を適切に設定してください。
ポートレットの Felix Web コンソールを介してバンドルをインストールすると、ポートレットのツールバーレイアウトをカスタマイズできます。このコンソールには、事前に定義された場所にカスタムの CSS/HTMLが含まれています。
次に、バンドル構造の例を示します。
$ 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 ファイルを手動で作成できます。
ポートレットのツールバーには、基本的に 2 つのビュー状態があります。 各ビューおよび関連するボタンは、それぞれのボタンファイルを使用してHTMLできます。
公開ビューには、ツールバーを管理ビューに切り替えるボタンが 1 つだけあります。 公開ビューは、 前のバンドル. HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。
プレースホルダー文字列 | 説明 |
---|---|
プレースホルダーが「管理」ボタンに置き換えられ、ポートレットの状態が管理状態に切り替わります。 |
管理ビューには、次の 4 つのボタンがあります。[ 編集 ]、[Web サイト ] タブ、[ 更新 ]、[ 戻る ] の順に選択します。 管理ビューは、 前のバンドル. HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。
プレースホルダー文字列 | 説明 |
---|---|
プレースホルダーは「編集」ボタンに置き換えられ、AEM編集モードで現在のページを含む新しいウィンドウが開きます。 | |
AEM WCM の「Web サイト」タブを開くボタンに置き換えられるプレースホルダー。 | |
現在のビューを更新します。 | |
ポートレットをパブリッシュビューに切り替えます。 |
ボタンは、どの表示に対しても、button.html で定義されているのと同じ共通HTMLを使用します。
HTMLでは、次のプレースホルダーを使用できます。プレースホルダーは、レンダリング時にポートレットに置き換えられ、それぞれのコンテンツに置き換えられます。
プレースホルダー文字列 | 説明 |
---|---|
ボタンの名前(例:author、back、refresh など)。 | |
ボタンの CSS ID。 | |
ボタンのターゲットの URL。 | |
ボタンのラベル。 | |
JavaScript onclick 関数({url} を含む)を使用します。 |
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>
カスタムレイアウトをインストールするには、ポートレットの OSGI Web コンソールにアクセスします バンドル 」セクションに移動して、バンドルをアップロードします。
インストール用のパッケージをアップロードまたは作成する必要がある場合は、詳しい説明について AEM ドキュメントのパッケージマネージャーを参照してください。
すべてのリンクは、ポータルコンテキスト内で動作するように書き換えられます。 デフォルトでは、レンダリングパラメータを持つリンクが使用されます。 Portal DirectorHTMLの書き換えは、代わりにアクションリンクを使用するように設定できます。
また、コンテンツパスを表示するために問い合わせられる追加のリクエストパラメーターを定義することもできます。これは、例えば外部から特定のコンテンツへのリンクがある場合に便利です。
さらに、Portal Director HTML Rewriter に、リンクの書き換え除外を定義するための正規表現のリストを設定することができます。例えば、外部システムへの相対リンクがある場合、それらのリンクをこの除外リストに追加する必要があります。
AEMコンテンツポートレットには、AEMのコンテンツが正しい言語で表示されるように、ローカライゼーション機能が組み込まれています。
これは、次の 2 つの手順で実行します。
/content/geometrixx/en/company.html
/)を取得し、設定に従って、en を実際のユーザーのロケールに書き換えます。Portal Director Locale Handler には、ロケール情報をチェックするためのパスを設定できます。通常、この設定には /content
以下のすべてと、パス内のロケール情報の位置が含まれます。Portal Director Locale Handler はデフォルトで、AEM 内の多言語サイトの推奨構造に従います。
パス内のロケール情報を処理するための厳格なルールがないサイトの場合は、ロケールハンドラーを独自の実装に置き換えることが可能です。
オプションの OSGi サービスを実装して、ポートレットの様々な部分をカスタマイズできます。 各サービスは Java インターフェイスに対応しています。 このインターフェイスを実装して、バンドルによってポートレットにデプロイすることができます。
RequestTracker | ポートレットによってコンテンツが表示されるたびに、リクエストトラッカーに通知が届きます。 これにより、ポートレットの呼び出しを追跡できます。 |
InvocationContextListener | ポートレットへの各リクエストの開始時と終了時に呼び出されるリスナー。 このリスナーを使用して、現在のリクエストの情報を変更または追加できます。 |
ErrorHandler | レンダリングフェーズ中のエラーに対するカスタムエラーハンドラ。 |
HttpProcessor | このサービスを使用して、AEMに対する各 HTTP 呼び出しに情報を追加できます。 |
PortletAction | ポートレットに独自のアクションを追加します。このアクションは、ポートレットアクションリンクを介して呼び出すことができます。 |
PortletDecoratorService | このサービスを使用して、ポートレットのコンテンツを修飾できます。 |
ResourceProvider | 独自のリソースプロバイダーを追加して、ポートレットリソースリンクを介して一部のリソースをクライアントに配信します。 |
TextMapper | 後処理のHTML、CSS および JavaScript ファイルを許可します。 |
ToolbarButton | ツールバーに独自のボタンを追加します。 |
UrlMapper | カスタム URL マッピングまたは書き換えを適用するサービスを追加します。 |
UserInfoProvider | ユーザーに関する独自の情報を追加します。 このサービスを使用して、ポータルからポートレットに情報を取得できます。 |
次のサービスは、(対応する Java インターフェイスと共に)コンテンツポートレットにデフォルトの実装を持っています。 カスタマイズするには、新しいサービス実装を含むバンドルをポートレットアプリケーションにデプロイする必要があります。
このようなサービスを実装する場合は、必ず service.ranking プロパティを正の値に設定します。 デフォルトの実装ではランク 0 が使用され、ポートレットは最もランキングの高いサービスを使用します。
名前 | 説明 | デフォルトの動作 |
---|---|---|
認証子 | 認証情報をAEMに提供します | オーサーとパブリッシュの両方に設定可能なテクニカルユーザーを使用します。 または、SSO を使用できます。 |
HTMLRewriter | リンクや画像などを書き換えます。 | AEMリンクをポータルリンクに書き換えます。UrlMapper と TextMapper を使用して拡張できます。 |
HttpClientService | すべての HTTP 接続を処理します | 標準的な実装 |
LocaleHandler | ロケール情報を処理します | ロケールに従ってコンテンツへのリンクを書き換えます。 |
LocaleDetector | ユーザーのロケールを検出します。 | ポータルが提供するロケールを使用します。 |
PrivilegeManager | ユーザー権限を確認します | ユーザーがコンテンツの編集を許可されている場合は、オーサーインスタンスへのアクセスを確認します |
ToolbarRenderer | ツールバーをレンダリング | ツールバー機能を追加します |
ポートレット API(JSR-286) は、ポートレットイベントを指定します。 AEMコンテンツポートレットには統合ブリッジがあり、AEMポートレット用のポートレットイベントが OSGi イベントとして配信されるので、ポートレットイベントの処理がプラグ可能です。
特定のイベントを処理する場合は、デプロイメント記述子でイベントを受け取るものとして宣言し(またはポータルサーバーを介して設定します)、EventHandler インターフェイスを宣言する OSGi サービスを実装します( OSGi EventAdmin の仕様を参照)。
ポートレットイベントが発生するたびに、特定の OSGi イベントが送信され、ハンドラーを呼び出します。 ハンドラーは、すべてのコンテキスト情報を取得し、それに応じてポートレットのステータスを更新したり、新しいイベントを送信したりできます。 基本的に、handle メソッド内ではポートレットイベントフェーズのすべての機能を使用できます。
ポートレットコンポーネントを使用して、ポートレットウィンドウをAEMページに追加します。 アプリケーションサーバーにインストールする共有ライブラリを使用すると、ポートレットコンポーネントはデプロイ済みのポートレットアプリケーションを検出できます。
AEMをポータルとして使用するには、次のタスクを実行します。
ポートレットコンポーネントは、AEMが Web アプリケーションとしてデプロイされている場合にのみ使用できます。 (Installing AEM With an Application Server を参照してください。.)
AEM Quickstart JAR ファイルには、ポートレットコンポーネントファイルが含まれています。 ファイル(cq-portlet-components.zip)を取得するには、Quickstart を実行するか、その内容を抽出します。
Quickstart JAR ファイルを実行するかその内容を抽出して、次の場所にある cq-portlet-components.zip ファイルを特定します。
アプリケーションサーバーにデプロイされている 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 ファイルをアプリケーションサーバーの共有ライブラリフォルダーに移動し、デプロイされたポートレットアプリケーションでクラスを使用できるようにします。
作成者が使用できるように、ポートレットコンポーネントを段落システムに追加します。
サイドキックで、定規アイコンをクリックしてデザインモードに切り替えます。
最初の段落の上にあるDesign of par
ヘッダーの横の「編集」をクリックします。
「一般」コンポーネントカテゴリで、ポートレットコンポーネントの横にあるチェックボックスをオンにして「OK」をクリックします。
ポートレットをアプリケーションサーバーの Web コンテナにデプロイして、ポータルコンポーネントで使用できるようにします。 ポートレットアプリケーションをデプロイする前に、このアプリケーションが AEM ポータルコンテナサーブレットを読み込むように設定する必要があります。この設定によって、ポートレットコンポーネントがポートレットにアクセスできるようになります。
ポートレットアプリケーションの WAR ファイルの内容を抽出します。
ヒント: jar xf nameofapp.war コマンドによってファイルを抽出します。
web.xml ファイルをテキストエディターで開きます。
次のサーブレット設定を web-app 要素内に追加します。
<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 ファイルに追加します。
ポートレットアプリケーションをアプリケーションサーバーにデプロイします。 詳しくは、使用しているアプリケーションサーバーのドキュメントを参照してください。
ポータルコンポーネントを使用して、ポートレットウィンドウを Web ページに追加します。 コンポーネントのプロパティを使用して、表示するポートレットを指定します。
Web ページで、 ポートレット サイドキックの「一般」グループからページにコンポーネントを追加します。
コンポーネントをページにドラッグした後、ページを再読み込みして、正しく機能することを確認します。
コンポーネントをダブルクリックして、ポートレットのプロパティを開きます。
内 ポートレットエンティティ ドロップダウンメニューから、リストからポートレットを選択します。
を選択またはクリアします。 タイトルバーを非表示 ポートレットのタイトルバーを表示するかどうかに応じて、「 」チェックボックスをオンにします。
内 ポートレットウィンドウ 必要に応じて、一意のポートレットウィンドウ ID を入力します。
同じページで同じポートレットを複数回使用する場合は、各ポートレットに異なるウィンドウ ID を付けます。
「OK」をクリックします。ポートレットがAEMページに表示されます。
AEM WCM が提供するコンテンツにアクセスするには、ポータルサーバーがAEM Portal Directorポートレットに適合している必要があります。 これをおこなうには、この節で説明する手順に従って、ポートレットをインストール、設定、ポータルページに追加します。
デフォルトでは、ポートレットは localhost:4503 のパブリッシュインスタンスに接続し、localhost:4502 のオーサーインスタンスに接続します。 これらの値は、ポートレットのデプロイ時に変更できます。 ポータルディレクタは、リポジトリ内の/libs/portal/directory の下にコンテンツとして表示されます。 ポータルディレクターを使用する前に、アプリケーション WAR ファイルをダウンロードする必要があります。
WebDAV または CRXDE Lite を使用して、/libs/portal/director に移動します。
cq-portlet-webapp.war をダウンロードします。
これらの手順では、Websphere ポータルを例として使用しますが、できるだけ一般的なものです。他の Web ポータルでは手順が異なることに注意してください。 手順は基本的にすべての Web ポータルで同じですが、特定の Web ポータルの手順を再利用する必要があります。
ポートレットをインストールするには:
管理者権限でポータルにログインします。
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 です)。
ポートレットアプリケーションが自動的に開始するようにするには、そのオプションまたはチェックボックスをオンにし、変更を保存します。 インストールが成功したことを示すメッセージが表示されます。
ポートレットをインストールした後、基になるAEMインスタンス(オーサーおよびパブリッシュ)の URL を知るように設定する必要があります。 また、他のオプションも設定できます。
ポートレットを設定するには:
アプリサーバーのポータル管理ウィンドウで、ポートレット管理に移動します。すべてのポートレットが表示され、AEM Portal Directorポートレットを選択します。
必要に応じて、ポートレットを設定します。 例えば、オーサーインスタンスとパブリッシュインスタンスの URL と、開始パスの URL を変更する必要が生じる場合があります。 デフォルトの設定については、ポートレット環境設定を参照してください。
ポートレットを / 以外のコンテキストパスで実行している 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」設定を選択し、次の値を編集します。
「保存」をクリックします。これで、ポートレットをポータルページに追加してポータルを使用できるようになりました。
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内のコンテンツを直接指します。 ポートレット環境設定ではなく AEM 内で開始パスを管理する場合は、開始パスが AEM 内のコンテンツマップを示すように設定できます(例:/var/portlets
)。この場合、AEMで実行するスクリプトは、ポートレットから送信された情報を使用して、開始 URL を決定できます。 正しい URL にリダイレクトする必要があります。
ポートレットをポータルページに追加するには、次の手順を実行します。
アプリサーバーの管理ウィンドウにいることを確認し、ページを管理する場所に移動します。 ( 例えば、WebSphere 6.1 では、 ページを管理) をクリックします。
ポートレットの名前を選択し、既存のページを選択するか新しいページを作成します。
ページレイアウトを編集します。
ポートレットを選択し、コンテナに追加します。
変更を保存します。
ポートレットに追加したページにアクセスするには、次の手順を実行します。