Accel-Mart Plus on AWSにて複数のベースURLを利用する方法

製品標準の設定では、テナント一つにつき、一つの BaseURL のみが設定可能ですが、BaseUrlProvider インタフェースを実装することで、複数の BaseURL を持たせることができます。
BaseUrlProvider は intra-mart Accel Platform 2014 Summer (Honoka) から導入されたインタフェースです。
したがって、2014 Summer (Honoka) 以降で使用可能です。


ここではAccel-Mart Plus on AWSにおいて、インターネット接続およびプライベート接続を実施する構成(下記図例)の際に、それぞれへBaseURLを持たせる方法を記載します。
※ ALB = Application Load Balancer
※ 標準構成ではALBは1つです。下図構成にするためには別途ALBを追加で契約する必要があります。詳しくは弊社営業まで問い合わせください。

その他 ベースURL に関する注意事項は iAPへアクセスするURLが複数ある場合のベースURLの設定方法 の 注意事項 をご覧ください。

BaseUrlProvider の実装

Accel-Mart Plus on AWS において、クライアントがアクセスしたURLによって異なるベースURLを返却する BaseUrlProvide を実装します。
最終的にはimmとしてモジュール化し、お客様のjugglingプロジェクトへ配置後にデプロイをお願いします。

1. 以下の内容のファイルを WEB-INF/classes/com/example/SampleBaseUrlProvider.java として保存します。

package com.example;
import javax.servlet.http.HttpServletRequest;
import jp.co.intra_mart.common.annotation.Priority;
import jp.co.intra_mart.foundation.platform.BaseUrlProvider;

// Priority を設定することで、実装クラスの呼び出し順を制御できます。ここでは、100 とします。
@Priority(value = 100)
public class SampleBaseUrlProvider implements BaseUrlProvider {
    @Override
    public String getBaseUrl(final HttpServletRequest request) {
        if (request == null) {
            return null;
        }
        String serverName = request.getServerName();

        // インターネット経由のURLでアクセスした場合
        if ("inter-net.accel-mart.com".equals(serverName)) {
            return "https://inter-net.accel-mart.com/imart";
        }
        // プライベート接続経由のURLでアクセスした場合
        else if ("vpn.accel-mart.com".equals(serverName)) {
            return "https://vpn.accel-mart.com/imart";
        }
        else {
            // null を返却することで、他の BaseUrlProvider に処理を委ねることができます。
            return null;
            }
        }
}

2. 以下の内容のファイルを WEB-INF/classes/META-INF/services/jp.co.intra_mart.foundation.platform.BaseUrlProvider として保存します。

com.example.SampleBaseUrlProvider

動作確認

以下が確認できます。

  1. https://inter-net.accel-mart.com/imart/home にアクセス
    BaseURL が https://inter-net.accel-mart.com/imart/ となっていること
  2. https://vpn.accel-mart.com/ にアクセス
    BaseURL が https://vpn.accel-mart.com/imart/ となっていること