製品標準の設定では、テナント一つにつき、一つの 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 として保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
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 として保存します。
1 |
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/ となっていること