問題、質問

設定後:ディスパッチャーモジュールを含む IHS Web サーバーが設定され CQ インスタンスが実行されている Websphere アプリケーションサーバーレンダリングファームに変わります。クラスまたは CQ の JSP スクリプトは間違ったリダイレクトを引き起こす response.sendRedirect() メソッドを呼び出します。内部サーバー名と外部からは到達できない Websphere アプリケーションサーバーのポートは実際のリダイレクトを行うのに使われる場所の応答ヘッダーで公開されます。

この問題の根本原因は、WebSphere 自体です。HttpServletResponse#sendRedirect() メソッドの IBM の実装が、Websphere's の IHS プラグインによって生成されるデフォルトごとに、カスタムリクエストヘッダーの影響を直接受けるためです。これは、IBM ベンダーの lock-in 問題と見なされます。

解決策、回答

IHS Web サーバーの mod_headers を使用すればリクエストヘッダーのディレクティブを使用してこのようなヘッダーを追加することによりアプリケーションサーバーに Websphere 固有のヘッダーを渡すことができます。それに加え、これらのカスタムヘッダーは Dispatcher 設定で明示的に許可されている必要があります。それ以外の場合はこれらのカスタムヘッダーは無視されます。

例:

  • パブリックドメイン:http://www.mydomain.com

IHS 設定

IHS Web サーバーの httpd.conf 設定ファイルを編集し、次のようにします。

  • モジュールの mod_headers が存在し、ロードされていることを確認してください。
  • RequestHeader ディレクティブを使用して、WAS 固有のヘッダーを追加します。

例(httpd.conf からの抜粋):

...
LoadModule headers_module modules/mod_headers.so
...
<Directory />
    <IfModule disp_apache2.c>
        # set custom Websphere headers
        RequestHeader set $WSSN www.mydomain.com
        RequestHeader set $WSSP 80
		
        SetHandler dispatcher-handler
    </IfModule>
    Options FollowSymLinks
</Directory>

Dispatcher 設定

ディスパッチャーのレベルでは、前述の設定されたリクエストヘッダーのリストをクライアントヘッダーのリストに追加する必要があります。クライアントヘッダーのリストを、ディスパッチャーが定義されたレンダリングファーム、この場合は Websphere アプリケーションサーバーに転送します。

次の手順を実行します。

  • dispatcher.any 設定ファイルを編集します。
  • セクション /clientheaders を見つけ、付属する追加のヘッダーを追加します。
  • IHS を再開します。

(dispatcher.any からの抜粋):

...
  /clientheaders
    {
    ...
    "$WSSN"
    "$WSSP"
    }
...

WebSphere の設定

response.sendRedirect() が WebSphere で呼び出されるとき、$WSSP Websphere ヘッダーはポートを指定し、$WSSN は使用するホスト名を定義します。さらに、$WSSP ヘッダーで提供されたポートは Websphere において、仮想ホストをマップするのにも使用されます。

Websphere 管理コンソールに接続し、次の操作をおこないます。

  • 環境から仮想ホストへと参照します
  • CQ で使用する仮想ホストの設定を選択します
  • ホストのエイリアスをクリックします。
  • ポート 80を追加します
  • 必要に応じて Websphere を再起動します



注意:設定によっては、より多くの Websphere 固有のヘッダーを追加することが必要になる場合があります。WebSphere 固有のヘッダーとそれらの意味については、このドキュメントを参照してください。

ダウンロード

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー