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
動作確認
以下が確認できます。
- https://inter-net.accel-mart.com/imart/home にアクセス
BaseURL が https://inter-net.accel-mart.com/imart/ となっていること - https://vpn.accel-mart.com/ にアクセス
BaseURL が https://vpn.accel-mart.com/imart/ となっていること