設定(service-config)リファレンス

iPLAss全体に対する設定はXMLベースの設定ファイルにて行います。 設定ファイルはservice-configファイルと呼称します。 本ドキュメントでは、service-configファイルの形式の説明、および設定可能な項目について説明します。

1. service-configファイルについて

service-configファイルはxml形式で記述されます。 また、複数に分割定義されたファイルをマージすることが可能です。

service-configファイルの記述例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE serviceDefinition>
<serviceDefinition>
    <inherits>/mtp-core-service-config-mysql.xml</inherits>
    <inherits>/mtp-web-service-config.xml</inherits>

    <service>
        <interface>org.iplass.mtp.impl.web.WebFrontendService</interface>

        <property name="staticContentPath" value="/iplass-skeleton" />
    </service>

    <service>
        <interface>org.iplass.mtp.impl.lob.LobStoreService</interface>

        <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="/lobs" />
            <property name="overwriteFile" value="false" />
        </property>

        <property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore" />
    </service>

    :
    :

</serviceDefinition>

service-configファイルではService単位で設定を行っていきます。

1.1. Serviceとは

ServiceとはiPLAss上で規定されるコンポーネントです。 実体は org.iplass.mtp.spi.Service を実装するjavaクラスです。 service-configファイルからこの各種Serviceの属性を設定することが可能です。

1.2. service-configファイルの指定方法

iPLAss起動時に利用されるservice-configファイルは次のいずれかの形で読み込まれます。

クラスパス、ファイルパスから自動解決

起動時に明示的にservice-configファイルを指定しない場合は、クラスパス直下、もしくはファイルシステムのルートパスからmtp-service-config.xmlを取得します。 Webアプリケーションとしてデプロイする場合、 /WEB-INF/classes/ 直下などにmtp-service-config.xmlを配置可能です。

明示的に指定する場合

ファイルを明示的に指定する場合には以下の3つの方法があります。

  • VM引数
    VM引数を使用する場合はキー名を"mtp.config"にてservice-configファイルのパスを指定します。

    -Dmtp.config=/app-service-config.xml
  • web.xml
    param-name要素に"mtp.config"を指定し、param-value要素に読み込むservice-configファイルを指定します。

    <context-param>
        <param-name>mtp.config</param-name>
        <param-value>/app-service-config.xml</param-value>
    </context-param>
  • コード上から
    EntryPointBuilderクラスのconfig(String)メソッドにてservice-configファイルを指定します。

    import org.iplass.mtp.runtime.EntryPoint;
    
    :
    :
    
    //initialize EntryPoint on application startup
    EntryPoint entryPoint = EntryPoint.builder()
            .config("/app-service-config.xml").build();

指定されたファイル名(パス)を元に、クラスパス上のリソースパスとして、またファイルシステム上のファイルパスとして、ファイルを検索します。

1.3. service-configファイルの分割

service-configファイルは、定義の一部を別ファイルに分割して管理することが可能です。 例えば、環境依存部分の設定を別ファイルとして切り出し管理することが可能です。 また、iPLAssが定義するデフォルト値が設定されたservice-configファイルが提供されているので、それをベースとし、デフォルトから変更する箇所のみをオーバーライトすることも出来ます。 デフォルト値が設定されたservice-configファイルはiPLAssの各モジュールのjar内に格納されています。

以下にデフォルト値を提供するservice-configファイルの一覧を示します。

ファイルパス 説明

/mtp-core-service-config.xml

iPLAssのcoreサービスに関するデフォルト設定です。

/mtp-core-service-config-mysql.xml

mysql8以上を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config.xmlの内容を継承しています。

/mtp-core-service-config-mysql-5.7.xml

mysql5.7を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config.xmlの内容を継承しています。

/mtp-core-service-config-mysql_pseudo_128.xml

mysql8を利用し、かつ疑似パーティション機能(128パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-mysql.xmlの内容を継承しています。

/mtp-core-service-config-aurora_mysql.xml

Amazon Aurora(mysql5.7)を利用し、かつ疑似パーティション機能(128パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-mysql-5.7.xmlの内容を継承しています。

/mtp-core-service-config-oracle.xml

Oracleを利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config.xmlの内容を継承しています。

/mtp-core-service-config-oracle_pseudo.xml

Oracleを利用し、かつ疑似パーティション機能(32パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-oracle.xmlの内容を継承しています。

/mtp-core-service-config-oracle_pseudo_128.xml

Oracleを利用し、かつ疑似パーティション機能(128パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-oracle.xmlの内容を継承しています。

/mtp-core-service-config-postgre.xml

PostgreSQLを利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config.xmlの内容を継承しています。

/mtp-core-service-config-postgre_pseudo.xml

PostgreSQLを利用し、かつ疑似パーティション機能(32パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-postgre.xmlの内容を継承しています。

/mtp-core-service-config-postgre_pseudo_128.xml

PostgreSQLを利用し、かつ疑似パーティション機能(128パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-postgre.xmlの内容を継承しています。

/mtp-core-service-config-sqlserver.xml

SQLServerを利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config.xmlの内容を継承しています。

/mtp-core-service-config-sqlserver_pseudo.xml

SQLServerを利用し、かつ疑似パーティション機能(32パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-sqlserver.xmlの内容を継承しています。

/mtp-core-service-config-sqlserver_pseudo_128.xml

SQLServerを利用し、かつ疑似パーティション機能(128パーティション)を利用する場合のiPLAssのcoreサービスに関するデフォルト設定です。/mtp-core-service-config-sqlserver.xmlの内容を継承しています。

/mtp-web-service-config.xml

iPLAssのwebモジュールに関するデフォルト設定です。

/mtp-tools-service-config.xml

AdminConsole、Toolsバッチから利用されるtoolsモジュールに関するデフォルト設定です。

/gem-service-config.xml

gemモジュールに関する設定です。

/mdc-service-config.xml

mdcモジュールに関するデフォルト設定です。Enterprise Editionで利用可能です。

/adminconsole-service-config.xml

AdminConsoleに関するデフォルト設定です。

/infinispan-service-config.xml

infinispanに関するデフォルト設定です。

/redis-service-config.xml

redisに関するデフォルト設定です。

/appconsole-service-config.xml

appConsoleに関するデフォルト設定です。Enterprise Editionで利用可能です。

/aws-service-config.xml

awsに関するデフォルト設定です。Enterprise Editionで利用可能です。

/wam-service-config.xml

wamモジュールに関するデフォルト設定です。Enterprise Editionで利用可能です。

/micrometer-service-config.xml

micrometerモジュールに関するデフォルト設定です。Enterprise Editionで利用可能です。

分割されたファイルは、実行時に1つのservice-configファイルとしてマージされます。 同一Serviceの定義が複数のファイルに存在した場合のマージのされ方は、設定ファイルで指定が可能です。

mysql利用、かつgemとAdminConsoleを利用する場合のファイルの記述例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE serviceDefinition>
<serviceDefinition>
    <inherits>/mtp-core-service-config-mysql.xml</inherits>
    <inherits>/mtp-web-service-config.xml</inherits>
    <inherits>/mtp-tools-service-config.xml</inherits>
    <inherits>/gem-service-config.xml</inherits>
    <inherits>/adminconsole-service-config.xml</inherits>

    <!-- 以下、デフォルト値をオーバーライトする設定を記述 -->
    <service>
        <interface>org.iplass.mtp.impl.lob.LobStoreService</interface>

        <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="/lobs" />
            <property name="overwriteFile" value="false" />
        </property>

        <property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore" />
    </service>

    :
    :

</serviceDefinition>

詳しくはservice-configファイルの構成の説明を参照ください。

1.4. service-configファイルの構成

serviceDefinition要素

service-configのルート要素です。

  • 属性

    属性名 説明

    preprocess

    boolean

    このservice-configファイルの プリプロセス 処理を実施する場合trueを指定します。

  • 子要素

    要素名 説明

    inherits

    String、複数指定可

    この設定ファイルが継承元とする設定ファイルを指定します。 継承元のService定義が読み込まれた後、本体のservice-configファイルに記述された定義が適用されます。

    includes

    String、複数指定可

    この設定ファイルに取り込む設定ファイルを設定します。 本体のservice-configファイルの設定をincludeした設定ファイルで上書きします。

    service

    service、複数指定可

    サービスの定義を設定します。

service要素

個々のサービスの定義を行う要素です。

  • 属性

    属性名 説明

    name

    String

    サービス名を設定します。未指定の場合は子要素interface(インタフェース名)がサービス名となります。

    ifnone

    boolean

    このサービスが継承元または取り込み先に存在しない場合にのみ定義します。デフォルト値はfalseです。

    inherit

    boolean

    このサービスが継承元または取り込み先に存在する場合は元のサービス定義を継承します。デフォルト値はtrueです。
    サービス名、interface、depend、propertyが継承されます。

    final

    boolean

    このサービス定義の上書きを禁止します。デフォルト値はfalseです。

  • 子要素

    要素名 説明

    interface

    String、必須

    インタフェース名を設定します。インタフェース名は完全修飾名を設定します。

    class

    String

    クラス名を設定します。クラス名は完全修飾名を設定してください。未指定の場合はinterfaceがclassとして扱われます。

    depend

    String、複数指定可

    依存サービスを設定します。サービス名を指定します。

    property

    property、複数指定可

    サービスのプロパティを設定します。

    bean

    bean、複数指定可

    サービス内で利用するBeanのインスタンスを設定します。定義されたBeanのインスタンスはproperty要素から参照可能です。複数のプロパティ要素から同一のBeanのインスタンスを参照したい場合、bean要素を利用します。

property要素

サービスのプロパティを定義する要素です。
プロパティの要素がjavaBeans形式の場合、再帰的にproperty要素を設定することが可能です。 また、ref属性にて別途定義されたbean要素を参照することも可能です。

  • 属性

    属性名 説明

    name

    String

    プロパティ名を設定します。

    value

    String

    プロパティの値を設定します。

    class

    String

    プロパティがjavaBeansの場合、そのクラス名を設定します。クラス名は完全修飾名を設定してください。

    builder

    String

    プロパティの値の生成処理をカスタマイズしたい場合、ObjectBuilderクラス名を指定します。クラス名は完全修飾名を設定してください。 詳細は 設定値生成のカスタマイズ を参照ください。

    ref

    String

    プロパティがjavaBeansの場合、 bean要素 で定義されるnameを指定可能です。refの指定は、value、class指定より優先されます。

    ifnone

    boolean

    このプロパティが継承元または取り込み先に存在しない場合にのみ定義します。デフォルト値はfalseです。

    inherit

    boolean

    このプロパティが継承元または取り込み先に存在する場合は元のプロパティ定義を継承します。デフォルト値はtrueです。

    final

    boolean

    このプロパティ定義の上書きを禁止します。デフォルト値はfalseです。

    encrypted

    boolean

    暗号化された値であるかを設定します。デフォルト値はfalseです。

    additional

    boolean

    このプロパティと同一名のプロパティが継承元または取り込み先に存在する場合、継承や上書きせずに追加するかを設定します。デフォルト値はfalseです。

  • 子要素

    要素名 説明

    value

    String

    プロパティの値を設定します。設定可能な値は文字列型です。属性のvalueの両方が設定された場合は属性のvalueが優先されます。

    property

    property、複数指定可

    ネストされたプロパティの定義を設定します。

    arg

    property、複数指定可

    Beanのコンストラクタにインジェクションする値を指定可能です。 指定可能な属性、要素はproperty型と同様です。 コンストラクタインジェクションする際のnameは、 arg0arg1 のようにarg[引数順]を指定します。

    buildScript

    String

    プロパティの値の生成処理をカスタマイズしたい場合、GroovyScript形式で記述します。詳細は 設定値生成のカスタマイズ を参照ください。

bean要素

サービス内で利用するBeanのインスタンスを定義する要素です。
定義されたBeanのインスタンスはproperty要素から参照可能です。複数のプロパティ要素から同一のBeanのインスタンスを参照したい場合、bean要素を利用します。

  • 属性

    属性名 説明

    name

    String

    Beanの名前を設定します。

    class

    String

    Beanのクラス名を設定します。クラス名は完全修飾名を設定してください。

    builder

    String

    Beanの生成処理をカスタマイズしたい場合、ObjectBuilderクラス名を指定します。クラス名は完全修飾名を設定してください。 詳細は 設定値生成のカスタマイズ を参照ください。

    ifnone

    boolean

    このbean定義が継承元または取り込み先に存在しない場合にのみ定義します。デフォルト値はfalseです。

    inherit

    boolean

    このbean定義が継承元または取り込み先に存在する場合は元のbean定義を継承します。デフォルト値はtrueです。

    final

    boolean

    このbean定義の上書きを禁止します。デフォルト値はfalseです。

    additional

    boolean

    このbean定義と同一名のbeanが継承元または取り込み先に存在する場合、継承や上書きせずに追加するかを設定します。デフォルト値はfalseです。

  • 子要素

    要素名 説明

    property

    property、複数指定可

    Beanのプロパティの定義を設定します。

    arg

    property、複数指定可

    Beanのコンストラクタにインジェクションする値を指定可能です。 指定可能な属性、要素はproperty型と同様です。 コンストラクタインジェクションする際のnameは、 arg0arg1 のようにarg[引数順]を指定します。

    buildScript

    String

    Beanの生成処理をカスタマイズしたい場合、GroovyScript形式で記述します。詳細は 設定値生成のカスタマイズ を参照ください。

Collectionへの対応

配列、List、Map形式をサポートします。

配列、Listの値を設定する場合は、name属性の値が同じ<property>要素を複数定義することにより表現します。

intListプロパティに配列をセットする例
<service>
    :
    :
    <property name="intList" value="1" />
    <property name="intList" value="3" />
    <property name="intList" value="5" />


</service>

Mapの値を設定する場合は、ネストした<property>要素にてnameにMapのkeyを指定します。

stringMapプロパティに配列をセットする例
<service>
    :
    :
    <property name="stringMap" >
        <property name="key1" value="value1" />
        <property name="key2" value="value2" />
        <property name="key3" value="value3" />
    </property>


</service>

設定例

  • javaBeansへのプロパティの設定例

    以下のようなjavaBeansに対して、

    public class SampleBean {
        private int num;
        private String condition;
        private List<ChildBean> children;
        private ChildBean2 child2;
    
        //getters, seters...
        public int getNum() {
            return this.num;
        }
    
        :
        :
    
    }
    
    public class ChildBean {
        private int age;
        private String name;
    
        //getters, seters...
        public int getAge() {
            return this.age;
        }
    
        :
        :
    }
    
    public class ChildBean2 {
        private int age;
        private String name;
    
        private Map<String, Point> pointMap;
    
        //constructor with args
        public ChildBean2(int age, String name) {
            this.age = age;
            this.name = name;
        }
    
        :
        :
    }
    
    public class Point {
        private int x;
        private int y;
    
        //getters, seters...
        public int getX() {
            return this.x;
        }
    
        :
        :
    }

    次のように値を設定するすることが可能です。

    <service>
        :
        :
    
        <property name="sample" class="SampleBean">
            <property name="num" value="123" />
            <property name="condition" value="conditionStr" />
            <property name="children" class="ChildBean">
                <property name="age" value="5" />
                <property name="name" value="abc" />
            </property>
            <property name="children" class="ChildBean">
                <property name="age" value="3" />
                <property name="name" value="def" />
            </property>
    
            <property name="child2" class="ChildBean2">
                <arg name="arg0" value="10" />
                <arg name="arg1" value="ghi" />
    
                <property name="pointMap">
                    <property name="p1" class="Point">
                        <property name="x" value="3" />
                        <property name="y" value="15" />
                    </property>
                    <property name="p2" class="Point">
                        <property name="x" value="7" />
                        <property name="y" value="30" />
                    </property>
                </property>
            </property>
        </property>
    
    </service>
  • bean要素の利用例

    以下のようなjavaBeansに対して、

    public class SampleBean1 {
        private SharedBean sharedBean;
    
        //getters, seters...
        public SharedBean getSharedBean() {
            return this.sharedBean;
        }
    
        :
        :
    
    }
    
    public class SampleBean2 {
        private SharedBean sharedBean;
    
        //getters, seters...
        public SharedBean getSharedBean() {
            return this.sharedBean;
        }
    
        :
        :
    
    }
    
    public class SharedBean {
        private int age;
        private String name;
    
        //getters, seters...
        public int getAge() {
            return this.age;
        }
    
        :
        :
    }

    次のように値を設定するすることにより、SampleBean1とSampleBean2のsharedBeanに同一のインスタンスをセットすることが可能です。

    <service>
        :
        :
    
        <property name="sample1" class="SampleBean1">
            <property name="sharedBean" ref="sb" />
        </property>
    
        <property name="sample2" class="SampleBean2">
            <property name="sharedBean" ref="sb" />
        </property>
    
        <bean name="sb" class="SharedBean">
            <property name="age" ref="15" />
            <property name="name" ref="abc" />
        </bean>
    
    </service>
定義による同一のBeanのインスタンスを参照可能な範囲はService内のみです。 Service間を跨いで同一のインスタンスを利用したい場合は、明示的にServiceのインタフェース(アクセッサメソッドなど)を経由して利用します。

1.5. 設定値生成のカスタマイズ

ObjectBuilderを利用し、propertyの値、beanのインスタンス生成処理をカスタマイズすることが可能です。

  • ObjectBuilderクラス指定による生成

    org.iplass.mtp.spi.ObjectBuilderインタフェースを実装するクラスを作成し、property要素、bean要素のbuilder属性に指定します。

    ObjectBuilderの実装例
    import org.iplass.mtp.spi.ObjectBuilder;
    
    public class SampleObjectBuilder implements ObjectBuilder<SampleBean> {
    
        private String propAFromNestProperty;
    
        @Override
        public void setProperties(Map<String, Object> properties) { (1)
            propAFromNestProperty = (String) properties.get("propA");
        }
    
        @Override
        public SampleBean build() { (2)
            SampleBean bean = new SampleBean(System.currentTimeMillis());
            bean.setPropA(propAFromNestProperty);
            return bean;
        }
    }
    
    
    public class SampleBean {
    
        private String propA;
        :
    
        public SampleBean(long someDynamicParam) {
            :
            :
        }
    
        public String getPropA() {
            return propA;
        }
    
        public void setPropA(String propA) {
            this.propA = propA;
        }
    }
    1 setProperties() メソッドを実装することにより、ネストされたproperty要素に定義されている値を取得することも可能です。
    2 build()メソッドでインスタンスを生成します
    設定ファイルの記述例
    <service>
        :
        :
    
        <property name="sample1" builder="SampleObjectBuilder">
            <property name="propA" value="abc" />
        </property>
    
    
    </service>

    上記の設定により、sample1の値はSampleObjectBuilderで生成されたSampleBeanのインスタンスが設定されます(propAの値は設定ファイルで設定した形で)。

  • buildスクリプトによる生成

    ObjectBuilderの生成処理をGroovyScriptで記述することも可能です。 GroovyScriptはbuildScript要素で記述します。

    GroovyScriptでは次の変数がバインドされます。

    変数名 説明

    name

    property要素もしくはbean要素に指定されたname属性の値。

    value

    property要素に指定されたvalue属性(もしくはvalue要素)の値。

    className

    property要素もしくはbean要素に指定されたclass属性の値。

    properties

    property要素もしくはbean要素にネストして指定されたproperty要素。keyにname、valueにpropertyの設定値が格納されたMap形式のインスタンス。

    args

    property要素もしくはbean要素にネストして指定されたargs要素。keyにname、valueにargsの設定値が格納されたMap形式のインスタンス。

    設定ファイルの記述例
    <service>
        :
        :
    
        <property name="sample1">
            <buildScript>
                SampleBean sb = new SampleBean(System.currentTimeMillis());
                sb.propA = properties.propA;
                return sb;
            </buildScript>
            <property name="propA" value="abc" />
        </property>
    
    
    </service>

    上記の設定により、propAの値は設定ファイルから取得したSampleBeanのインスタンスが設定されます。

1.6. 設定値の難読化

service-configファイルに記載される値を難読化出来ます。 難読化する手順は以下の通りです。

難読化方法の設定

難読化方式の設定を記述した暗号化プロパティファイル(crypt.properties)を作成します。

以下の項目を設定できます。

項目名 設定値

propertyValueCoder

org.iplass.mtp.impl.core.config.PropertyValueCoderを実装するクラス名を指定する。 PropertyValueCoderには文字列をエンコード/デコードする処理を実装する。 以下の実装をデフォルトで提供。

DefaultPropertyValueCoder

パスフレーズより難読化された値をエンコード/デコード

SecretsManagerPropertyValueCoder

AWS Secrets Managerのシークレットに登録された設定値を取得

未指定の場合はDefaultPropertyValueCoderが適用される。

DefaultPropertyValueCoder

classはorg.iplass.mtp.impl.core.config.DefaultPropertyValueCoderを指定します。

項目名 設定値

keyFactoryAlgorithm

暗号化のための鍵生成アルゴリズム。 未指定の場合はデフォルト値(PBKDF2WithHmacSHA256)

keySalt

鍵生成時のsalt。 未指定の場合はデフォルト値

keyStretch

鍵生成時のストレッチ回数。 未指定の場合はデフォルト値

keyLength

鍵のbit長。 未指定の場合はデフォルト値(128)

cipherAlgorithm

暗号化アルゴリズム。 未指定の場合はデフォルト値(AES)

passphraseSupplier

org.iplass.mtp.impl.core.config.PassphraseSupplierを実装するクラス名を指定する。 PassphraseSupplierには鍵生成時のパスフレーズを取得する処理を実装する。 以下の実装をデフォルトで提供。

org.iplass.mtp.impl.core.config.PropertyFilePassphraseSupplier

プロパティファイルよりパスフレーズを取得

org.iplass.mtp.impl.core.config.ConsolePassphraseSupplier

標準入力よりパスフレーズを入力

org.iplass.mtp.impl.core.config.SystemEnvironmentVariablePassphraseSupplier

システム環境変数(MTP_CONFIG_PASSPHRASE)にてパスフレーズを指定。 (javaシステム変数ではない)

org.iplass.mtp.impl.aws.secretsmanager.SecretsManagerPassphraseSupplier

AWS Secrets Managerのシークレットに登録されているpassphraseより取得。

未指定の場合はPropertyFilePassphraseSupplierが適用される。

passphrase

PropertyFilePassphraseSupplierを利用する場合、パスフレーズを指定。

aws.secretName

SecretsManagerPassphraseSupplierを利用する場合、シークレット名を指定。AWS認証情報として、デフォルトの認証情報プロバイダーチェーンを使用しています。

例として、デフォルトの難読化設定を利用する場合、以下のように設定します。

crypt.propertiesの設定例
passphrase=hogehoge
SecretsManagerPropertyValueCoder

classはorg.iplass.mtp.impl.aws.secretsmanager.SecretsManagerPropertyValueCoderを指定します。

項目名 設定値

aws.secretName

シークレット名を指定。AWS認証情報として、デフォルトの認証情報プロバイダーチェーンを使用しています。

例として、AWS Secrets Managerのシークレットに登録された設定値を取得する場合、以下のように設定します。

crypt.propertiesの設定例
propertyValueCoder=org.iplass.mtp.impl.aws.secretsmanager.SecretsManagerPropertyValueCoder
aws.secretName=test
プロパティファイルの指定

VM引数、もしくはweb.xmlのcontext-paramでpropertiesファイルへのパス(ClassLoaderのResourceとしてのパス、もしくはfileパス)を指定します。 または、EntryPointBuilderクラスのcrypt(String)メソッドにてパスを指定します。

パラメータ名

mtp.config.crypt

VM引数での設定例
-Dmtp.config.crypt=/crypt.properties
web.xmlでの設定例
<context-param>
  <param-name>mtp.config.crypt</param-name>
  <!-- ■ crypt config file ■ -->
  <param-value>/crypt.properties</param-value>
</context-param>
コード上からの設定例
import org.iplass.mtp.runtime.EntryPoint;

:
:

//initialize EntryPoint on application startup
EntryPoint entryPoint = EntryPoint.builder()
        .config("/app-service-config.xml")
        .crypt("/crypt.properties").build();
難読化対象テキストの難読化

Encoderを利用して難読化を行います。 難読化の際にcrypt.propertiesを利用します。 passphraseについてはコンソールから直接入力で指定します。

service-configへ設定

難読化したテキストをservice-configファイルに設定します。 併せてpropertyの属性としてencrypted="true"を指定します。

<property name="password" value="39y04KVcitPsSAQtXgvc=" encrypted="true" />
AWS Secrets Managerによる設定値の取得

SecretsManagerPropertyValueCoderを利用し、AWS Secrets Managerのシークレットに登録された設定値を取得します。AWS Secrets Managerのシークレットに設定値をKey-Value形式で事前に登録しておきます。

service-configへ設定

AWS Secrets Managerのシークレットに登録されている設定値のキーをservice-configファイルに設定します。 併せてpropertyの属性としてencrypted="true"を指定します。

<property name="password" value="passwordKey" encrypted="true" />

1.7. プリプロセッサ

service-configファイルのプリプロセス処理を実行することが可能です。 プリプロセス処理を有効化(serviceDefinition要素の属性preprocessにtrueを指定)した場合、service-configファイルは読み込み前にGroovyTemplateとして実行されます。

例えば、環境依存の設定値をシステムプロパティや環境変数などから取得することが可能です。

$ \ はGroovyTemplateでは予約語となります。
プリプロセス処理を有効化する場合、設定ファイル中の $\$\\\ のようにエスケープが必要になります。
プリプロセス処理の記述例(システムプロパティから取得)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE serviceDefinition>
<serviceDefinition preprocess="true"> (1)

    :
    :

    <service>
        <interface>org.iplass.mtp.impl.lob.LobStoreService</interface>

        <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="${System.getProperty('lobStoreDir')}" /> (2)
        </property>
    </service>


</serviceDefinition>
1 serviceDefinitionにpreprocess="true"を指定します
2 システムプロパティlobStoreDirを読み込みます
プリプロセス処理の記述例(環境変数から取得)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE serviceDefinition>
<serviceDefinition preprocess="true"> (1)

    :
    :

    <service>
        <interface>org.iplass.mtp.impl.lob.LobStoreService</interface>

        <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="${System.getenv('LOB_STORE_DIR')}" /> (2)
        </property>
    </service>


</serviceDefinition>
1 serviceDefinitionにpreprocess="true"を指定します
2 環境変数LOB_STORE_DIRを読み込みます
プリプロセス処理の記述例(複雑な例)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE serviceDefinition>
<serviceDefinition preprocess="true"> (1)
    <!-- <%
    // プロパティファイルから制御フラグを取得
    def props = new Properties()
    getClass().getResource('/dev.properties').withInputStream {
        props.load(it)
    }

    def rdb = props.getProperty('rdb', 'mysql')
    def includeAdmin = props.getProperty('includeAdmin', 'true')

    %> --> (2)

    <inherits>/mtp-core-service-config-${rdb}.xml</inherits>
    <inherits>/mtp-web-service-config.xml</inherits>
    <inherits>/mtp-tools-service-config.xml</inherits>
    <inherits>/gem-service-config.xml</inherits>
    <!-- <% if (includeAdmin == 'true') {%> -->
    <inherits>/adminconsole-service-config.xml</inherits>
    <!-- <%}%> -->

    :
    :

</serviceDefinition>
1 serviceDefinitionにpreprocess="true"を指定します
2 <% %>にScriptを記述可能です

2. Service一覧

設定ファイルにて設定可能なServiceの一覧と概要を示します。

2.1. Core services

iPLAssの中心となる機能に関するサービス群です。

名前 概要

AsyncTaskService

基盤内部でタスクを非同期実行するためのサービスです。

AsyncTaskServiceForHttpMessageChannel

クラスタ通信にHttpMessageChannelを利用して非同期実行を行うサービスです。

AuditLoggingService

Entityに対する登録・更新・削除を操作ログとして出力するサービスです。

AuthLoggerService

認証関連のロガーを管理するサービスです。

AuthService

認証を行うためのサービスです。

AuthTokenService

認証トークンを管理するためのサービスです。

AutoNumberTypeCounter

AutoNumber型の採番を行うサービスです。

BinaryMetaDataService

バイナリ形式のメタデータをバイト配列でメモリ内に保持しない仕組みを提供する為のサービスです。

CacheService

キャッシュのサービスです。

ClusterService

クラスタ間通信のサービスです。

ConnectionFactory

データベース接続を行うためのサービスです。

CubeService

Cube集計のサービスです。

DefaultQueueBaseAsyncTaskService

RDBによるキューを利用した標準の非同期実行のサービスです。

EntityService

エンティティを管理するサービスです。

FulltextSearchService

全文検索のサービスです。

I18nService

国際化のサービスです。

InterceptorService

コマンド実行時に呼び出されるインターセプターを管理するサービスです。

ListingService

保存リストの実行を管理するサービスです。

LobStoreService

LOBデータの永続化を行うサービスです。

LoggingService

ログ全般に関する設定を行うサービスです。

MailService

メール送信を行うためのサービスです。

MessageService

リソースバンドルを管理するためのサービスです。

MetaDataRepository

メタデータの管理を行うためのサービスです。

OidCounter

oidの採番を行うサービスです。

OnetimeCodeGeneratorService

二段階認証のワンタイム認証コードを生成するサービスです。

PropertyService

プロパティを管理するサービスです。

PropertyEncryptionService

プロパティ単位の暗号化を行うサービスです。

PushNotificationService

モバイル端末へのプッシュ通知を行うためのサービスです。

QueryService

EQLの外部ヒント句を管理するサービスです。

RdbAdapterService

各種RDBとのインターフェースとなるRdbAdapterを管理するサービスです。

RdbQueueService

RDBを利用したキューのサービスです。

ScheduleService

スケジュールタスクの定義(メタデータ)を管理するサービスです。

ScriptService

動的スクリプトの実行を管理するサービスです。

SecureRandomService

ランダム文字列を生成するための設定を管理するサービスです。

SmsService

SMS送信を行うためのサービスです。

StoreService

Entityデータの永続化を行うサービスです。

SyntaxService

構文解析のためのサービスです。

TaskIdCounter

タスクIDの採番を行うサービスです。

TenantContextService

テナント全体の振る舞いを設定するサービスです。

ValidationService

入力チェックを行うためのサービスです。

WebhookService

Webhookの動作を管理するサービスです。

WorkflowService

ワークフローの動作を管理するサービスです。

2.2. Web services

ActionやWebApi、Web全般に関するサービス群です。

名前 概要

ActionMappingService

ブラウザからのリクエスト時に呼び出されるインターセプターを管理するサービスです。

CsvUploadService

CSVアップロードを管理するサービスです。

EntityCsvImportService

EntityのCSVインポートに関するサービスです。

EntityWebApiService

EntityWebApiを管理するサービスです。

IPAddressHistoryStoreService

過去にアクセスされたIPアドレスの保持を行うためのサービスです。

OAuthAuthorizationService

OAuth2.0 Authorization ServerおよびOpenID Connect Providerの機能を管理するためのサービスです。

OpenIdConnectService

OpenID Connect Relying Partyの機能を管理するためのサービスです。

ReportingEngineService

帳票出力を管理するサービスです。

SamlService

SAML認証を行うためのサービスです。

TenantAvailableService

テナントの稼動状態を管理するサービスです。

WebApiService

WebApiを管理するサービスです。

WebApiJaxbService

WebApiのJAXBでの変換対象のクラス定義を行うサービスです。

WebFrontendService

Webアプリケーション全般の動作を管理するサービスです。

ODataService

ODataサービスの動作を管理するサービスです。

2.3. Gem services

Gem(Generic Entity Manager)画面に関するサービス群です。

名前 概要

AggregationService

集計機能のサービスです。

CubeTemplateService

Cube集計のカスタムメジャーのテンプレートを管理するサービスです。

EntityListingService

EntityListing機能のサービスです。

GemConfigService

汎用画面全般の設定を行うサービスです。

MdcConfigService

モバイル版汎用画面全般の設定を行うサービスです。

MdcDetailViewService

モバイル版の詳細画面の設定を行うサービスです。

MdcSearchViewService

モバイル版の検索画面の設定を行うサービスです。

RelativeRangeService

集計機能やEntityListingの日付の検索条件で、相対範囲を独自に追加するためのサービスです。

2.4. Admin services

管理画面(AdminConsole)に関するサービス群です。

名前 概要

AdminAuditLoggingService

AdminConsoleの操作ログに関するサービスです。

AdminConsoleService

AdminConsoleService全般のサービスです。

2.5. Tools services

各種ツール類(AdminConsoleのTools、バッチ等)に関するサービス群です。

名前 概要

EntityPortingService

Entityデータのツールに関するサービスです。

StorageSpaceService

StorageSpaceの移行ツールに関するサービスです。

TenantToolService

テナント管理ツールに関するサービスです。

2.6. Other services

その他のプラグインとなるモジュールに関するサービス群です。

名前 概要

AWSSetting

AWSの設定を管理する サービスです。

InfinispanService

InfinispanServiceを管理する サービスです。

RedisService

RedisServiceを管理する サービスです。

CaptchaService

reCAPTCHAによるロボット排除を管理するためのサービスです。

OutOfBandVerificationService

メールやSMSを利用して検証を行うためのサービスです。

WamService

Web会員管理機能のサービスです。

MicrometerService

メトリクス収集、モニタリングシステムへの連携を行うためのサービスです。

3. Serviceの詳細

3.1. ActionMappingService

アクションの定義(メタデータ)と、アクションがリクエストされた時に呼び出されるインターセプターを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.web.actionmapping.ActionMappingService

実装クラス名

org.iplass.mtp.impl.web.actionmapping.ActionMappingService

ActionMappingServiceの設定

ブラウザからのリクエスト時に呼び出されるインターセプターを設定します。

設定項目
項目 説明

interceptor

RequestInterceptor、複数指定可

リクエスト用のインターセプター。

RequestInterceptor

classはorg.iplass.mtp.web.interceptor.RequestInterceptorの実装クラスを指定します。

標準で、以下のRequestInterceptorを提供します。

InitialInterceptor

classはorg.iplass.mtp.impl.web.interceptors.InitialInterceptorを指定します。

リクエストの初期処理として言語とプレビュー時刻を設定するインターセプターです。設定変更可能な項目はありません。

ActionCacheInterceptor

classはorg.iplass.mtp.impl.web.interceptors.ActionCacheInterceptorを指定します。

キャッシュを行うインターセプターです。設定変更可能な項目はありません。

AuthInterceptor

classはorg.iplass.mtp.impl.web.interceptors.AuthInterceptorを指定します。

認証を行うインターセプターです。設定変更可能な項目はありません。

ExceptionInterceptor

classはorg.iplass.mtp.impl.web.interceptors.ExceptionInterceptorを指定します。

例外のハンドリングを行うインターセプターです。以下の項目を設定可能です。

項目 説明

noHande

String、複数指定可

ハンドリングを行わない例外クラス。 複数指定する場合はプロパティを複数設定するか例外クラスを半角コロン(:)で区切って設定します。

eliminate

String、複数指定可

ハンドリングから除外する例外クラス。 複数指定する場合はプロパティを複数設定するか例外クラスを半角コロン(:)で区切って設定します。

LoggingInterceptor

classはorg.iplass.mtp.impl.web.interceptors.LoggingInterceptorを指定します。

ログの出力を行うインターセプターです。以下の項目を設定可能です。

項目 説明

actionTrace

boolean

アクションのログを出力するか。デフォルト値はtrueです。

partsTrace

boolean

画面の1部品として実行されたアクションのログを出力するか。デフォルト値はtrueです。

paramName

String、複数指定可

ログ出力するパラメータ名。

noStackTrace

String、複数指定可

スタックトレースを出力しない例外クラス。 複数指定する場合はプロパティを複数設定するか例外クラスを半角コロン(:)で区切って設定します。

warnLogThresholdOfSqlExecutionCount

int

警告ログを出力するSQL実行回数の閾値。
単一リクエスト中に閾値を越える回数のSQLが発行された場合、WARNレベルでログ出力されます。
デフォルト値は-1(すべてINFOレベルで出力)です。

warnLogThresholdOfExecutionTimeMillis

long

警告ログを出力する実行時間の閾値(ミリ秒)。
リクエスト処理時間が閾値を越えた場合、WARNレベルでログ出力されます。
デフォルト値は-1(すべてINFOレベルで出力)です。

UnavailableInterceptor

classはorg.iplass.mtp.impl.web.interceptors.UnavailableInterceptorを指定します。

メンテナンスチェックを行うインターセプターです。設定変更可能な項目はありません。

ActionMetricsInterceptor

classはorg.iplass.mtp.impl.micrometer.metrics.web.action.ActionMetricsInterceptorを指定します。

Actionのレイテンシ・SQLの発行回数をメトリクスとして記録するインターセプターです。Micrometerモジュールを適用した場合にデフォルトで追加されます。

項目 説明

provider

ActionMetricsTagsProvider

org.iplass.mtp.impl.micrometer.metrics.web.action.ActionMetricsTagsProviderを実装するクラス。メトリクスに付与するタグをカスタマイズしたい場合に指定可能です。デフォルトでは、org.iplass.mtp.impl.micrometer.metrics.web.action.DefaultActionMetricsTagsProviderが使用されます。

設定例
<service>
    <interface>org.iplass.mtp.impl.web.actionmapping.ActionMappingService</interface>
    <property name="interceptor" class="org.iplass.mtp.impl.web.interceptors.InitialInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.web.interceptors.AuthInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.web.interceptors.ExceptionInterceptor">
        <property name="noHande" value="org.iplass.mtp.auth.NeedTrustedAuthenticationException" />
        <property name="eliminate" value="org.apache.catalina.connector.ClientAbortException" />
        <property name="eliminate" value="org.iplass.mtp.impl.web.WebProcessRuntimeException:org.apache.catalina.connector.ClientAbortException" />
    </property>
    <property name="interceptor" class="org.iplass.mtp.impl.web.interceptors.UnavailableInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.web.interceptors.LoggingInterceptor">
        <property name="partsTrace" value="true" />
        <property name="paramName" value="defName" />
        <property name="noStackTrace" value="org.apache.catalina.connector.ClientAbortException" />
        <property name="noStackTrace" value="org.iplass.mtp.impl.web.WebProcessRuntimeException:org.apache.catalina.connector.ClientAbortException" />
    </property>
    <property name="interceptor" class="org.iplass.mtp.impl.web.interceptors.ActionCacheInterceptor" />
</service>

3.2. AdminAuditLoggingService

AdminConsoleの操作ログに関するサービスです。

インタフェース名

org.iplass.adminconsole.server.base.service.auditlog.AdminAuditLoggingService

実装クラス名

org.iplass.adminconsole.server.base.service.auditlog.AdminAuditLoggingService

AdminAuditLoggingServiceの設定

AdminAuditLoggingServiceを設定します。

設定項目
項目 説明

logCompact

boolean

LongTextなど長すぎる文字列を指定文字数でカットするか。デフォルト値はfalseです。

logQuery

boolean

クエリをロガーに出力するか。デフォルト値はfalseです。

logSelectValueWithLabel

boolean

SelectValueをログに出力する時に、ラベルで出力するか。デフォルト値はfalseです。

logReferenceWithLabel

boolean

Referenceをログに出力する時に、nameで出力するか。falseの場合、oidを出力します。デフォルト値はfalseです。

textMaxLength

int

LongTextなど長すぎる文字列をカットする文字数。デフォルト値は256です。

設定例
<service>
    <interface>org.iplass.adminconsole.server.base.service.auditlog.AdminAuditLoggingService</interface>

    <!-- logファイルへの出力時、LongTextなど長すぎる文字列を全部出力しない場合はtrue -->
    <property name="logCompact" value="false" />
    <!-- logCompactがtrueの場合、最大文字数(デフォルト256文字まで) -->
    <!-- property name="textMaxLength" value="256" / -->

    <!-- if log query, set to true -->
    <property name="logQuery" value="false" />
</service>

3.3. AdminConsoleService

AdminConsoleService全般のサービスです。

インタフェース名

org.iplass.adminconsole.server.base.service.AdminConsoleService

実装クラス名

org.iplass.adminconsole.server.base.service.AdminConsoleService

AdminConsoleServiceの設定

AdminConsoleServiceを設定します。

設定項目
項目 説明

showServerInfo

boolean

AdminConsole上で環境情報としてサーバ情報を表示するか

logDownloadConfig

LogConfig

アプリケーションログのダウンロード設定

maxUploadFileSize

long

AdminConsoleでのファイルアップロード時のサイズ上限(byte)。デフォルトは1GByteです。

LogConfig

classはorg.iplass.adminconsole.server.base.service.LogConfigを指定します。

LogExplorerからサーバに出力されたログをダウンロードするための設定です。 以下の項目を設定可能です。

項目 説明

enabled

boolean

ログファイルのダウンロードを有効にするか

logHome

String、複数指定可

ログファイルの格納フォルダ

fileFilter

String、複数指定可

LogExplorerに表示するファイル名のフィルタ、正規表現で指定

設定例
<service>
    <interface>org.iplass.adminconsole.server.base.service.AdminConsoleService</interface>

    <!-- AdminConsole上で環境情報としてサーバ情報を表示するか -->
    <property name ="showServerInfo" value="true" />

    <!-- AdminConsoleで参照可能なログの設定 -->
    <property name="logDownloadConfig" class="org.iplass.adminconsole.server.base.service.LogConfig">
        <property name="enabled" value="true" />

        <!--
            ログファイルの格納フォルダを指定
            ${tenantId}:テナントID
            ${tenantName}:テナント名
            *:任意のフォルダ名

            例1:/logs/${tenantId}/
                /logs/フォルダ直下にテナントIDのフォルダがあり、それ以降にテナントごとのログがある。

            例2:/logs/*/${tenantId}/
                /logs/フォルダ直下に任意のフォルダがあり、その下にテナントIDのフォルダ、それ以降にテナントごとのログがある。
                例えば、複数サーバのログを/logs/ap1/、/logs/ap2/などに配置している場合。
        -->
        <property name="logHome" value="/logs/${tenantId}/" />

        <!--
            ファイル名に対するFilterを指定(正規表現)

            例:.*app\.log.* (== *app.log*)
        -->
        <property name="fileFilter" value=".*app\.log.*" />
    </property>

    <!-- ファイルアップロード時のMAXファイルサイズ(Byte) -->
    <!--
    <property name ="maxUploadFileSize" value="1073741824" />
    -->

</service>

3.4. AggregationService

集計機能の定義(メタデータ)を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.aggregation.unit.AggregationService

実装クラス名

org.iplass.mtp.impl.aggregation.unit.AggregationService

AggregationServiceの設定

AggregationServiceを設定します。

設定項目
項目 説明

useSubQueryIfPossible

boolean

フィルター条件に保存リストを利用する場合に、可能な限りサブクエリを利用するか。デフォルト値はfalseです。

設定例
<service>
    <interface>org.iplass.mtp.impl.aggregation.unit.AggregationService</interface>
    <class>org.iplass.mtp.impl.aggregation.unit.AggregationService</class>
    <!-- フィルター条件に保存リストを利用する場合に、可能な限りサブクエリを利用するか否か -->
    <property name="useSubQueryIfPossible" value="false" />
</service>

3.5. AsyncTaskService

基盤内部でタスクを非同期実行するためのサービスです。

インタフェース名

org.iplass.mtp.impl.async.AsyncTaskService

実装クラス名

org.iplass.mtp.impl.async.thread.ThreadingAsyncTaskService

ThreadingAsyncTaskServiceの設定

ThreadingAsyncTaskServiceを設定します。

設定項目
項目 説明

corePoolSize

int

非同期処理のためのスレッドプールのサイズ。 アイドル状態であってもプール内に維持されるスレッドの数です。デフォルト値は4です。

threadPoolType

String

スレッドプールのタイプ。 未指定の場合、threadPoolTypeは cached に設定され、maximumPoolSize以上のリクエストがあるとRejectedExecutionExceptionが発生します。

fixed

corePoolSizeで指定された固定数のスレッドを再利用するスレッドプールを使用します。

single

単一のワーカー・スレッドを使用します。

cached

maximumPoolSizeで指定された可変数のスレッドを再利用するスレッドプールを使用します。

maximumPoolSize

int

スレッドプール内で使用可能なスレッドの最大数。 -1が設定された場合はintの最大値が設定されます。デフォルト値は-1です。

keepAliveTime

long

threadPoolTypeが cached で、スレッドの数がcorePoolSizeよりも多い場合に、余分なアイドル状態のスレッドが終了する前に新しいタスクを立ち上げるまでに待機する最大時間(ミリ秒)です。 デフォルト値は60000(1分)です。

useResourceHolder

boolean

ResourceHolderを使用するか。デフォルト値はtrueです。

設定例
<service>
    <interface>org.iplass.mtp.impl.async.AsyncTaskService</interface>
    <class>org.iplass.mtp.impl.async.thread.ThreadingAsyncTaskService</class>
    <property name="maximumPoolSize" value="256" />
</service

3.6. AsyncTaskServiceForHttpMessageChannel

クラスタ通信にHttpMessageChannelを利用して非同期実行を行うサービスです。 ClusterServiceでNode間のメッセージ送信を非同期実行するためのAsyncTaskServiceの定義です。

インタフェース名

org.iplass.mtp.impl.async.AsyncTaskService

実装クラス名

org.iplass.mtp.impl.async.thread.ThreadingAsyncTaskService

ThreadingAsyncTaskServiceの設定

ThreadingAsyncTaskServiceを設定します。

設定項目
項目 説明

corePoolSize

int

非同期処理のためのスレッドプールのサイズ。 アイドル状態であってもプール内に維持されるスレッドの数です。デフォルト値は4です。

threadPoolType

String

スレッドプールのタイプ。 未指定の場合、threadPoolTypeは cached に設定され、maximumPoolSize以上のリクエストがあるとRejectedExecutionExceptionが発生します。

fixed

corePoolSizeで指定された固定数のスレッドを再利用するスレッドプールを使用します。

single

単一のワーカー・スレッドを使用します。

cached

maximumPoolSizeで指定された可変数のスレッドを再利用するスレッドプールを使用します。

maximumPoolSize

int

スレッドプール内で使用可能なスレッドの最大数。 -1が設定された場合はintの最大値が設定されます。デフォルト値は-1です。

keepAliveTime

long

threadPoolTypeが cached で、スレッドの数がcorePoolSizeよりも多い場合に、余分なアイドル状態のスレッドが終了する前に新しいタスクを立ち上げるまでに待機する最大時間(ミリ秒)です。 デフォルト値は60000(1分)です。

useResourceHolder

boolean

ResourceHolderを使用するか。デフォルト値はtrueです。

設定例
<service name="AsyncTaskServiceForHttpMessageChannel">

    <interface>org.iplass.mtp.impl.async.AsyncTaskService</interface>
    <class>org.iplass.mtp.impl.async.thread.ThreadingAsyncTaskService</class>

    <!--
        クラスタ通信にHttpMessageChannelを利用する場合の非同期送信のためのスレッドプールの設定
        corePoolSizeを、実際のサーバ数×2程度の値に設定
     -->
    <property name="corePoolSize" value="4" />
    <!--
        スレッドプールのタイプ。未指定の場合、threadPoolTypeは"cached"に設定され、
        maximumPoolSize以上のリクエストがあると、RejectedExecutionExceptionが発生してしまう。
     -->
    <property name="threadPoolType" value="fixed" />
</service>

3.7. AuditLoggingService

Entityに対する登録・更新・削除を操作ログとして出力するサービスです。

インタフェース名

org.iplass.mtp.impl.entity.auditlog.AuditLoggingService

実装クラス名

ロガーを利用した操作ログ出力
org.iplass.mtp.impl.entity.auditlog.LoggerAuditLoggingService
RDBとロガーを利用した操作ログ出力
org.iplass.mtp.impl.entity.auditlog.RdbAuditLoggingService

LoggerAuditLoggingServiceの設定

ロガーへの出力内容を設定します。

設定項目
項目 説明

logCompact

boolean

LongTextなど長すぎる文字列を指定文字数でカットするか。デフォルト値はfalseです。

logQuery

boolean

クエリをロガーに出力するか。デフォルト値はfalseです。

logSelectValueWithLabel

boolean

SelectValueをログに出力する時に、ラベルで出力するか。デフォルト値はfalseです。

logReferenceWithLabel

boolean

Referenceをログに出力する時に、nameで出力するか。falseの場合、oidを出力します。デフォルト値はfalseです。

textMaxLength

int

LongTextなど長すぎる文字列をカットする文字数。デフォルト値は256です。

maskTarget

MaskTarget

ログをマスクする際に使用する、個別のMaskTargetを設定。

MaskTarget

classはorg.iplass.mtp.impl.entity.auditlog.MaskTargetを指定します。 マスク対象のEntityとProperty、マスク方式を設定します。

設定項目
項目 説明

entity

String

マスク対象のEntityを指定します。"*"で全てのEntityを指定可能です。

property

String

マスク対象のPropertyを指定します。"*"で全てのPropertyを指定可能です。また、"*"指定のEntity、PropertyであってもProperty名を個別で指定することにより、個別指定の maskHandler の設定が優先されます。

maskHandler

MaskHandler

マスク方式を設定します。

MaskHandler

classはorg.iplass.mtp.impl.entity.auditlog.LogMaskHandlerの実装クラスを指定します。 標準で、以下のMaskHandlerを提供します。

LogAllMaskHandler

値を固定文字列でマスクするLogMaskHandlerです。 以下の項目を設定可能です。

項目 説明

maskString

String

設定した文字列で値を置き換えます。

LogRegexMaskHandler

値を正規表現でマスクするLogMaskHandlerです。 以下の項目を設定可能です。

項目 説明

maskChar

String

正規表現に一致した文字を maskChar で置き換えます。

maskRegex

String

正規表現のパターン。指定できる文字列は java.util.regex.Pattern のパターンとなります。

LogHashMaskHandler

値をハッシュ化してマスクするLogMaskHandlerです。 以下の項目を設定可能です。

項目 説明

hashAlgorithm

String

ハッシュのアルゴリズムを指定。 デフォルトは SHA-256 です。

LogNoMaskHandler

マスクしないことを明示するLogMaskHandlerです。 "*"指定でマスク対象のPropertyとなる場合でも、LogNoMaskHandlerを個別のPropertyに指定することにより、マスクさせないことが可能です。

RdbAuditLoggingServiceの設定

RDBとロガーへの出力内容を設定します。

設定項目

LoggerAuditLoggingServiceの設定項目に加え以下の項目を設定可能です。

項目 説明

searchResultCacheLimit

long

検索結果からユーザー名などの追加情報を取得する為の内部キャッシュサイズ。

logIndexOrder

boolean

多重度が複数のプロパティの更新ログを記録する際、並び順(配列のindex)の変更も記録するか否か。デフォルト値はtrueです。

disableLogging

boolean

RDBへのログ記録を一時的に無効化したい場合trueを指定。 システム管理者によるデータメンテナンス時にログが記録されるのを防ぎたい場合、一時的にログ記録を無効化することが可能です。

設定例
<service>
    <interface>org.iplass.mtp.impl.entity.auditlog.AuditLoggingService</interface>
    <class>org.iplass.mtp.impl.entity.auditlog.RdbAuditLoggingService</class>

    <!-- logファイルへの出力時、LongTextなど長すぎる文字列を全部出力しない場合(デフォルト256文字まで)はtrue -->
    <property name="logCompact" value="false" />
    <!-- if log query, set to true -->
    <property name="logQuery" value="false" />

    <!-- Internal cache size for retrieving additional information, such as user name, from search result -->
    <property name="searchResultCacheLimit" value="50" />

    <!-- log出力時、SelectValueのコードとラベルを出力する場合はtrue -->
    <property name="logSelectValueWithLabel" value="true" />
    <!-- log出力時、Referenceのoidとnameを出力する場合はtrue -->
    <property name="logReferenceWithLabel" value="true" />

    <!-- logファイルへ出力されるプロパティのマスク設定 -->
    <property name="maskTarget" class="org.iplass.mtp.impl.entity.auditlog.MaskTarget">
        <property name="entity" value="entityA" />
        <property name="property" value="propertyA" />
        <property name="maskHandler" ref="allMaskHandler" />
    </property>
    <property name="maskTarget" class="org.iplass.mtp.impl.entity.auditlog.MaskTarget">
        <property name="entity" value="*" />
        <property name="property" value="propertyB" />
        <property name="maskHandler" ref="regexMaskHandler" />
    </property>
    <bean name="allMaskHandler" class="org.iplass.mtp.impl.entity.auditlog.LogAllMaskHandler">
        <property name="maskString" value="*****" />
    </bean>
    <bean name="regexMaskHandler" class="org.iplass.mtp.impl.entity.auditlog.LogRegexMaskHandler">
        <property name="maskChar" value="*" />
        <property name="maskRegex" value=".+?" />
    </bean>
    <bean name="hashMaskHandler" class="org.iplass.mtp.impl.entity.auditlog.LogHashMaskHandler">
        <property name="hashAlgorithm" value="SHA-256" />
    </bean>
    <bean name="noMaskHandler" class="org.iplass.mtp.impl.entity.auditlog.LogNoMaskHandler">
    </bean>
</service>

3.8. AuthLoggerService

認証関連のロガーを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.auth.log.AuthLoggerService

実装クラス名

org.iplass.mtp.impl.auth.log.AuthLoggerService

AuthLoggerServiceの設定

AuthLoggerServiceを設定します。

設定項目
項目 説明

loggers

AuthLogger、複数指定可

ロガーの設定。 ロガー名(loggerName)が default のロガーが標準のロガーとなります。 未設定の場合はSlf4jAuthLoggerが標準のロガーとして使用されます。

AuthLogger

classはorg.iplass.mtp.impl.auth.log.AuthLoggerの実装クラスを指定します。

標準で、以下のAuthLoggerを提供します。

Slf4jAuthLogger

classはorg.iplass.mtp.impl.auth.log.Slf4jAuthLoggerを指定します。

SLF4Jを利用して認証のログ出力を行うロガーです。以下の項目を設定可能です。

項目 説明

loggerName

String

ロガー名。

slf4LoggerName

String

SLF4Jのロガー名。デフォルト値は mtp.auth です。

MultiAuthLogger

classはorg.iplass.mtp.impl.auth.log.MultiAuthLoggerを指定します。

複数のロガーを保持します。以下の項目を設定可能です。

項目 説明

loggerName

String

ロガー名。

logger

AuthLogger、複数指定可

標準のロガーの設定。

EnterpriseSlf4jAuthLogger

classはorg.iplass.mtp.impl.auth.log.EnterpriseSlf4jAuthLoggerを指定します。

SLF4Jを利用して認証のログ出力を行うロガーです。 設定可能はSlf4jAuthLoggerを参照してください。

AuthenticationEventMetrics

classはorg.iplass.mtp.impl.micrometer.metrics.authentication.AuthenticationEventMetricsを指定します。

認証試行の成功・失敗回数をメトリクスとして記録するロガーです。Micrometerモジュールを適用した場合、デフォルトでMultiAuthLoggerのロガーとして、EnterpriseSlf4jAuthLoggerと共に使用されます。設定可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.auth.log.AuthLoggerService</interface>
    <property name="logger" class="org.iplass.mtp.impl.auth.log.EnterpriseSlf4jAuthLogger">
        <property name="loggerName" value="default" />
    </property>
</service>

3.9. AuthService

認証を行うためのサービスです。 認証プロバイダを切り替えることにより、様々な認証を行うことができます。

インタフェース名

org.iplass.mtp.impl.auth.AuthService

実装クラス名

コミュニティエディション版
org.iplass.mtp.impl.auth.AuthService
エンタープライズエディションエディション版
org.iplass.mtp.impl.auth.EnterpriseAuthService

AuthServiceの設定

AuthServiceを設定します。

設定項目
項目 説明

userSessionStore

UserSessionStore

ユーザーのセッションを管理するストアオブジェクトの設定。

authorizationProvider

AuthorizationProvider

認可処理を行うプロバイダの設定。

authenticationProvider

AuthenticationProvider、複数指定可

認証処理を行うプロバイダの設定。

EnterpriseAuthServiceの設定

AuthServiceを設定します。

設定項目

AuthServiceの設定を参照してください。

UserSessionStore

classはorg.iplass.mtp.impl.auth.authenticate.UserSessionStoreの実装クラスを指定します。

実装クラス名
org.iplass.mtp.impl.auth.authenticate.DefaultUserSessionStore
DefaultUserSessionStore

標準で提供しているUserSessionStoreです。

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserSessionStoreを指定します。 以下の項目を指定可能です。

項目 説明

shareLoginSession

boolean

セッションに保持するログイン情報を複数テナントで共有するか。

sessionFixationProtection

DefaultUserSessionStore.SessionFixationProtectionMethod

セッション固定攻撃対策方法。DefaultUserSessionStore.SessionFixationProtectionMethodのenum値を指定。 次のいずれかを指定します。

CHANGE_SESSION_ID

ログイン時にセッションIDを変更します。ログイン前にセッションに保持していたデータは引き継がれます。

NEW_SESSION

ログイン時に新規にセッションを生成しなおします。ログイン前にセッションに保持していたデータは引き継がれません。

デフォルト値は CHANGE_SESSION_ID です。

AuthorizationProvider

classはorg.iplass.mtp.impl.auth.authorize.AuthorizationProviderの実装クラスを指定します。

実装クラス名
org.iplass.mtp.impl.auth.authorize.builtin.BuiltinAuthorizationProvider
BuiltinAuthorizationProvider

iPLAssの標準認可プロバイダです。

classはorg.iplass.mtp.impl.auth.authorize.builtin.BuiltinAuthorizationProviderを指定します。 以下の項目を設定可能です。

項目 説明

authorizationContextHandler

AuthorizationContextHandler、複数指定可

Permission毎の処理を表現するクラスの設定。

grantAllPermissionsToAdmin

boolean

Adminユーザーに対し全権限を与えるか。 falseが設定された場合はAdminユーザーに対しロール制御が適用されます。 デフォルト値はtrueです。

AuthorizationContextHandler

classはorg.iplass.mtp.impl.auth.authorize.builtin.AuthorizationContextHandlerの実装クラスを指定します。

実装クラス名
org.iplass.mtp.impl.auth.authorize.builtin.action.ActionAuthContextHandler
org.iplass.mtp.impl.auth.authorize.builtin.cube.CubeAuthContextHandler
org.iplass.mtp.impl.auth.authorize.builtin.entity.EntityAuthContextHandler
org.iplass.mtp.impl.auth.authorize.builtin.webapi.WebApiAuthContextHandler
org.iplass.mtp.impl.auth.authorize.builtin.workflow.WorkflowAuthContextHandler
ActionAuthContextHandler

WebApi権限の処理を行うクラスです。

classはorg.iplass.mtp.impl.auth.authorize.builtin.action.ActionAuthContextHandlerを指定します。

CubeAuthContextHandler

WebApi権限の処理を行うクラスです。

classはorg.iplass.mtp.impl.auth.authorize.builtin.cube.CubeAuthContextHandlerを指定します。

EntityAuthContextHandler

Entity権限の処理を行うクラスです。

classはorg.iplass.mtp.impl.auth.authorize.builtin.entity.EntityAuthContextHandlerを指定します。 以下の項目を指定可能です。

項目 説明

useCorrelatedSubqueryOnEntityLimitCondition

boolean

Entity権限による限定条件を付与する際、相関サブクエリにするか否か。 デフォルト値はtrueです。

WebApiAuthContextHandler

WebApi権限の処理を行うクラスです。

classはorg.iplass.mtp.impl.auth.authorize.builtin.webapi.WebApiAuthContextHandlerを指定します。

WorkflowAuthContextHandler

Workflow権限の処理を行うクラスです。

classはorg.iplass.mtp.impl.auth.authorize.builtin.workflow.WorkflowAuthContextHandlerを指定します。

AuthenticationProvider

classはorg.iplass.mtp.impl.auth.authenticate.AuthenticationProviderの実装クラスを指定します。

実装クラス名
org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.simpletoken.SimpleAuthTokenAuthenticationProvider
org.iplass.mtp.impl.auth.oauth.AccessTokenAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.configfile.ConfigFileAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.jaas.JaasAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.jee.JeeContainerManagedAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.ldap.LdapAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.preexternal.PreExternalAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.x509.X509AuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.saml.SamlAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.twostep.TwoStepAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.knowledgebased.KnowledgeBasedAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.timebased.TimeBasedAuthenticationProvider
org.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenAuthenticationProvider
BuiltinAuthenticationProvider

iPLAssの標準認証プロバイダです。 DBに保存されたユーザー情報を元にid/password認証します。 パスワードの複雑度、ロックアウト設定など、認証ポリシーにて設定可能です。

classはorg.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAuthenticationProviderを指定します。 以下の項目を設定可能です。

項目 説明

providerName

String

プロバイダ名称。 複数のプロバイダを設定する場合は、それぞれ一意となる名称を設定してください。 デフォルト値は default です。

updatable

boolean

アカウント管理モジュールの使用可否。 デフォルト値はtrueです。

true

アカウントの管理が可能となります。 本認証プロバイダにてユーザーのパスワード更新、リセットを有効化します。 通常はtrueを設定してください。

false

アカウント管理不能となります。

passwordHashSetting

PasswordHashSetting 、複数指定可

パスワードHashアルゴリズム。 複数定義することにより既存アルゴリズムを動作させつつ、新規のパスワード更新時には新しいバージョンのアルゴリズムにて動作させることが可能です。

autoLoginHandler

AutoLoginHandler

自動ログインハンドラ。 この認証プロバイダを利用した自動ログイン処理を行う場合に設定します。 デフォルトの実装として次のクラスを利用可能です。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法を設定します。 次のいずれかを指定可能です。

PasswordHashSetting

パスワードHashアルゴリズムに関する設定です。
classはorg.iplass.mtp.impl.auth.authenticate.builtin.PasswordHashSettingクラス、もしくはそのサブクラスを指定します。

標準で、以下のPasswordHashSettingを提供します。

PasswordHashSettingクラスを利用する場合は、 以下の項目を設定可能です。

項目 説明

version

String

パスワードHashアルゴリズムのバージョン値。 アルゴリズム設定を変更する場合は、世代順にインクリメントし、重複しない値を設定してください。 デフォルト値は1です。

passwordHashAlgorithm

String

設定可能なアルゴリズムについては MessageDigest アルゴリズム を参照して下さい。 デフォルト値は SHA-256 です。

systemSalt

String

システムで取り扱うソルト値(俗に言うペッパーです)。実際のソルト値はユーザ単位のランダムのソルト値とこのsystemSaltの両方が適用されます。 新しいversionを追加する度に新しい値を設定することを推奨します。 デフォルト値は iPLAssSystemSalt です。

stretchCount

int

パスワードのHashを行う際のストレッチ回数。 デフォルト値は1000です。

Argon2PasswordHashSetting

classはorg.iplass.mtp.impl.auth.authenticate.builtin.Argon2PasswordHashSettingを指定します。

Argon2によるパスワードHashアルゴリズムに関する設定です。

以下の項目を設定可能です。

項目 説明

version

String

パスワードHashアルゴリズムのバージョン値。 アルゴリズム設定を変更する場合は、世代順にインクリメントし、重複しない値を設定してください。

passwordHashAlgorithm

String

Argon2d Argon2i Argon2id のいずれかを設定可能です。 デフォルト値は Argon2id です。

hashLength

int

生成するハッシュのサイズ(byte)。デフォルト値は32です。

systemSalt

String

システムで取り扱うソルト値(俗に言うペッパーです)。Argon2におけるsecretパラメータです。 新しいversionを追加する度に新しい値を設定することを推奨します。

parallelism

int

並列数。

memorySizeKB

int

メモリサイズ(KiB)。

iterations

int

反復回数。

IdPasswordAutoLoginHandler

IdPasswordAutoLoginHandlerを利用すると、WebApi呼び出し時にHTTPヘッダーにID、パスワードを指定することにより、認証することが可能となります。 次のいずれかの方法を利用可能です。

  • カスタムヘッダーによる認証
    X-Auth-Id、X-Auth-PasswordヘッダーにそれぞれID、パスワードを指定することにより認証します。

  • BASIC認証による認証
    BASIC認証方式による認証を行います。 AuthorizationヘッダーにID、パスワードを指定します。

classはorg.iplass.mtp.impl.auth.authenticate.builtin.web.IdPasswordAutoLoginHandlerを指定します。

以下の項目を設定可能です。

項目 説明

enableBasicAuthentication

boolean

WebApi呼び出し時にBASIC認証による認証を有効化する場合はtrueを設定します。デフォルト値はfalseです。

rejectAmbiguousRequest

boolean

すでにログイン済みの場合にID、パスワードを指定された場合の挙動を制御します。デフォルト値はfalseです。

true

不正な呼び出しとしてエラーを返却します。

false

ログイン済みのセッションを優先します。

DefaultUserEntityResolver

Userエンティティを検索してユーザー情報を取得します。 ユーザーが検索出来ない場合ログイン失敗とします。

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

以下の項目を設定可能です。

項目 説明

unmodifiableUniqueKeyProperty

String

Userエンティティを検索する際のキーとするプロパティ名。 このプロパティに指定された項目=[ユニークID](uniquePrincipalTypeで指定したPrincipalの値)を条件にUserエンティティを検索します。 デフォルト値はoidです。

eagerLoadReferenceProperty

String、複数指定可

ログイン後のUserエンティティ検索時に同時に取得する参照プロパティ。 デフォルトの設定では、Userの参照プロパティであるrankおよびgroupsが指定されています。

filterCondition

String

ユーザー検索時のフィルター条件を指定可能です。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。 UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

SimpleAuthTokenAuthenticationProvider

ユーザー自身に紐づけられた、永続的なopaqueな(それ自体に意味を持たないランダムな文字列の)Tokenにより認証するプロバイダです。 Tokenは事前に 'org.iplass.mtp.auth.tokenAuthTokenInfoList' インタフェースを用いて事前に生成されている必要があります。

classはorg.iplass.mtp.impl.auth.authenticate.simpletoken.SimpleAuthTokenAuthenticationProviderを指定します。

以下の項目を設定可能です。

項目 説明

providerName

String

autoLoginHandler

AutoLoginHandler

自動ログインハンドラ。 この認証プロバイダを利用した自動ログイン処理を行う場合に設定します。 デフォルトの実装として次のクラスを利用可能です。

credentialTypeForTrust

String

信頼された認証に格上げする際に必要なCredentialの実装クラス名を指定します。 例えば、 org.iplass.mtp.auth.login.IdPasswordCredential を指定します。

accountHandleClassForTrust

String

信頼された認証に格上げする際に必要なAccountHandleの実装クラス名を指定します。 例えば、 org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAccountHandle を指定します。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法を設定します。 次のいずれかを指定可能です。

BearerTokenAutoLoginHandler

WebApi呼び出し時に、Bearer Tokenによる認証をすることが可能となります。

classはorg.iplass.mtp.impl.auth.authenticate.token.web.BearerTokenAutoLoginHandlerを指定します。

以下の項目を設定可能です。

項目 説明

rejectAmbiguousRequest

boolean

すでにログイン済みの場合にBearer Tokenを指定された場合の挙動を制御します。デフォルト値はfalseです。

true

不正な呼び出しとしてエラーを返却します。

false

ログイン済みのセッションを優先します。

bearerTokenHeaderOnly

boolean

Bearer TokenをHTTP Headerからのみ取得する場合はtrueを指定します。
デフォルト値はfalseです。

authTokenType

String

AuthTokenServiceで定義される、このBearerTokenAutoLoginHandlerが扱うAuthTokenHandlerのtypeを指定します。

DefaultUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

詳細は DefaultUserEntityResolver を参照してください。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

AccessTokenAuthenticationProvider

OAuth2.0のアクセストークンにより認証するプロバイダです。

WebApi呼び出し時に引き渡されるアクセストークンによりユーザーを認証します。アクセストークンは事前にOAuth2.0のフローに従い取得します。

classはorg.iplass.mtp.impl.auth.oauth.AccessTokenAuthenticationProviderを指定します。

以下の項目を設定可能です。

項目 説明

providerName

String

autoLoginHandler

AutoLoginHandler

自動ログインハンドラ。 この認証プロバイダを利用した自動ログイン処理を行う場合に設定します。 次のクラスを利用します。

credentialTypeForTrust

String

信頼された認証に格上げする際に必要なCredentialの実装クラス名を指定します。 例えば、 org.iplass.mtp.auth.login.IdPasswordCredential を指定します。

accountHandleClassForTrust

String

信頼された認証に格上げする際に必要なAccountHandleの実装クラス名を指定します。 例えば、 org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAccountHandle を指定します。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法を設定します。 次のいずれかを指定可能です。

BearerTokenAutoLoginHandler

classはorg.iplass.mtp.impl.auth.authenticate.token.web.BearerTokenAutoLoginHandlerを指定します。

アクセストークンを利用する場合、authTokenTypeは OAT 、rejectAmbiguousRequestは true を指定します。

詳細は BearerTokenAutoLoginHandler を参照してください。

DefaultUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

詳細は DefaultUserEntityResolver を参照してください。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

ConfigFileAuthenticationProvider

設定ファイルに記載されたアカウント情報から認証するプロバイダです。 全テナントを管理する開発者用のadminユーザーアカウントをFileに記述し、各テナントのUserエンティティにはadminユーザーがなくともメタデータ管理ができるようにする、といった用途を想定しています。

以下に設定例を示します。 なお、管理者権限のユーザーを設定ファイルに記述することになるので、ConfigFileAuthenticationProviderを使用する際は設定値の難読化も併せて使用してください。

<service>
  <interface>org.iplass.mtp.impl.auth.AuthService</interface>
  <property name="authenticationProvider" class="org.iplass.mtp.impl.auth.authenticate.configfile.ConfigFileAuthenticationProvider" >
    <property name="tenantIds" value="1" />
    <property name="tenantIds" value="2" />
    <property name="tenantIds" value="5" />
    <property name="accounts">
      <property name="id" value="configUser" />
      <property name="password" value="password000" />
      <property name="admin" value="true" />
      <property name="attributeMap">
          <property name="attr1" value="xxx" />
          <property name="attr2" value="yyy" />
          <property name="attr3" value="zzz" />
      </property>
    </property>
  </property>
  :
  :
</service>

classはorg.iplass.mtp.impl.auth.authenticate.configfile.ConfigFileAuthenticationProviderを指定します。 以下の項目を設定可能です。

項目 説明

providerName

String

accounts

AccountConfig、複数指定可

アカウント情報の設定。

tenantIds

int、複数指定可

accounts で指定したアカウントがログイン可能なテナント。

AccountConfig

以下の項目が設定可能です。

項目 説明

id

String

アカウントのID。

password

String

アカウントのパスワード。

admin

boolean

このアカウントが管理者権限を持つか。

attrributeMap

String

任意のキー名(name)と値(value)。 attrributeMap で指定した属性情報は、GroovyScript等でユーザー情報としてバインドした際に、ユーザーの属性として参照することができます。

JaasAuthenticationProvider

JAAS(Java Authentication and Authorization Service)を利用してid/password認証するプロバイダです。 設定により、iPLAssのDB内にUserエンティティが存在していなくとも認証が可能となります。

JAAS認証モジュールの定義はログイン構成ファイル(やjavax.security.auth.login.Configuration実装)で定義されている必要があります。 JAAS認証モジュールを定義する方法としてはJVM起動時のシステム変数でログイン構成ファイルを指定する方法等があります。

例: -Djava.security.auth.login.config=/someware/conf/jaas.cfg

jaas.cfg
mtplogin {
    com.sun.security.auth.module.LdapLoginModule REQUIRED
    userProvider="ldap://example.dentsusoken.com:389/dc=mtp,dc=dentsusoken,dc=com" (1)
    userFilter="(uid={USERNAME})"
    useSSL=false
    debug=true
    ;
};
1 userProvider、userFilterのUSERNAMEには適宜ldapサーバの情報を設定して下さい。

classはorg.iplass.mtp.impl.auth.authenticate.jaas.JaasAuthenticationProviderを指定します。

以下の項目を設定可能です。

項目 説明

providerName

String

entryName

String

JAAS認証設定に定義されるentry名。 デフォルト値はmtploginです。

uniquePrincipalType

java.security.Principal

当該の認証モジュールにおける、ユニークIDを指し示すPrincipalクラス名。

例えば、com.sun.security.auth.module.LdapLoginModuleを利用する場合は、com.sun.security.auth.LdapPrincipalや、com.sun.security.auth.UserPrincipalを指定可能です。 uniquePrincipalTypeが未指定の場合は、認証時に入力されたidがユニークIDとして利用されます。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法を設定します。 次のいずれかを指定可能です。

userEntityResolverの定義エントリ自体がない場合は、ユーザーEntityはaccountIdで検索されます。 DefaultUserEntityResolverの定義エントリがあり、unmodifiableUniqueKeyPropertyの定義が未設定の場合はoidで検索されます。

DefaultUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

詳細は DefaultUserEntityResolver を参照してください。

AccountBaseUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolverを指定します。

UserエンティティがDB上に存在せずともログイン可能とします。 oidにJAAS認証モジュールより返却された[ユニークID](uniquePrincipalTypeで指定したPrincipalの値)、accountId、nameに認証時に入力したidがセットされたUserエンティティを疑似的に生成します。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

JeeContainerManagedAuthenticationProvider

JavaEE(Servlet仕様)に規定される認証機構を用いて認証する認証プロバイダです。 HttpServletRequest#getUserPrincipal()で取得されるPrincipalオブジェクトにより認証します。 ログイン処理は事前にJavaEEコンテナが提供する仕組みによって、iPLAss外で行われている想定です。 設定により、iPLAssのDB内に当該Principalに該当するUserエンティティが存在していなくとも認証を可能とすることができます。

classはorg.iplass.mtp.impl.auth.authenticate.jee.JeeContainerManagedAuthenticationProviderを指定します。

以下の項目を設定可能です。

項目 説明

providerName

String

validateOnlyLogin

boolean

PrincipalがiPLAssセッションで認識しているUserと一致するかをリクエストの都度確認するか否か。 デフォルト値はfalseです。

roleAsGroup

String、複数指定可

JavaEEに規定されるrole(HttpServletRequest#isUserInRole(String))をグループコードとして扱いたい場合、グループコードとして扱いたいrole名を指定します。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法。 次のいずれかを指定可能です。 実際に指定するclassはリンク先を参照してください。

userEntityResolverの定義エントリ自体がない場合は、ユーザーEntityはaccountIdで検索されます。 DefaultUserEntityResolverの定義エントリがあり、unmodifiableUniqueKeyPropertyの定義が未設定の場合はoidで検索されます。

DefaultUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

詳細は DefaultUserEntityResolver を参照してください。

AccountBaseUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolverを指定します。

UserエンティティがDB上に存在せずともログイン可能とします。 oid、accountId、nameにJEEコンテナが返却したPrincipalオブジェクトのnameをセットしたUserエンティティを疑似的に生成します。 roleAsGroupが指定されている場合、当該roleはグループコードとして設定されます。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

LdapAuthenticationProvider

LDAPサーバ(Active Directory含む)を利用してid/password認証するプロバイダです。 設定により、iPLAssのDB内にUserエンティティが存在していなくとも認証を可能とすることができます。 その際、LDAPサーバ上で管理されているユーザーの属性値、所属グループを取得することも可能です。

classはorg.iplass.mtp.impl.auth.authenticate.ldap.LdapAuthenticationProviderを指定します。

以下の項目を設定可能です。

項目 説明

providerName

String

BuiltinAuthenticationProviderを参照してください。

jndiEnv

JNDIEnv

LDAP接続用のJNDI環境プロパティ。

userDn

String

認証時のユーザーのDNのパターン。 認証要求されたユーザーのID、テナント名はそれぞれ${userName}、${tenantName}で埋め込まれます。

cn=${userName},cn=Users,ou=${tenantName}

${userName}@example.dentsusoken.com ※Active Directoryの場合

未指定の場合は、認証処理の前にユーザーDNを取得するため、userFilterの設定値を利用してユーザーを検索、DNを取得し、その取得したユーザーDNを用いて認証します。 認証要求時のユーザーID、テナント名からユーザーDNが一意に導き出せる場合は、この値を設定することを推奨します。

getUser

boolean

ユーザー認証成功後、LDAP上のユーザーの属性値を取得するか否か。 userFilterが設定されている場合、それを利用してユーザーを検索します。 userFilterが未設定の場合、ユーザーDNを用いてユーザーを取得します。 デフォルト値はfalseです。

userBaseDn

String

ユーザー検索の際のbaseDN(のパターン)。 テナント単位にユーザーのbaseDNが分かれる場合、${tenantName}でテナント名を埋め込むことが可能です。

cn=Users,ou=${tenantName}

userBaseDnが指定されない場合、java.naming.provider.urlで指定されたルートDN以下から検索します。

userFilter

String

ユーザー検索の際のfilterのパターン。 認証要求されたユーザーのID、テナント名はそれぞれ${userName}、${tenantName}で埋め込まれます。

(&(objectClass=user)(userPrincipalName=${userName}@local))

userDn指定がされていない場合は、userFilterの設定は必須です。

uniqueKeyAttribute

String

LDAPから取得するユーザー属性のうち、ユーザーを一意に特定するための属性名。 未指定の場合は、認証要求時のユーザーIDの値がユニークキーとして設定されます。 userAttributeLDAPから取得するユーザー属性名。複数の設定が可能です。 未指定の場合は、すべての属性をLDAPより取得します。

getGroup

boolean

ユーザー認証成功後、ユーザーが所属するLDAP上のグループ情報を取得するか否か。 取得したグループ情報はiPLAssでのロール定義にて利用可能となります。 デフォルト値はfalseです。

groupBaseDn

String

グループ検索の際のbaseDN(のパターン)。 テナント単位にグループのbaseDNが分かれる場合、${tenantName}でテナント名を埋め込むことが可能です。

cn=Groups,ou=${tenantName}

groupBaseDnが指定されない場合、java.naming.provider.urlで指定されたルートDN以下から検索します。

groupFilter

String

グループ検索の際のfilterのパターン。 所属検索対象のユーザーのDN、テナント名はそれぞれ${userDn}、${tenantName}で埋め込まれます。

(&(objectClass=groupOfNames)(member=${userDn}))

getGroupがtrueの場合は、groupFilterの設定は必須です。

groupCodeAttribute

String

グループコードとして取得するLDAP上の属性名(例:cn)。 getGroupがtrueの場合は、groupCodeAttributeの設定は必須です。

groupAsTenant

boolean

ユーザーが認証対象のテナントに所属しているか否かをLDAP上のグループで判別するか。 デフォルト値はfalseです。

tenantGroupCode

String

groupAsTenantがtrueの場合、tenantGroupCodeに設定されるパターンにグループコードが一致した場合、テナントに所属していると判断し、認証成功とします。 ${tenantName}でテナント名を埋め込むことが可能です。

T-${tenantName}

テナント判断用のグループはgroupFilterで検索される結果に含まれている必要があります。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法。 次のいずれかを指定可能です。 実際に指定するclassはリンク先を参照してください。

userEntityResolverの定義エントリ自体がない場合は、ユーザーEntityはaccountIdで検索されます。 DefaultUserEntityResolverの定義エントリがあり、unmodifiableUniqueKeyPropertyの定義が未設定の場合はoidで検索されます。

JNDIEnv

設定可能な項目は、以下に説明している基本的な項目以外にも設定可能です。 詳細はこちらの内容を参照下さい。

項目 説明

java.naming.factory.initial

String

JNDIのInitialContextFactoryの指定です。 デフォルト値はcom.sun.jndi.ldap.LdapCtxFactoryです。

java.naming.provider.url

String

LDAP接続先を指し示すURL。URLには検索ルートとなるbaseDNを含むことも可能です。

ldap://example.dentsusoken.com:389/dc=mtp,dc=dentsusoken,dc=com

java.naming.security.principal

String

ユーザー検索、グループ検索が可能な管理用ユーザーのID。 未設定の場合、ユーザー検索、グループ検索の際には、認証時のユーザーアカウントを利用します。 認証ユーザーに検索権限がない場合は設定してください。

java.naming.security.credentials

String

ユーザー検索、グループ検索が可能な管理用ユーザーのパスワード。

DefaultUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

詳細はDefaultUserEntityResolverを参照してください。

AccountBaseUserEntityResolver

UserエンティティがDB上に存在せずともログイン可能とします。 LDAP認証モジュールの場合は、LDAPより返却されたユーザー属性値とUserエンティティのプロパティをマッピングすることが可能です。 attributeMappingUserエンティティのプロパティとLDAPから取得した属性とのマッピングを定義します。 プロパティ名単位に複数件の設定が可能です。

classはorg.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolverを指定します。 以下の項目を設定可能です。

項目 説明

propertyName

String

マッピング先のUserエンティティのプロパティ名。

accountAttributeName

String

マッピング元のLDAPから取得した属性値の名前。 LDAP上に定義される属性名の他、以下の設定値を利用可能です。

id

ユーザー認証時に入力されたユーザーIDです

unmodifiableUniqueKey

上記uniqueKeyAttribute定義で設定した属性値です

また、${属性値}形式を利用したGroovyTemplate形式で複数の属性を結合することが可能です。

${sn ?:''} ${givenName ?:''} ※snとgivenNameをスペースで結合

type

Class

LDAPから取得した値を変換する際の型(java.lang.String、java.lang.Booleanなど)。 未指定の場合は、LDAPより返却された型のままセットします。

defaultValue

Object

LDAPより値が取得出来なかった際のデフォルト値。 未指定の場合、かつ値が取得できなかった場合はnullがセットされます。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

Active Directoryで認証する際の注意点

Active Directoryに対してLdapAuthenticationProviderを利用する場合、ユーザー認証時のuserDnは次の形式となる点を注意してください。

[userID]@[domainName]

また、Active Directory上でユーザーオブジェクトを一意に識別可能なobjectGUIDの値をuniqueKeyAttributeとして利用する場合、objectGUIDはバイナリで格納されている点注意が必要となります。 バイナリの属性を正しくハンドリングするためにはJNDI環境プロパティ(java.naming.ldap.attributes.binary)を正しく設定する必要があります。

以下にActive Directoryを利用する際の設定例を示します。

<service>
  <interface>org.iplass.mtp.impl.auth.AuthService</interface>
  <property name="authenticationProvider" class="org.iplass.mtp.impl.auth.authenticate.ldap.LdapAuthenticationProvider" >
    <property name="providerName" value="ad" />
    <property name="jndiEnv">
      <property name="java.naming.provider.url" value="ldap://example.dentsusoken.com:389/DC=example,DC=dentsusoken,DC=com" />
      <property name="java.naming.ldap.attributes.binary" value="objectGUID" /><!-- objectGUIDはバイナリと宣言 -->
    </property>
    <property name="getUser" value="true" />
    <property name="userBaseDn" value="CN=Users" />
    <property name="userDn" value="${userName}@example.dentsusoken.com" />
    <property name="userFilter" value="(&amp;(objectClass=user)(userPrincipalName=${userName}@example.dentsusoken.com))" />
    <property name="uniqueKeyAttribute" value="objectGUID" />
    <property name="userAttribute" value="name" />
    <property name="userAttribute" value="sn" />
    <property name="userAttribute" value="givenName" />
    <property name="getGroup" value="true" />
    <property name="groupBaseDn" value="CN=Groups" />
    <property name="groupFilter" value="(&amp;(objectClass=groupOfNames)(member=${userDn}))" />
    <property name="groupCodeAttribute" value="cn" />
    <property name="groupAsTenant" value="true" />
    <property name="tenantGroupCode" value="T-${tenantName}" />

    <property name="userEntityResolver" class="org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver">
      <property name="attributeMapping">
        <property name="propertyName" value="oid" />
        <property name="accountAttributeName" value="objectGUID" />
        <property name="type" value="java.lang.String" /><!-- byte[]で取得されるので、文字列に変換 -->
      </property>
      <property name="attributeMapping">
        <property name="propertyName" value="name" />
        <property name="accountAttributeName" value="${sn ?:''} ${givenName ?:''}" />
        <property name="type" value="java.lang.String" />
      </property>
      <property name="attributeMapping">
        <property name="propertyName" value="firstName" />
        <property name="accountAttributeName" value="givenName" />
      </property>
      <property name="attributeMapping">
        <property name="propertyName" value="lastName" />
        <property name="accountAttributeName" value="sn" />
      </property>
      <property name="attributeMapping">
        <property name="propertyName" value="admin" />
        <property name="defaultValue" value="false" class="java.lang.Boolean"/>
      </property>
    </property>
  </property>
  :
  :
</service>
PreExternalAuthenticationProvider

SSO製品(またはそれに類する独自認証基盤)におけるエージェント型、リバースプロキシ型での認証機構に対応するための認証プロバイダです。 通常これらのSSO製品を利用した場合、認証情報はHTTPヘッダーやHttpServletRequestのattribute、HttpSessionのattributeとしてアプリケーション側に連携されます。 当認証プロバイダにおいては、これら外部認証機構から連携された情報を元にiPLAss上での認証処理を行います。 ログイン画面、またログイン処理は外部認証機構側で提供され、iPLAss外で行われている想定です。 設定により、iPLAssのDB内に当該ユーザーに該当するUserエンティティが存在していなくとも認証を可能とすることができます。

classはorg.iplass.mtp.impl.auth.authenticate.preexternal.PreExternalAuthenticationProviderを指定します。 以下の項目を設定可能です。

項目 説明

providerName

String

validateOnlyLogin

boolean

連携されるユーザー情報がiPLAssセッションで認識しているUserと一致するかをリクエストの都度確認するか否か。 デフォルト値はfalseです。

sourceType

SourceType

外部認証機構から渡されるユーザー情報が格納されている場所。

accountIdAttribute

String

外部認証機構から渡されるユーザー情報のうちアカウントIDが格納されているキー名。

uniqueKeyAttribute

String

外部認証機構から渡されるユーザー情報のうちユニークキー(OIDに相当)が格納されているキー名。 未指定の場合は、accoutIdAttributeに指定された値がユニークキーとして利用されます。

userAttribute

String、複数指定可

外部認証機構から渡されるユーザー情報のうちユーザーの属性として扱う値のキー名。

logoutUrl

String

外部認証機構のログアウト処理を行うURL。 iPLAssの標準画面でログアウトが呼び出された場合、当該画面へリダイレクトします。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法。 次のいずれかを指定可能です。 実際に指定するclassはリンク先を参照してください。

userEntityResolverの定義エントリ自体がない場合、かつuniqueKeyAttributeが未指定の場合ユーザーEntityはaccountIdで検索されます。 上記以外の場合、unmodifiableUniqueKeyPropertyの定義が未設定の場合はoidで検索されます。

SourceType

外部認証機構から渡されるユーザー情報が格納されている場所を指定します。

HEADER

ヘッダーからgetHeader(String)にてユーザー情報を取得します

REQUEST

HttpServletRequestからgetAttribute(String)にてユーザー情報を取得します

SESSION

HttpSessionからgetAttribute(String)にてユーザー情報を取得します

DefaultUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

詳細は DefaultUserEntityResolver を参照してください。

AccountBaseUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolverを指定します。

詳細は AccountBaseUserEntityResolver を参照してください。 外部認証機構から渡されたuserAttributeの値をUserエンティティのプロパティにマッピング可能です。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

X509AuthenticationProvider

X509クライアント証明書を用いて認証する認証プロバイダです。 X509クライアント証明書自体の正当性はSSL/TLSレイヤーで検証されているものとして処理します(iPLAss内で再検証は行いません)。

X509AuthenticationProviderは単独で認証プロバイダとして利用される他、TwoStepAuthenticationProviderのセカンダリの認証要素としての利用も可能です。 単独の認証プロバイダとして利用する場合、証明書内のCNがaccountIdと一致している必要がありますが、TwoStepAuthenticationProviderのセカンダリの認証要素として利用する場合は、CNとaccountIdの一致は必須ではありません。

また、単独の認証プロバイダとして利用する場合、クライアント証明書の性質上、ログアウト処理を行ったとしても、それに引き続くリクエストですぐに再認証されてしまいます。

設定により、iPLAssのDB内に当該ユーザーに該当するUserエンティティが存在していなくとも認証を可能とすることができます。

classはorg.iplass.mtp.impl.auth.authenticate.x509.X509AuthenticationProviderを指定します。 以下の項目を設定可能です。

項目 説明

providerName

String

validateOnlyLogin

boolean

連携されるユーザー情報がiPLAssセッションで認識しているUserと一致するかをリクエストの都度確認するか否か。 デフォルト値はfalseです。

twoStep2ndFactor

boolean

TwoStepAuthenticationProviderのセカンダリの認証要素としての設定の場合、trueに設定する必要があります。 デフォルト値はfalseです。

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法。 次のいずれかを指定可能です。 実際に指定するclassはリンク先を参照してください。

userEntityResolverの定義エントリ自体がない場合は、ユーザーEntityはaccountIdで検索されます。 DefaultUserEntityResolverの定義エントリがあり、unmodifiableUniqueKeyPropertyの定義が未設定の場合はoidで検索されます。

DefaultUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolverを指定します。

詳細は DefaultUserEntityResolver を参照してください。

AccountBaseUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolverを指定します。

UserエンティティがDB上に存在せずともログイン可能とします。 oid、accountId、nameに証明書内のCNをセットしたUserエンティティを疑似的に生成します。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

SamlAuthenticationProvider

SAML2.0ベースでSSO/SLOを行う認証プロバイダです。 iPLAssはSAML2.0仕様のSPモードをサポートします。 外部のIdPにて認証された認証情報を連携し、iPLAssにログイン可能です。 SamlAuthenticationProviderを利用する際は、別途 AuthenticationPolicyでのSAML有効化の設定が必要です。

classはorg.iplass.mtp.impl.auth.authenticate.saml.SamlAuthenticationProviderを指定します。

以下の項目を設定可能です。

項目 説明

providerName

String

userEntityResolver

UserEntityResolver

認証成功後のユーザーEntityの取得方法。 次のいずれかを指定可能です。 実際に指定するclassはリンク先を参照してください。

SamlUserEntityResolver

メタデータとして設定されたSAML定義のNameIDのマッピングに従いユーザーEntityを検索します。

classはorg.iplass.mtp.impl.auth.authenticate.saml.SamlUserEntityResolverを指定します。

以下の項目を設定可能です。

項目 説明

eagerLoadReferenceProperty

String、複数指定可

ログイン後のUserエンティティ検索時に同時に取得する参照プロパティ。 デフォルトの設定では、Userの参照プロパティであるrankおよびgroupsが指定されています。

filterCondition

String

ユーザー検索時のフィルター条件。

AccountBaseUserEntityResolver

classはorg.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolverを指定します。

詳細は AccountBaseUserEntityResolver を参照してください。 SAML経由で渡されたユーザー属性値をUserエンティティのプロパティにマッピング可能です。

UserEntityResolverを実装する独自クラス

classはorg.iplass.mtp.impl.auth.authenticate.UserEntityResolverを実装する独自クラスを指定します。

org.iplass.mtp.impl.auth.authenticate.UserEntityResolverの実装クラスにてUserエンティティを取得するロジックを記述します。

TwoStepAuthenticationProvider

2step認証を行う認証プロバイダです。 プライマリの認証プロバイダを1つ、セカンダリの認証プロバイダを1つ以上設定します。 設定された認証プロバイダ、および認証ポリシーにおける設定により、2ステップ認証処理が実行されます。 認証ポリシーの詳細については[ユーザー-管理]シートを参照下さい。

TwoStepAuthenticationProviderの設定では、以下の例のようにプライマリ、セカンダリのAuthenticationProviderを内包する形で定義します。

<service>
  <interface>org.iplass.mtp.impl.auth.AuthService</interface>
  <property name="authenticationProvider" class="org.iplass.mtp.impl.auth.authenticate.twostep.TwoStepAuthenticationProvider">
    <property name="primary" class="org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAuthenticationProvider">
      <property name="updatable" value="true" />
      <property name="providerName" value="default" />
      <property name="passwordHashSettings">
        <property name="version" value="1" />
        <property name="passwordHashAlgorithm" value="SHA-256" />
        <property name="systemSalt" value="salt" />
        <property name="stretchCount" value="3000" />
      </property>
    </property>

    <property name="secondary" class="org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeAuthenticationProvider" />
    <property name="secondary" class="org.iplass.mtp.impl.auth.authenticate.timebased.TimeBasedAuthenticationProvider">
      <property name="maxFailureCount" value="5" />
      <property name="failureExpirationInterval" value="10" />
      <property name="unmodifiableUniqueKeyResolver" class="org.iplass.mtp.impl.auth.authenticate.timebased.DefaultUnmodifiableUniqueKeyResolver">
        <property name="unmodifiableUniqueKeyProperty" value="oid" />
      </property>
    </property>
    <property name="secondary" class="org.iplass.mtp.impl.auth.authenticate.knowledgebased.KnowledgeBasedAuthenticationProvider">
  </property>
  :
  :
</service>

classはorg.iplass.mtp.impl.auth.authenticate.twostep.TwoStepAuthenticationProviderを指定します。 以下の項目を設定可能です。

項目 説明

providerName

String

BuiltinAuthenticationProvider参照。 未指定の場合は、primaryに定義されるproviderNameが適用されます。

primary

AuthenticationProvider

プライマリのAuthenticationProvider。 指定可能(※)なAuthenticationProviderは認証時のCredentialとしてIdPasswordCredentialを利用する次の認証プロバイダ、もしくはカスタムの認証プロバイダです。

※ iPLAss GEM提供のログイン認証処理を利用する場合

secondary

AuthenticationProvider

セカンダリのAuthenticationProviderを指定します。 secondaryは複数指定可能です。 次のいずれかの認証プロバイダを指定可能(※)です。

※ iPLAss GEM提供のログイン認証処理を利用する場合

OnetimeCodeAuthenticationProvider

ワンタイムの認証コードを用いて認証を行うプロバイダです。 通常、2step認証時のセカンダリの認証プロバイダとして利用します。 ワンタイムコードの生成方式は、別途OnetimeCodeGeneratorServiceにて定義します。 ワンタイムコード生成方式のうちいずれを利用するかの設定は認証ポリシーに定義します。 詳細は認証機能の2段階認証を参照してください。

OnetimeCodeAuthenticationProvider自体にて設定可能な項目はありません。

classはorg.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeAuthenticationProviderを指定します。

TimeBasedAuthenticationProvider

時間ベース認証(2段階認証アプリで認証)を行うプロバイダです。 通常、2step認証時のセカンダリの認証プロバイダとして利用します。 詳細は認証機能の2段階認証を参照してください。

以下の項目を設定可能です。

項目 説明

maxFailureCount

int

最大認証失敗回数。デフォルト値は5です。

failureExpirationInterval

int

認証失敗の有効期限(分)です。指定した時間以内に認証失敗した回数を失敗回数とします。 デフォルト値は10です。

unmodifiableUniqueKeyResolver

UnmodifiableUniqueKeyResolver

Userエンティティの一意キーを検索する方法を設定します。 DefaultUnmodifiableUniqueKeyResolver (デフォルト)
UnmodifiableUniqueKeyResolverを実装する独自クラス

DefaultUnmodifiableUniqueKeyResolver

Userエンティティを検索してUserエンティティの一意キーを取得します。

classはorg.iplass.mtp.impl.auth.authenticate.timebased.DefaultUnmodifiableUniqueKeyResolverを指定します。

以下の項目を設定可能です。

項目 説明

unmodifiableUniqueKeyProperty

String

Userエンティティを検索する際に取得する一意キーのプロパティ名。 デフォルト値はoidです。

DefaultUnmodifiableUniqueKeyResolverを実装する独自クラス

classはorg.iplass.mtp.auth.login.timebased.UnmodifiableUniqueKeyResolverを実装する独自クラスを指定します。

org.iplass.mtp.auth.login.timebased.UnmodifiableUniqueKeyResolverの実装クラスにてUserエンティティの一意キーを取得するロジックを記述します。

KnowledgeBasedAuthenticationProvider

ナレッジベース認証(秘密の質問に答えることで認証する)を行うプロバイダです。 通常、2step認証時のセカンダリの認証プロバイダとして利用します。 Userエンティティに保持するプロパティを質問項目として利用することが可能です。 どのプロパティを質問項目とするか、質問の数などの設定は、認証ポリシーにて行います。 詳細は認証機能の2段階認証を参照してください。

KnowledgeBasedAuthenticationProvider自体にて設定可能な項目はありません。

classはorg.iplass.mtp.impl.auth.authenticate.knowledgebased.KnowledgeBasedAuthenticationProviderを指定します。

RememberMeTokenAuthenticationProvider

RememberMe機能(ログインしたままにする機能)を実現する認証プロバイダです。 前回ログイン時にブラウザCookie(永続Cookie)に保存されたトークンによって認証を行うプロバイダです。 ログインしたままにする有効期間の設定などは、認証ポリシーにいて行います。 詳細は認証機能のRemember Meを参照してください。

RememberMeTokenAuthenticationProviderは、実際の各種AuthenticationProviderにRememberMe機能を付与するラッパーとして動作します。 設定ファイルにはRememberMe機能を付与したいAuthenticationProviderを内包する形で定義します。

設定例を以下に示します。

<service>
  <interface>org.iplass.mtp.impl.auth.AuthService</interface>
  <property name="authenticationProvider"
        class="org.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenAuthenticationProvider">
    <property name="authenticationProvider" class="org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAuthenticationProvider">
      <property name="updatable" value="true" />
      <property name="providerName" value="default" />
      :
      :
    </property>
  </property>
  :
  :
</service>

classはorg.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenAuthenticationProviderを指定します。

以下の項目を設定可能です。

項目 説明

providerName

String

BuiltinAuthenticationProvider参照 未指定の場合は、内包するauthenticationProviderに定義されるproviderNameが適用されます。

authenticationProvider

AuthenticationProvider

実際の認証処理を行うAuthenticationProvider。

deleteTokenOnFailure

boolean

認証失敗時にトークンを削除するか否かを設定します。デフォルトはtrueです。

clientStore

AuthTokenClientStore

クライアント側のトークン保存方法の設定です。 デフォルトで次の実装クラスを提供します。

autoLoginHandler

AutoLoginHandler

自動ログインハンドラ。 RememberMeTokenAuthenticationProviderに実装されているRememberMeトークンを利用した自動ログイン処理をカスタマイズしたい場合に、カスタムのAutoLoginHandlerを設定します。

AuthTokenCookieStore

クライアント側のトークン保存方法としてCookieを利用するクラスです。

classはorg.iplass.mtp.impl.auth.authenticate.token.web.AuthTokenCookieStoreを指定します。 以下の項目を設定可能です。

項目 説明

cookieName

String

Cookie名。

設定例
<service>
    <interface>org.iplass.mtp.impl.auth.AuthService</interface>
    <class>org.iplass.mtp.impl.auth.EnterpriseAuthService</class>
        <property name="authenticationProvider" class="org.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenAuthenticationProvider">
        <property name="deleteTokenOnFailure" value="true" />
        <property name="clientStore" class="org.iplass.mtp.impl.auth.authenticate.token.web.AuthTokenCookieStore">
            <property name="cookieName" value="iprmtkn" />
        </property>

        <property name="authenticationProvider" class="org.iplass.mtp.impl.auth.authenticate.twostep.TwoStepAuthenticationProvider">
            <property name="primary" class="org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAuthenticationProvider">
                <property name="updatable" value="true" />
                <property name="providerName" value="default" />

                <!-- if load custom reference property at login, set userEntityResolver.eagerLoadReferenceProperty -->
                <!--
                <property name="userEntityResolver" class="org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver">
                    <property name="eagerLoadReferenceProperty" value="rank" />
                    <property name="eagerLoadReferenceProperty" value="groups" />
                    <property name="eagerLoadReferenceProperty" value="yourCustomReference" />
                </property>
                -->

                <property name="passwordHashSettings">
                    <property name="version" value="1" />
                    <property name="passwordHashAlgorithm" value="SHA-256" />
                    <property name="systemSalt" value="yourSystemSalt" />
                    <property name="stretchCount" value="1000" />
                </property>
            </property>
            <property name="secondary" class="org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeAuthenticationProvider">
            </property>
      <property name="secondary" class="org.iplass.mtp.impl.auth.authenticate.timebased.TimeBasedAuthenticationProvider">
        <property name="maxFailureCount" value="5" />
        <property name="failureExpirationInterval" value="10" />
        <property name="unmodifiableUniqueKeyResolver" class="org.iplass.mtp.impl.auth.authenticate.timebased.DefaultUnmodifiableUniqueKeyResolver">
          <property name="unmodifiableUniqueKeyProperty" value="oid" />
        </property>
            </property>
            <property name="secondary" class="org.iplass.mtp.impl.auth.authenticate.knowledgebased.KnowledgeBasedAuthenticationProvider">
            </property>
            <property name="secondary" class="org.iplass.mtp.impl.auth.authenticate.x509.X509AuthenticationProvider">
                <property name="twoStep2ndFactor" value="true" />
            </property>
        </property>
    </property>
    <property name="authenticationProvider" class="org.iplass.mtp.impl.auth.authenticate.saml.SamlAuthenticationProvider">
         <property name="updatable" value="false" />
         <property name="providerName" value="saml" />
    </property>

    <property name="authorizationProvider" class="org.iplass.mtp.impl.auth.authorize.builtin.BuiltinAuthorizationProvider">
        <property name="grantAllPermissionsToAdmin" value="true" />

        <property name="authorizationContextHandler" class="org.iplass.mtp.impl.auth.authorize.builtin.action.ActionAuthContextHandler" />
        <property name="authorizationContextHandler" class="org.iplass.mtp.impl.auth.authorize.builtin.webapi.WebApiAuthContextHandler" />
        <property name="authorizationContextHandler" class="org.iplass.mtp.impl.auth.authorize.builtin.cube.CubeAuthContextHandler" />
        <property name="authorizationContextHandler" class="org.iplass.mtp.impl.auth.authorize.builtin.entity.EntityAuthContextHandler">
            <property name="useCorrelatedSubqueryOnEntityLimitCondition" value="true" />
        </property>
        <property name="authorizationContextHandler" class="org.iplass.mtp.impl.auth.authorize.builtin.workflow.WorkflowAuthContextHandler" />
    </property>
</service>

3.10. AuthTokenService

認証トークンを管理するためのサービスです。

インタフェース名

org.iplass.mtp.impl.auth.authenticate.token.AuthTokenService

実装クラス名

org.iplass.mtp.impl.auth.authenticate.token.AuthTokenService

AuthTokenServiceの設定

AuthTokenServiceを設定します。

設定項目
項目 説明

storeMap

AuthTokenStore、Map形式

AuthTokenStoreの設定。 keyにstore名を指定し、Map形式で定義します。 最低限、 default といった名前のAuthTokenStoreを1つ定義する必要があります。

handler

AuthTokenHandler、複数指定可

AuthTokenHandlerの設定。

AuthTokenStore

classはorg.iplass.mtp.impl.auth.authenticate.token.AuthTokenStoreの実装クラスを指定します。

標準で、以下のAuthTokenStoreを提供します。

RdbAuthTokenStore

classはorg.iplass.mtp.impl.auth.authenticate.token.RdbAuthTokenStoreを指定します。

RDBで認証トークンを管理します。

項目 説明

saveDetailAsJson

boolean

AuthTokenをJSON形式で保存するか否かを指定します。 JSON形式で保存する場合、JacksonのObjectMapperを利用してAuthTokenの属性値が保存されます(JSON形式で保存する場合は、保存対象のAuthTokenを実装するクラスがそれに対応している必要があります)。
falseの場合は、Javaデフォルトのシリアライズ機構にてバイナリデータとして保存されます。
デフォルト値はfalseです。

authTokenStore

AuthTokenStore

認証トークンを保存する実際のAuthTokenStoreです。

CachableAuthTokenStore

classはorg.iplass.mtp.impl.auth.authenticate.token.CachableAuthTokenStoreを指定します。

内包するauthTokenStoreにキャッシュ機能を付与します。

項目 説明

cacheStoreName

String

CacheService に定義されるCacheStore(CacheStoreFactory)の名前を指定します。 未指定の場合のデフォルト値は mtp.auth.cachableAuthTokenStore/DEFAULT です。

authTokenStore

AuthTokenStore

認証トークンを保存する実際のAuthTokenStoreです。

CacheOnlyAuthTokenStore

classはorg.iplass.mtp.impl.auth.authenticate.token.CacheOnlyAuthTokenStoreを指定します。

CachableAuthTokenStoreと異なり、バックエンドの永続化先を持たず、CacheStoreのみに保存します。

項目 説明

cacheStoreName

String

CacheService に定義されるCacheStore(CacheStoreFactory)の名前を指定します。 未指定の場合のデフォルト値は mtp.auth.cacheOnlyAuthTokenStore/DEFAULT です。

クラスタ環境においては、CacheStoreFactoryはRedisCacheStoreFactoryなど複数のAPサーバから同一のキャッシュを参照可能なCacheStoreFactoryを利用してください。
AuthTokenHandler

classはorg.iplass.mtp.impl.auth.authenticate.token.AuthTokenHandlerの実装クラスを指定します。

標準で、以下のAuthTokenHandlerを提供します。

RememberMeTokenHandler

classはorg.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenHandlerを指定します。

RememberMeTokenを取り扱います。以下の項目を設定可能です。

項目 説明

store

String

使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

type

String

種別。未設定の場合、 REMME となります。

hashSettings

HashSetting、複数指定可

Tokenのハッシュ化有無、方式の設定。 未指定の場合はプレーンテキストで保存します。

secureRandomGeneratorName

String

SecureRandomService に定義されるToken文字列の生成器を指定。 未設定の場合、 default のSecureRandomGeneratorが利用されます。

visible

boolean

AuthTokenInfoList 経由で可視かどうか。デフォルト値はtrueです。

HashSetting

classはorg.iplass.mtp.impl.auth.authenticate.token.HashSettingを指定します。

以下の項目を設定可能です。

項目 説明

version

String

バージョンを特定する文字列を指定。

hashAlgorithm

String

ハッシュのアルゴリズムを指定。 SHA-256 など。

stretchCount

int

ストレッチ回数。デフォルトは1です。

SimpleAuthTokenHandler

classはorg.iplass.mtp.impl.auth.authenticate.simpletoken.SimpleAuthTokenHandlerを指定します。

SimpleAuthTokenを取り扱います。 SimpleAuthTokenはそれ自体が紐付くユーザーとしてのアクセスを許可します。 SimpleAuthTokenは明示的に削除されるまで永続的に有効です。

以下の項目を設定可能です。

項目 説明

store

String

使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

type

String

種別。未設定の場合、 SAT となります。

hashSettings

HashSetting、複数指定可

Tokenのハッシュ化有無、方式の設定。 未指定の場合はプレーンテキストで保存します。

secureRandomGeneratorName

String

SecureRandomService に定義されるToken文字列の生成器を指定。 未設定の場合、 default のSecureRandomGeneratorが利用されます。

visible

boolean

AuthTokenInfoList 経由で可視かどうか。デフォルト値はtrueです。

TimeBasedOneTimePasswordHandler

classはorg.iplass.mtp.impl.auth.authenticate.timebased.TimeBasedOneTimePasswordHandlerを指定します。 このAuthTokenHandlerは、2段階認証機能における時間ベース認証にて利用されます。 2段階認証の認証におけるシークレットキーを取り扱います。

以下の項目を設定可能です。

項目 説明

store

String

使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

type

String

種別。未設定の場合、 TSK となります。

timeStepWindowSize

int

time stepの有効期間。1を設定した場合、現在のtime stepの前後1ステップのワンタイムパスワードも有効とみなします。デフォルト値は1です。
1ステップの時間は30秒固定です。

AccessTokenHandler

classはorg.iplass.mtp.impl.auth.oauth.token.opaque.AccessTokenHandlerを指定します。

OAuth2.0のAccessTokenおよび、RefreshTokenを取り扱います。

以下の項目を設定可能です。

項目 説明

store

String

使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

refreshTokenStore

String

RefreshTokenの保存に使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

type

String

AccessTokenを識別するための種別。未設定の場合、 OAT となります。

refreshTokenType

String

RefreshTokenの種別。未設定の場合、 ORT となります。

hashSettings

HashSetting、複数指定可

Tokenのハッシュ化有無、方式の設定。 未指定の場合はプレーンテキストで保存します。この設定はAccessToken、RefreshToken両方に適用されます。

secureRandomGeneratorName

String

SecureRandomService に定義されるAccessTokenのToken文字列の生成器を指定。 未設定の場合、 default のSecureRandomGeneratorが利用されます。

refreshTokenSecureRandomGeneratorName

String

SecureRandomService に定義されるRefreshTokenのToken文字列の生成器を指定。 未設定の場合、 default のSecureRandomGeneratorが利用されます。

visible

boolean

AuthTokenInfoList 経由で可視かどうか。デフォルト値はtrueです。

OAuthClientCredentialHandler

classはorg.iplass.mtp.impl.auth.oauth.OAuthClientCredentialHandlerを指定します。

OAuth2.0における、ClientおよびResourceServerのCredential(client_id、client_secret)を取り扱います。

以下の項目を設定可能です。

項目 説明

store

String

使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

type

String

種別の定義です。
Client用には OC を指定します。 ResourceServer用には ORS を指定します。

hashSettings

HashSetting、複数指定可

Tokenのハッシュ化有無、方式の設定。 未指定の場合はプレーンテキストで保存します。

secureRandomGeneratorName

String

SecureRandomService に定義されるToken文字列の生成器を指定。 未設定の場合、 default のSecureRandomGeneratorが利用されます。

oldCredentialValidDays

int

過去に生成したCredentialの有効期間(日)を指定可能です。 未指定の場合は過去のCredentialは即座に破棄されます。

WebhookAuthTokenHandler

classはorg.iplass.mtp.impl.webhook.WebhookAuthTokenHandlerを指定します。

Webhook通知におけるWebhookEndPointの認証情報を取り扱います。

以下の項目を設定可能です。

項目 説明

store

String

使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

type

String

WebhookAuthTokenを識別するための種別。デフォルト値は、 WEBHOOKATH です。

CookieRiskEvaluationTokenHandler

classはorg.iplass.mtp.impl.auth.authenticate.builtin.policy.riskevals.web.CookieRiskEvaluationTokenHandlerを指定します。

このAuthTokenHandlerは、2段階認証機能におけるリスクベース認証(CookieToken)にて利用されます。

以下の項目を設定可能です。

項目 説明

store

String

使用するAuthTokenStoreの名前。未指定の場合は、 default のAuthTokenStoreが使用されます。

type

String

種別。未設定の場合、 RBA となります。

hashSettings

HashSetting、複数指定可

Tokenのハッシュ化有無、方式の設定。 未指定の場合はプレーンテキストで保存します。

secureRandomGeneratorName

String

SecureRandomService に定義されるToken文字列の生成器を指定。 未設定の場合、 default のSecureRandomGeneratorが利用されます。

設定例
<service>
    <interface>org.iplass.mtp.impl.auth.authenticate.token.AuthTokenService</interface>
    <property name="storeMap">
        <property name="default" class="org.iplass.mtp.impl.auth.authenticate.token.RdbAuthTokenStore" />
        <property name="cache" class="org.iplass.mtp.impl.auth.authenticate.token.CachableAuthTokenStore">
            <property name="authTokenStore" class="org.iplass.mtp.impl.auth.authenticate.token.RdbAuthTokenStore" />
        </property>
    </property>

    <property name="handler" class="org.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenHandler">
        <property name="type" value="REMME" />
        <property name="store" value="default" />
    </property>
    <property name="handler" class="org.iplass.mtp.impl.auth.authenticate.simpletoken.SimpleAuthTokenHandler">
        <property name="type" value="SAT" />
        <property name="store" value="cache" />
        <property name="secureRandomGeneratorName" value="moreSecure" />
        <property name="hashSettings">
            <property name="version" value="1" />
            <property name="hashAlgorithm" value="SHA-256" />
        </property>
    </property>
</service>

3.11. AutoNumberTypeCounter

AutoNumber型の採番を行うサービスです。 EntityのプロパティとしてAutoNumber型を利用する場合のCounterServiceの定義です。 採番時に飛び番を許容するかどうかで利用する設定が変わります。 許容する場合は AutoNumberTypeCounterAcceptSkip の設定を、 許容しない場合は AutoNumberTypeCounterNoSkip の設定を利用します。

インタフェース名

org.iplass.mtp.impl.counter.CounterService

実装クラス名

キャッシュなし
org.iplass.mtp.impl.counter.RdbTableCounterService
キャッシュあり
org.iplass.mtp.impl.counter.CachableRdbTableCounterService

RdbTableCounterServiceの設定

RdbTableCounterServiceを設定します。

設定項目
項目 説明

separateTransaction

boolean

採番時にトランザクションを分けるか。デフォルト値はfalseです。

retryCount

int

採番失敗時にリトライする回数。デフォルト値は3です。

counterTypeName

String

採番タイプの名前。デフォルト値は defaultCounter です

CachableRdbTableCounterServiceの設定

CachableRdbTableCounterServiceを設定します。

設定項目
項目 説明

separateTransaction

boolean

採番時にトランザクションを分けるか。デフォルト値はfalseです。

retryCount

int

採番失敗時にリトライする回数。デフォルト値は3です。

counterTypeName

String

採番タイプの名前。デフォルト値は defaultCounter です

cacheSize

int

キャッシュサイズ。デフォルト値は20です。

設定例
<service name="AutoNumberTypeCounterAcceptSkip">
    <interface>org.iplass.mtp.impl.counter.CounterService</interface>
    <!-- without cache RdbTableCounterService -->
    <!--
    <class>org.iplass.mtp.impl.counter.RdbTableCounterService</class>
    <property name="counterTypeName" value="AutoNumberTypeCounter" />
    <property name="separateTransaction" value="true" />
    <property name="retryCount" value="3" />
     -->
    <!-- with cache RdbTableCounterService -->
    <class>org.iplass.mtp.impl.counter.CachableRdbTableCounterService</class>
    <property name="counterTypeName" value="AutoNumberTypeCounter" />
    <property name="cacheSize" value="20" />
    <property name="retryCount" value="3" />
</service>
<service name="AutoNumberTypeCounterNoSkip">
    <interface>org.iplass.mtp.impl.counter.CounterService</interface>
    <class>org.iplass.mtp.impl.counter.RdbTableCounterService</class>
    <property name="counterTypeName" value="AutoNumberTypeCounter" />
    <property name="separateTransaction" value="false" />
</service>

3.12. AWSSetting

AWSの設定を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.aws.AWSSetting

実装クラス名

org.iplass.mtp.impl.aws.AWSSetting

AWSSettingの設定

AWSSettingを設定します。

設定項目
項目 説明

accessKeyId

String

AWSのアクセスキーID

secretKey

String

AWSのシークレットキー

clientConfiguration

ClientConfiguration

AWSClient側の設定(デフォルト)

configurationMap

ClientConfiguration、Map形式

AWSClient側の個別設定。個別設定しない場合は、デフォルトの clientConfiguration が適用されます。

ClientConfiguration

classはcom.amazonaws.ClientConfigurationです。 AWSの各種サービスに接続する際の設定を行うことが可能です。

設定例
<service>
    <interface>org.iplass.mtp.impl.aws.AWSSetting</interface>
    <class>org.iplass.mtp.impl.aws.AWSSetting</class>

    <!--
    <property name="accessKeyId" value="input your access key id" />
    <property name="secretKey" value="input your secret key" />
    -->

    <!-- デフォルトのAWSClient設定 -->
    <property name="clientConfiguration">
        <property name="maxConnections" value="100" />
    </property>

    <property name="configurationMap">
        <!-- S3LobStoreの個別設定 -->
        <property name="S3LobStore" class="com.amazonaws.ClientConfiguration">
            <property name="maxConnections" value="50" />
        </property>

        <!-- AWSHttpSenderの個別設定 -->
        <property name="AWSHttpSender" class="com.amazonaws.ClientConfiguration">
            <property name="connectionTimeout" value="10000" />
        </property>
    </property>
</service>

3.13. BinaryMetaDataService

バイナリ形式のメタデータをバイト配列でメモリ内に保持しない仕組みを提供する為のサービスです。

インタフェース名

org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService

実装クラス名

org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService

BinaryMetaDataServiceの設定

バイナリ形式のメタデータの保持に関する動作について設定します。

設定項目
項目 説明

keepInMemoryThreshold

int

メモリ内に保持するサイズの閾値(バイト)。 サイズが閾値を超える場合は一時ファイルとして保持されます。デフォルト値は65536(64KiB)です。

cacheMemoryThreshold

int

メモリにキャッシュするサイズの閾値(バイト)。 サイズが閾値以下の場合はメモリにキャッシュされます。デフォルト値は1048576(1024KiB)です。

xmlBinaryChunkSize

int

メタデータのXMLにマーシャルまたはアンマーシャルする際のチャンクサイズ(バイト)。 デフォルト値は262144(256KiB)です。

deleteTempFileOnDestroy

boolean

サービスが破棄される、あるいは仮想マシン(VM)がシャットダウンされる際に一時ファイルを削除するか。デフォルト値はtrueです。

tempFileDir

String

一時ファイルが保存されるディレクトリのパス。 設定しない場合は"java.io.tmpdir"のディレクトリパスが使用されます。

設定例
<service>
    <interface>org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService</interface>
    <property name="keepInMemoryThreshold" value="65536" />
    <property name="cacheMemoryThreshold" value="1048576" />
    <property name="xmlBinaryChunkSize" value="262144" />
    <property name="deleteTempFileOnDestroy" value="true" />
    <!-- if temp dir not specified, use "java.io.tmpdir"'s dir -->
    <!--
    <property name="tempFileDir" value="/tmp" />
    -->
</service>

3.14. CacheService

キャッシュストアを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.cache.CacheService

実装クラス名

org.iplass.mtp.impl.cache.CacheService

CacheServiceの設定

CacheServiceを設定します。

設定項目
項目 説明

defaultFactory

CacheStoreFactory

標準のCacheStoreFactoryの設定。

"defaultFactory"以外の任意の文字列

CacheStoreFactory、複数指定可

個別のCacheStoreFactoryの設定。

CacheStoreFactory

classはorg.iplass.mtp.impl.cache.store.CacheStoreFactoryの実装クラスを指定します。

標準で、以下のCacheStoreFactoryを提供します。

共通設定

各CacheStoreFactoryの共通の設定項目です。 以下の項目を設定可能です。

項目 説明

namespace

String

キャッシュを行う名前空間。

namespacePattern

String

キャッシュを行う名前空間のパターン。パターンは正規表現で記述します。

indexCount

int

インデックスの数。デフォルト値は0です。

concurrencyLevelOfCacheHandler

int

CacheHandlerの並列実行数。デフォルト値は4です。

RdbCacheStoreFactory

Rdbを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

cacheKeyResolver

CacheKeyResolver

CacheKeyResolverの設定。

cacheIndexResolver

CacheKeyResolver、複数指定可

インデックスのCacheKeyResolverの設定。

connectionFactoryName

String

接続ファクトリ名。

rdbArapterName

String

RdbAdapter名。

tableName

String

キャッシュを保存するテーブル名。デフォルト値は CACHE_STORE です。

retryCount

int

キャッシュ保存失敗時にリトライする回数。デフォルト値は0です。

timeToLive

long

キャッシュの生存時間(ミリ秒)。-1が設定された場合は無期限となります。デフォルト値は-1です。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。timeToLiveの設定よりtimeToLiveCalculatorの実装が優先されます。

SimpleCacheStoreFactory

内部メモリを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

initialCapacity

int

キャッシュの初期容量。デフォルト値は16です。

loadFactor

float

負荷係数。初期値は0.75です。

concurrencyLevel

int

並行して更新しているスレッドの推定数。デフォルト値は16です。

timeToLive

int

キャッシュの生存時間(ミリ秒)。-1が設定された場合は無期限となります。デフォルト値は-1です。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。timeToLiveの設定よりtimeToLiveCalculatorの実装が優先されます。

size

int

キャッシュのサイズ。-1が設定された場合は無制限となります。デフォルト値は-1です。

multiThreaded

boolean

マルチスレッドに対応するか。デフォルト値はtrueです。

evictionInterval

long

キャッシュの有効期限(ミリ秒)。-1が設定された場合は無期限となります。デフォルト値は-1です。

fineGrainedLock

boolean

細粒度のロックを行うかどうか。Index利用且つキャッシュの更新頻度が高い場合、このフラグを有効化することにより、キャッシュ更新処理の並列性が向上する可能性があります。デフォルト値はfalseです。

indexConfig

FineGrainedLockIndexConfig、複数指定可

細粒度のロックのindex毎の詳細設定です。

FineGrainedLockIndexConfig

classにorg.iplass.mtp.impl.cache.store.builtin.FineGrainedLockIndexConfigの実装クラスを指定します。

以下の項目を設定可能です。

項目 説明

shardSize

int

シャードのサイズ。並列度に応じた値を設定します。デフォルト値は1です。

fair

boolean

ロック時の公平性ポリシーを指定します。公平順序付けポリシーを使用する場合は true を指定します。デフォルトはfalseです。

SyncServerCacheStoreFactory

信頼性の低い、サーバ間のキャッシュを同期するCacheStoreFactoryです。 実ストアのtimeToLiveの設定で一定間隔でキャッシュがリフレッシュされる前提で利用してください。 他のサーバがキャッシュの更新処理中にダウンした場合などは、そのtimeToLiveの間、キャッシュと実データの間で不整合が発生する可能性あります。 以下の項目を設定可能です。

項目 説明

cacheKeyResolver

CacheKeyResolver

CacheKeyResolverの設定。

cacheIndexResolver

CacheKeyResolver、複数指定可

インデックスのCacheKeyResolverの設定。

store

CacheStoreFactory

CacheStoreFactoryの設定。

listener

SyncServerCacheEventListener

同期メッセージ受信時に実行するリスナーの設定。

noClusterEventOnPut

boolean

キャッシュへのput操作時に別サーバに通知しない場合にtrueを設定する。デフォルト値はfalse(通知する)です。

TransactionLocalCacheStoreFactory

トランザクションが有効な間はバックエンドのCacheStoreに反映を遅延するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

backendStore

CacheStoreFactory

バックエンドのCacheStoreFactoryの設定。

InfinispanCacheStoreFactory

Infinispanを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

createOnStartup

boolean

スタートアップ時にCacheStoreを生成するか。デフォルト値はfalseです。

cacheConfigrationName

String

キャッシュ名。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。

RedisCacheStoreFactory

Redisを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

serverName

String

RedisServiceで設定されたサーバ名。

timeToLive

long

キャッシュの生存時間(秒)。0以下が設定された場合は無期限となります。デフォルト値は0 (無期限) です。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。timeToLiveの設定よりtimeToLiveCalculatorの実装が優先されます。

retryCount

int

キャッシュ保存失敗時のリトライ回数。デフォルト値は0 (リトライしない) です。

poolConfig

RedisCacheStorePoolConfig

コネクションプールの設定 (Apache Commons-pool2 を使用しています)。

RedisCacheStorePoolConfig

以下の項目が設定可能です。各項目の詳細やデフォルト値は、Apache Commons-pool2のorg.apache.commons.pool2.impl.BaseObjectPoolConfig、org.apache.commons.pool2.impl.GenericObjectPoolConfigで確認できます。

項目 説明

maxTotal

int

プールから割り当てることができるコネクションの最大数。デフォルト値は8です。

maxIdle

int

プール内のアイドルインスタンス数の上限。デフォルト値は8です。

minIdle

int

プール内に維持するアイドルインスタンスの最小数。デフォルト値は0です。

blockWhenExhausted

boolean

maxTotalに達した状態でプールからインスタンスを取得しようとしたときに呼び出し元が待機する必要があるかどうか。デフォルト値はtrueです。

maxWaitMillis

long

コネクションが使用できないときに呼び出し元が待機する最大ミリ秒数。デフォルト値は-1 (タイムアウトしない) です。

testOnBorrow

boolean

コネクションをプールから取得する前に検証するかどうか。デフォルト値はfalseです。

testOnReturn

boolean

コネクションがプールに返される前に検証するかどうか。デフォルト値はfalseです。

testWhileIdle

boolean

プール内のアイドルインスタンスを検証するかどうか。デフォルト値はfalseです。

timeBetweenEvictionRunsMillis

long

プール内のアイドルインスタンスの検証が実行される間にスリープする時間。デフォルト値は-1 (検証しない) です。

minEvictableIdleTimeMillis

long

プール内でインスタンスがアイドル状態になってから、検証されて退去させられるようになるまでの最小時間。デフォルト値は 180000 (30分) です。

numTestsPerEvictionRun

int

アイドルインスタンス検証スレッドの書く実行中に検査するオブジェクトの最大数。デフォルト値は3です。

MetricsCacheStoreFactory

バックエンドCacheStoreのサイズ、キャッシュヒット回数/ミス回数をメトリクスとして収集するCacheStoreFactoryです。バックエンドに実際にキャッシュを行う永続ストアを持っており、このクラスではキャッシュに関する操作は行いません(記録のみ)。 Micrometerモジュールを依存関係に追加した場合に設定可能です。Micrometerモジュールを適用した場合、標準で設定されているCacheStoreFactoryに対して、メトリクスを収集するようにデフォルトで設定されます。

以下の項目を設定可能です。

項目 説明

wrappedStore

CacheStoreFactory

バックエンドのCacheStoreFactoryの設定。

sizeOnly

boolean

CacheStoreのサイズのみを記録するかを指定します。falseの場合、CacheStoreのサイズに加えて、Cacheのヒット/ミスの回数をnameSpace毎に記録します。デフォルトでは、Queryキャッシュ、ActionContentキャッシュのみfalseに設定されています。

CacheKeyResolver

classにorg.iplass.mtp.impl.cache.store.keyresolver.CacheKeyResolverの実装クラスを指定します。

標準で、以下のCacheKeyResolverを提供します。

CounterCacheKeyResolver

classにorg.iplass.mtp.impl.counter.CachableRdbTableCounterServicea$CounterCacheKeyResolverを指定します。

CounterKey型のCacheKeyResolverです。設定変更可能な項目はありません。

IntegerCacheKeyResolver

classにorg.iplass.mtp.impl.cache.store.keyresolver.IntegerCacheKeyResolverを指定します。

Integer型のCacheKeyResolverです。設定変更可能な項目はありません。

QueryCacheKeyResolver

classにorg.iplass.mtp.impl.entity.cache.QueryCacheKeyResolverを指定します。

Query型のCacheKeyResolverです。設定変更可能な項目はありません。

StringCacheKeyResolver

classにorg.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolverを指定します。

文字列型のCacheKeyResolverです。設定変更可能な項目はありません。

SyncServerCacheEventListener

classにorg.iplass.mtp.impl.metadata.MetaDataSyncServerCacheListenerを指定します。

メタデータの同期を行います。設定変更可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.cache.CacheService</interface>

    <!-- Entityのトランザクションローカル用キャッシュ(非共有) -->
    <property name="entityTransactionLocal" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.entity.transactionLocalCache" />
        <property name="multiThreaded" value="false" />
        <property name="size" value="32" />
    </property>

    <!-- Queryのトランザクションローカル用キャッシュ(非共有) -->
    <property name="queryTransactionLocal" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.entity.transactionLocalQueryCache" />
        <property name="indexCount" value="1" /><!-- index:defName -->
        <property name="multiThreaded" value="false" />
        <property name="size" value="32" />
    </property>

    <!-- 権限チェック結果のキャッシュ(非共有) -->
    <property name="permissionLocal" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.auth.permissionCache" />
        <property name="multiThreaded" value="false" />
        <property name="size" value="16" />

    </property>

    <!-- TenantContextキャッシュ -->
    <property name="tenantContext" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespace" value="mtp.tenant.tenantContext" />
        <property name="indexCount" value="1" /><!-- index:tenantUrl -->
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        </property>
    </property>

    <!-- CounterServiceのカウンタキャッシュ -->
    <property name="rdbTableCounter" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
        <property name="namespace" value="mtp.counter.rdbTableCounter" />
        <property name="cacheKeyResolver" class="org.iplass.mtp.impl.counter.CachableRdbTableCounterService$CounterCacheKeyResolver" />
        <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
            <property name="timeToLive" value="-1" />
            <property name="size" value="1024" />
        </property>
    </property>

    <!-- 権限系Entityのキャッシュ -->
    <property name="authBuiltin" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]auth[.]builtin[.].*" />
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
            <property name="cacheKeyResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <!-- 6時間有効 -->
                <property name="timeToLive" value="21600000" />
            </property>
        </property>
    </property>

    <!-- メタデータ(本体)キャッシュ -->
    <property name="metadata" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]metadata[.]metaData/.*" />
        <property name="indexCount" value="1" /><!-- index:path -->
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
            <property name="cacheKeyResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="cacheIndexResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <!-- 12時間有効 -->
                <property name="timeToLive" value="43200000" />
            </property>
            <property name="listener" class="org.iplass.mtp.impl.metadata.MetaDataSyncServerCacheListener" />
        </property>
    </property>

    <!-- メタデータ(パスに対するリスト)キャッシュ(サーバローカルキャッシュ。メタデータ本体キャッシュのサーバ通知経由でデータの同期) -->
    <property name="metadataList" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]metadata[.]metaDataDefList/.*" />
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <!-- 12時間有効 -->
                <property name="timeToLive" value="43200000" />
        </property>
    </property>

    <!-- cubeのキャッシュ -->
    <property name="cubeStatus" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.aggregation.cube.status" />
    </property>
    <property name="cubeFactData" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.aggregation.cube.factPartition" />
        <property name="concurrencyLevelOfCacheHandler" value="4" />
    </property>

    <!-- Queryキャッシュ -->
    <property name="query" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]entity[.]queryCache/.*" />
        <property name="indexCount" value="1" /><!-- index:defName -->
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
            <property name="cacheKeyResolver" class="org.iplass.mtp.impl.entity.cache.QueryCacheKeyResolver" />
            <property name="cacheIndexResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <property name="fineGrainedLock" value="true" />
                <property name="indexConfig" class="org.iplass.mtp.impl.cache.store.builtin.FineGrainedLockIndexConfig">
                    <property name="shardSize" value="16" />
                    <property name="fair" value="true" />
                </property>
                <!-- 12時間有効 -->
                <property name="timeToLive" value="43200000" />
                <!-- 最大128 -->
                <property name="size" value="128" />
            </property>
        </property>
    </property>

    <!-- 上記namespace以外の場合のデフォルトキャッシュ -->
    <property name="defaultFactory" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespacePattern" value=".*" />
        <property name="indexCount" value="5" />
    </property>
</service>

3.15. CaptchaService

reCAPTCHAによるロボット排除を管理するためのサービスです。

インタフェース名

org.iplass.wam.impl.captcha.CaptchaService

実装クラス名

org.iplass.wam.impl.captcha.CaptchaService

CaptchaServiceの設定

CaptchaServiceを設定します。

設定項目
項目 説明

captchaMethod

CaptchaMethod、複数指定可

CaptchaMethodの設定。

CaptchaMethod

classはorg.iplass.wam.impl.captcha.CaptchaMethodの実装クラスを指定します。

標準でorg.iplass.wam.impl.captcha.ReCaptchaMethodを提供しています。 以下の項目を設定可能です。

項目 説明

siteKey

String

reCAPTCHAのサイトキー。

secretKey

String

GoogleのreCAPTCHAのシークレットキー。reCAPTCHA Enterpriseを使用する場合、GCPのAPIキー。

projectId

String

reCAPTCHA Enterpriseを使用する場合、GCPのプロジェクトIDを入力します。

allowableScoreThreshold

String

許容するスコアの閾値。設定した閾値以上のスコアの場合、正当であると判断します。reCAPTCHA v3もしくはreCAPTCHA Enterpriseの場合に設定します。

設定例
<service>
    <interface>org.iplass.wam.impl.captcha.CaptchaService</interface>
    <class>org.iplass.wam.impl.captcha.CaptchaService</class>

    <property name="captchaMethod" class="org.iplass.wam.impl.captcha.ReCaptchaMethod">
        <property name="siteKey" value="yourSiteKey" />
        <property name="secretKey" value="yourSecretKey" />
        <property name="projectId" value="yourProjectId" />
        <property name="allowableScoreThreshold" value="0.5" />
    </property>

</service>

3.16. ClusterService

クラスタ間通信を行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.cluster.ClusterService

実装クラス名

org.iplass.mtp.impl.cluster.ClusterService

ClusterServiceの設定

ClusterServiceを設定します。

設定項目
項目 説明

messageChannel

MessageChannel

クラスタ間の通信に利用するメッセージチャネルの設定。

MessageChannel

classはorg.iplass.mtp.impl.cluster.channel.MessageChannelの実装クラスを指定します。

標準で、以下のMessageChannelを提供します。

HttpMessageChannel

classはorg.iplass.mtp.impl.cluster.channel.http.HttpMessageChannelを指定します。

Httpを介してメッセージ送受信するメッセージチャネルです。以下の項目を設定可能です。

項目 説明

serverUrl

String、複数指定可

他のクラスタメンバの通信用URL。
指定するURLは次の形式となります。

http://[server]:[port]/[applicationContext]/cmcs

自身のサーバのurlも含めることも可能です。 serverUrlに自身のサーバのurlを含めた場合、次の形で自身のurlを解決して、それ以外のサーバにメッセージ送信します。

  1. システムプロパティに以下が設定されていた場合、その値を自身のサーバ名、ポートと判断する
    mtp.cluster.http.myservername = [server名]
    mtp.cluster.http.myportno = [portNo]
    ※クラスタ設定のserverUrlで同一サーバ名のURLが複数ある場合、ポート指定が必要です

  2. 動作環境から自身のサーバ名を自動解決する
    以下のいずれかの方法でネットワークインタフェースを特定

    1. 明示的にネットワークインタフェースを指定する場合
      システムプロパティでネットワークインタフェースを指定する
      mtp.cluster.http.myinterfacename = [networkInterface名]

    2. 最初に定義されている(LoopBackでなく現在利用可能な)ネットワークインタフェースを利用
      特定されたネットワークインタフェースに定義されているサーバ名(FQDN/サーバ名)/IPAdressを自身のサーバ名と判断する。
      もしそれでも見つからない場合は、LoopBackを自身のサーバ名と判断する。
      ※1.と同様、クラスタ設定のserverUrlで同一サーバ名のURLが複数ある場合、mtp.cluster.http.myportnoシステムプロパティにてポート指定が必要

certKey

String

通信時の認証用のキー。クラスタメンバで同一のものを定義します。

connectionTimeout

int

http通信確立時のConnectionTimeout値(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

http通信確立時のSoTimeout値(ミリ秒)。デフォルト値は30000(30秒)です。

proxyHost

String

http通信する際のproxyHost。

proxyPort

int

http通信する際のproxyPort。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

retryCount

int

メッセージ送信失敗時のリトライ回数。デフォルト値は3です。

retryDelay

int

メッセージ送信失敗時のリトライ間隔(ms)。デフォルト値は3です。

JGroupsMessageChannel

classはorg.iplass.mtp.impl.cluster.channel.jgroups.JGroupsMessageChannelを指定します。 JGroupsを介してメッセージ送受信するメッセージチャネルです。以下の項目を設定可能です。

項目 説明

configFilePath

String

JGroupsの設定ファイルへのパスを指定します。 指定されたパスを元に、次の順にファイルを検索します。

  1. リソースパス(classpath配下)

  2. ファイルパス(OS上のファイルとして)

clusterName

String

JGroupsのクラスタ名を指定します。同一のクラスタ名が指定されたノードがクラスタメンバとなります。

InfinispanMessageChannel

classはorg.iplass.mtp.impl.infinispan.cluster.channel.InfinispanMessageChannelを指定します。

Infinispanを利用してメッセージの送受信を行うメッセージチャネルです。 InfinispanMessageChannelを利用する場合は、別途 InfinispanService の設定が必要です。

以下の項目を設定可能です。

項目 説明

sync

boolean

メッセージの送信を同期して行うかを設定します。

設定例
HttpMessageChannel
<service>
    <interface>org.iplass.mtp.impl.cluster.ClusterService</interface>
    <property name="messageChannel"
        class="org.iplass.mtp.impl.cluster.channel.http.HttpMessageChannel">
        <property name="serverUrl" value="http://xxx1.xxx.xxx/app/cmcs" />
        <property name="serverUrl" value="http://xxx2.xxx.xxx/app/cmcs" />
        <property name="certKey" value="yourOwnClusterCertKey" />
        <property name="connectionTimeout" value="30000" />
        <property name="soTimeout" value="30000" />
        <property name="proxyHost" value="proxy.xxx.xxx" />
        <property name="proxyPort" value="8080" />
    </property>
</service>
JGroupsMessageChannel
<service>
    <interface>org.iplass.mtp.impl.cluster.ClusterService</interface>
    <property name="messageChannel" class="org.iplass.mtp.impl.cluster.channel.jgroups.JGroupsMessageChannel">
        <property name="configFilePath" value="/jgroups-config-udp.xml" />
        <property name="clusterName" value="yourOwnClusterName" />
    </property>
</service>
InfinispanMessageChannel
<service>
    <interface>org.iplass.mtp.impl.cluster.ClusterService</interface>
    <depend>org.iplass.mtp.impl.infinispan.InfinispanService</depend>
    <property name="messageChannel" class="org.iplass.mtp.impl.infinispan.cluster.channel.InfinispanMessageChannel">
        <property name="sync" value="false" />
    </property>
</service>

3.17. ConnectionFactory

データベース接続を行うためのサービスです。 データベース接続の実装として、DriverManagerを利用した接続と、DataSourceを利用した接続のモジュールを標準提供します。

インタフェース名

org.iplass.mtp.impl.rdb.connection.ConnectionFactory

実装クラス名

DriverManagerを利用した接続
org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory
DataSourceを利用した接続
org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory
DataSourceを利用した接続(リードレプリカ対応版)
org.iplass.mtp.impl.rdb.connection.ReplicationAwareDataSourceConnectionFactory

DriverManagerConnectionFactoryの設定

DriverManagerを利用したデータベースの接続情報を設定します。

設定項目
項目 説明

url

String

データベース接続文字列のURL。

user

String

ログインに使用されるユーザー名。

password

String

接続するユーザーのパスワード。

driver

String

JDBCドライバの完全修飾クラス名。

warnLogThreshold

int

警告ログを出力する処理時間(ミリ秒)の閾値。
デフォルト値は0です。
閾値を越えるスロークエリーが実行された場合、ログ出力されます。

warnLogBefore

boolean

事前警告ログを出力するか否かを指定します。
デフォルトはtrueです。
現状、当該フラグがtrueの場合は、INDEXを利用しないEQLクエリーが発行される場合に、事前警告ログが出力されます。

countSqlExecution

boolean

SQL発行回数を記録するか否かを指定します。記録されたSQL実行回数はAction、Web APIなどの実行単位とともにログ出力されます。
デフォルト値はtrueです。

transactionIsolationLevel

String

トランザクションの分離レベル。以下が設定可能。

NONE

ConnectionのTRANSACTION_NONEに対応

READ_UNCOMMITTED

ConnectionのTRANSACTION_READ_UNCOMMITTEDに対応

READ_COMMITTED

ConnectionのTRANSACTION_READ_COMMITTEDに対応

REPEATABLE_READ

ConnectionのTRANSACTION_REPEATABLE_READに対応

SERIALIZABLE

ConnectionのTRANSACTION_SERIALIZABLEに対応

clientInfoMap

String、Map形式

ConnectionのclientInfoへセットする値をMap形式で指定します。nameにはclientInfoのname、valueにはセットする値のMDCのキー名を指定します。valueに thread が指定された場合はThread名がセットされます。

clientInfoMaxLength

int

ConnectionのclientInfoへセットする値の最大文字数を指定します。 -1の場合は、無制限です。
デフォルト値は-1です。

isCreateConnectionIfReadOnlyTransaction

boolean

実行対象のトランザクションが読み取り専用の場合に、フレームワーク内で管理している未使用コネクションを利用せず、新規にコネクションを作成するか否かを指定します。true が指定されると、新規にコネクションを作成します。
デフォルト値は false です。

設定例
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory</class>

    <property name="url" value="jdbc:oracle:thin:ADDRESS:PORT:DB" />
    <property name="user" value="yourName" />
    <property name="password" value="yourPassword" />
    <property name="driver" value="oracle.jdbc.driver.OracleDriver" />

    <property name="warnLogThreshold" value="0" />

    <property name="clientInfoMap">
        <property name="OCSID.CLIENTID" value="thread" />
        <property name="OCSID.ACTION" value="command" />
    </property>
    <property name="clientInfoMaxLength" value="64" />
    <property name="isCreateConnectionIfReadOnlyTransaction" value="false" />
</service>

DataSourceConnectionFactoryの設定

DataSourceを利用したデータベースの接続情報を設定します。 DataSourceは次のいずれかの方法で取得します。

  • JNDI経由で取得する

  • DataSourceのインスタンスを直接生成する

設定項目
項目 説明

dataSourceName

String

データソース名。デフォルト値は java:comp/env/jdbc/defaultDS です。
JNDI経由で取得する場合に指定します。

jndienv.<キー名>

String、複数指定可

JNDIの環境プロパティ。
JNDI経由で取得する場合に指定します。

dataSource

javax.sql.DataSource

javax.sql.DataSourceを実装するクラスのインスタンスを指定。
DataSourceのインスタンスを直接生成する場合に指定します。

warnLogThreshold

int

警告ログを出力する処理時間(ミリ秒)の閾値。
デフォルト値は0です。
閾値を越えるスロークエリーが実行された場合、ログ出力されます。

warnLogBefore

boolean

事前警告ログを出力するか否かを指定します。
デフォルトはtrueです。
現状、当該フラグがtrueの場合は、INDEXを利用しないEQLクエリーが発行される場合に、事前警告ログが出力されます。

countSqlExecution

boolean

SQL発行回数を記録するか否かを指定します。記録されたSQL実行回数はAction、Web APIなどの実行単位とともにログ出力されます。
デフォルト値はtrueです。

transactionIsolationLevel

String

トランザクションの分離レベル。以下が設定可能。

NONE

ConnectionのTRANSACTION_NONEに対応

READ_UNCOMMITTED

ConnectionのTRANSACTION_READ_UNCOMMITTEDに対応

READ_COMMITTED

ConnectionのTRANSACTION_READ_COMMITTEDに対応

REPEATABLE_READ

ConnectionのTRANSACTION_REPEATABLE_READに対応

SERIALIZABLE

ConnectionのTRANSACTION_SERIALIZABLEに対応

clientInfoMap

String、Map形式

ConnectionのclientInfoへセットする値をMap形式で指定します。nameにはclientInfoのname、valueにはセットする値のMDCのキー名を指定します。valueに thread が指定された場合はThread名がセットされます。

clientInfoMaxLength

int

ConnectionのclientInfoへセットする値の最大文字数を指定します。 -1の場合は、無制限です。
デフォルト値は-1です。

isCreateConnectionIfReadOnlyTransaction

boolean

実行対象のトランザクションが読み取り専用の場合に、フレームワーク内で管理している未使用コネクションを利用せず、新規にコネクションを作成するか否かを指定します。true が指定されると、新規にコネクションを作成します。
デフォルト値は false です。

設定例(JNDI経由)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory</class>

    <property name="dataSourceName" value="java:comp/env/jdbc/sampleDS" />
    <property name="jndienv.java.naming.factory.initial"
        value="custom.JNDIInitialContextFactory" />
    <property name="jndienv.java.naming.provider.url"
        value="custom://server:1234:path/to/context" />

    <property name="warnLogThreshold" value="0" />

    <property name="clientInfoMap">
        <property name="threadName" value="thread" />
        <property name="commandName" value="command" />
    </property>
    <property name="isCreateConnectionIfReadOnlyTransaction" value="false" />
</service>
設定例(直接生成)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory</class>

    <property name="dataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:mysql://server:3306/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
        <property name="dataSourceProperties">
            <property name="serverTimezone" value="JST" />
        </property>
    </property>

    <property name="warnLogThreshold" value="0" />

    <property name="clientInfoMap">
        <property name="threadName" value="thread" />
        <property name="commandName" value="command" />
    </property>
    <property name="isCreateConnectionIfReadOnlyTransaction" value="false" />
</service>

ReplicationAwareDataSourceConnectionFactoryの設定

DataSourceを利用したデータベースの接続情報を設定します。 オリジナル(読み書き可能)、リードレプリカ(読み取り専用)、それぞれのDataSourceを設定します。

MySQLのJDBCドライバはドライバレベルでリードレプリカに対応しているため、ReplicationAwareDataSourceConnectionFactoryを利用せずともリードレプリカへの対応は可能です。詳しくはMySQLのドキュメントを参照ください。

オリジナル、リードレプリカそれぞれのDataSourceは次のいずれかの方法で取得します。

  • JNDI経由で取得する

  • DataSourceのインスタンスを直接生成する

設定項目
項目 説明

dataSourceName

String

オリジナルのデータソース名。デフォルト値は java:comp/env/jdbc/defaultDS です。
JNDI経由で取得する場合に指定します。

replicaDataSourceName

String、複数指定可

リードレプリカのデータソース名。
JNDI経由で取得する場合に指定します。
複数指定された場合は、コネクション取得時にランダムに振り分けされます。

jndienv.<キー名>

String、複数指定可

JNDIの環境プロパティ。
JNDI経由で取得する場合に指定します。

dataSource

javax.sql.DataSource

javax.sql.DataSourceを実装するクラスのインスタンスを指定。
DataSourceのインスタンスを直接生成する場合に指定します。

replicaDataSource

javax.sql.DataSource、複数指定可

javax.sql.DataSourceを実装するクラスのインスタンスを指定。
リードレプリカのDataSourceのインスタンスを直接生成する場合に指定します。
複数指定された場合は、コネクション取得時にランダムに振り分けされます。

warnLogThreshold

int

警告ログを出力する処理時間(ミリ秒)の閾値。
デフォルト値は0です。
閾値を越えるスロークエリーが実行された場合、ログ出力されます。

warnLogBefore

boolean

事前警告ログを出力するか否かを指定します。
デフォルトはtrueです。
現状、当該フラグがtrueの場合は、INDEXを利用しないEQLクエリーが発行される場合に、事前警告ログが出力されます。

countSqlExecution

boolean

SQL発行回数を記録するか否かを指定します。記録されたSQL実行回数はAction、Web APIなどの実行単位とともにログ出力されます。
デフォルト値はtrueです。

transactionIsolationLevel

String

トランザクションの分離レベル。以下が設定可能。

NONE

ConnectionのTRANSACTION_NONEに対応

READ_UNCOMMITTED

ConnectionのTRANSACTION_READ_UNCOMMITTEDに対応

READ_COMMITTED

ConnectionのTRANSACTION_READ_COMMITTEDに対応

REPEATABLE_READ

ConnectionのTRANSACTION_REPEATABLE_READに対応

SERIALIZABLE

ConnectionのTRANSACTION_SERIALIZABLEに対応

clientInfoMap

String、Map形式

ConnectionのclientInfoへセットする値をMap形式で指定します。nameにはclientInfoのname、valueにはセットする値のMDCのキー名を指定します。valueに thread が指定された場合はThread名がセットされます。

clientInfoMaxLength

int

ConnectionのclientInfoへセットする値の最大文字数を指定します。 -1の場合は、無制限です。
デフォルト値は-1です。

isCreateConnectionIfReadOnlyTransaction

boolean

実行対象のトランザクションが読み取り専用の場合に、フレームワーク内で管理している未使用コネクションを利用せず、新規にコネクションを作成するか否かを指定します。true が指定されると、新規にコネクションを作成します。
デフォルト値は true です。

設定例(JNDI経由)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.ReplicationAwareDataSourceConnectionFactory</class>

    <property name="dataSourceName" value="java:comp/env/jdbc/sampleDS" />
    <property name="replicaDataSourceName" value="java:comp/env/jdbc/sampleReplicaDS1" />
    <property name="replicaDataSourceName" value="java:comp/env/jdbc/sampleReplicaDS2" />

    <property name="jndienv.java.naming.factory.initial"
        value="custom.JNDIInitialContextFactory" />
    <property name="jndienv.java.naming.provider.url"
        value="custom://server:1234:path/to/context" />

    <property name="warnLogThreshold" value="0" />
    <property name="isCreateConnectionIfReadOnlyTransaction" value="true" />

</service>
設定例(直接生成)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.ReplicationAwareDataSourceConnectionFactory</class>

    <property name="dataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:postgresql://server:5432/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
    </property>

    <property name="replicaDataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:postgresql://replicaServer1:5432/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
    </property>
    <property name="replicaDataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:postgresql://replicaServer2:5432/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
    </property>

    <property name="warnLogThreshold" value="0" />
    <property name="isCreateConnectionIfReadOnlyTransaction" value="true" />

</service>

3.18. CsvUploadService

CSVアップロードを管理するサービスです

インタフェース名

org.iplass.mtp.impl.csv.CsvUploadService

実装クラス名

org.iplass.mtp.impl.csv.CsvUploadService

CsvUploadServiceの設定

CsvUploadServiceを設定します。

設定項目
項目 説明

showErrorLimitCount

int

CSVアップロードエラー表示件数上限値。-1 を指定した場合は無制限となる。

defaultUpdateTargetVersionForNoneVersionedEntity

TargetVersion

CSVアップロードのバージョン管理Entity以外の場合の更新時のデフォルトTargetVersion。デフォルト値は CURRENT_VALID です。

mustOrderByWithLimit

boolean

アップロード形式でのCSVダウンロード時に、件数上限が指定されている場合にOrderByを必ず指定するかを設定する。デフォルト値は false です。

SQLServerを利用している場合は、 true を指定してください。 SQLServerの場合、以下の条件に該当するとデータが取得できない状況になりますが、この値を true にすることでデータを取得します。

  • ダウンロード件数制限をしている

  • 指定された検索条件に多重度複数のReferenceに対する条件が含まれる

設定例
<service>
    <interface>org.iplass.mtp.impl.csv.CsvUploadService</interface>
    <class>org.iplass.mtp.impl.csv.CsvUploadService</class>
    <!-- CSVアップロードエラー表示件数上限値 (-1は無制限)  -->
    <property name="showErrorLimitCount" value="100"/>

    <!--
     CSVアップロードのバージョン管理Entity以外の場合の更新時のデフォルトTargetVersion。
     デフォルトはCURRENT_VALID。
    -->
    <property name="defaultUpdateTargetVersionForNoneVersionedEntity" value="SPECIFIC"/>

    <!--
        CSVダウンロード時にLimitが指定されている場合にOrderByを必ず指定するか。
        SQLServerの場合はtrueを指定すること。
    -->
    <property name="mustOrderByWithLimit" value="false"/>
</service>

3.19. CubeService

Cubeの定義(メタデータ)を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.aggregation.cube.CubeService

実装クラス名

org.iplass.mtp.impl.aggregation.cube.CubeService

CubeServiceの設定

CubeServiceを設定します。

設定項目
項目 説明

enablePhysicalResourceLoading

boolean

ファイルやJDBCといった物理リソースへのアクセスを許可するか。デフォルト値はfalseです。

useDataCompression

boolean

メモリ内に展開したデータを圧縮するか。デフォルト値はtrueです。

decompressDataReferenceType

String

useDataCompression有効時、展開されたデータの保持形式を指定。 SOFT もしくは WEAK を指定します。デフォルト値は SOFT です。

SOFT

展開されたデータはSoftReferenceとしてキャッシュされます。 WeakReferenceに比較し、キャッシュが再利用されやすくなります。 ただし、CSVダウンロードなど一度に大量のデータが展開され、且つメモリがひっ迫した状況下においては、レスポンス性能が極端に悪化する可能性があります。 java VMの起動オプション、 -XX:SoftRefLRUPolicyMSPerMB によりSoftReferenceの生存期間を調整することが必要です。

WEAK

展開されたデータはWeakReferenceとしてキャッシュされます。

useFlyweightListOnBitSetColData

boolean

BitMap形式でデータ格納する際、Listとして実データを保持するか。trueにした場合、集計速度は速くなりますがメモリ使用量は増えます。デフォルト値はfalseです。

useHashIndexOnListColData

boolean

ObjectPool形式でデータ格納する際、HashIndexを生成するか。trueにした場合、集計速度は速くなりますがメモリ使用量は増えます。デフォルト値はfalseです。

hashIndexSegmentSize

int

HashIndex利用時のHashのセグメントサイズ。設定された値は2の累乗に自動的に補正されます。デフォルト値は16です。

maxRowsOfDimension

int

集計時の最大ディメンジョン数(Clientへの返却可能な行数)。デフォルト値は10000です。

maxRowsOfDimensionInternal

int

集計時の最大ディメンジョン数(内部処理での)。デフォルト値は100000です。

transferredRawDataInMemoryThreshold

int

ローデータ取得時に分散環境下において、他Nodeから実データが転送されてきますが、それをメモリ内で扱う閾値。これより大きい場合は、一旦ファイルに落とします。デフォルト値は16384(16K)です。

joinBufferSize

int

Cubeのjoinを行う際のバッファーサイズ(行数)。大きくするとロード速度は上がりますがメモリ使用量が増えます。デフォルト値は1000です。

enableDistinctRows

boolean

ローデータ取得時にdistinctRow指定を許可するか。distinct操作には重複チェックのため取得する行数に応じてメモリを消費します。デフォルト値はtrueです。

inMemoryRowThresholdOfDistinctRows

int

ローデータ取得時のdistinct処理において、メモリ内で処理する最大行数。これ以上の行を処理する場合はファイルにスワップします(速度は低下します)。-1はすべてをメモリ内で処理します。0はすべてをファイルで処理します。デフォルト値は10000です。

loadStrategy

LoadStrategy

メモリへのデータロード取得時の処理方式。

useForkJoin

boolean

fork-join frameworkベースのコードで処理するか。複数Nodeでの分散実行の際にtrue設定すると高速化が望めます。デフォルト値はfalseです。

gapFillLimit

int

ディメンジョンのギャップを埋める場合のカテゴリ数の最大値。これ以上のカテゴリとなる場合はギャップ埋めしません。デフォルト値は100です。

queryTimeoutOfWaitLoading

long

クエリ実行から読み込みを待機するタイムアウト期間(ms)。デフォルト値は3000です。

maxRowsOfDerivedCube

int

DerivedCube利用時のローデータの最大行数。メモリ内で処理するため行数を制限する。

innerCubeLoadTimeoutSec

long

Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合の待機の最大時間(秒)。

innerCubeLoadIntervalSec

int

Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合のロードが完了したかをチェックする間隔(秒)。

rawDataDimensionResolverBufferSize

int

ReferenceやSelectValueをラベル表示する際のバッファーサイズ。デフォルト値は100。

listaggDefaultSeparator

String

LISTAGG集約関数利用時のデフォルトのセパレータです。デフォルト値は , です。

LoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.LoadStrategyの実装クラスを指定します。

標準で、以下のLoadStrategyを提供します。

AllPartitionDirectLoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.AllPartitionDirectLoadStrategyを指定します。

直接ダイレクトにメモリに読み込む方式です。設定変更可能な項目はありません。
メモリを大量消費しますが高速です。

PerPartitionLoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.PerPartitionLoadStrategyを指定します。

パーティション単位でデータを読み込む方式です。設定変更可能な項目はありません。
パーティションタイプがMOD,LISTの場合、またはCubeの読み込み元がCSVの場合で、あらかじめパーティション単位でデータが分けられている場合、これを指定するとメモリ消費抑えつつ高速ロードが期待できます。

SaveMemoryLoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.SaveMemoryLoadStrategyを指定します。

ファイルへデータをスワップしながらなるべくメモリ消費を抑えながらロードする方式です。設定変更可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.aggregation.cube.CubeService</interface>
    <class>org.iplass.mtp.impl.aggregation.cube.CubeService</class>
    <!-- ファイルやJDBCといった物理リソースへのアクセスを許可するかどうか -->
    <property name="enablePhysicalResourceLoading" value="false"/>
    <!-- メモリ内に展開したデータを圧縮するかどうか(圧縮しない場合は、メモリ使用量は増える。ただ、GC後の初回集計時に集計速度が多少遅くなることはない) -->
    <property name="useDataCompression" value="true"/>
    <!-- BitMap形式でデータ格納する際、Listとして実データを保持するかどうか。(trueにした場合、集計速度は速くなるが、メモリ使用量は増える) -->
    <property name="useFlyweightListOnBitSetColData" value="false"/>
    <!-- ObjectPool形式でデータ格納する際、HashIndexを生成するかどうか。(trueにした場合、集計速度は速くなるが、メモリ使用量は増える) -->
    <property name="useHashIndexOnListColData" value="false"/>
    <!-- HashIndex利用時のHashのセグメントサイズ。(2の累乗に自動的に補正される) -->
    <property name="hashIndexSegmentSize" value="16"/>
    <!-- 集計時の最大ディメンジョン数(Clientへの返却可能な行数) -->
    <property name="maxRowsOfDimension" value="10000"/>
    <!-- 集計時の最大ディメンジョン数(内部処理での) -->
    <property name="maxRowsOfDimensionInternal" value="100000"/>
    <!-- ローデータ取得時に分散環境下において、他Nodeから実データが転送されてくるが、それをメモリ内で扱う閾値。これより大きい場合は、一旦ファイルに落とす。デフォルト16K。 -->
    <property name="transferredRawDataInMemoryThreshold" value="16384"/>
    <!-- Cubeのjoinを行う際のバッファーサイズ(行数)。大きくするとロード速度は上がるが、メモリ使用量が増える。 -->
    <property name="joinBufferSize" value="1000"/>
    <!-- ローデータ取得時にdistinctRow指定を許可するかどうか。distinct操作には重複チェックのため、取得する行数に応じて、メモリを消費する。 -->
    <property name="enableDistinctRows" value="true"/>
    <!-- ローデータ取得時のdistinct処理において、メモリ内で処理する最大行数。これ以上の行を処理する場合はファイルにスワップする(速度は低下する)。-1はすべてをメモリ内で処理。0はすべてをファイルで処理。 -->
    <property name="inMemoryRowThresholdOfDistinctRows" value="10000"/>
    <!-- メモリへのデータロード取得時の処理方式
            SaveMemoryLoadStrategy:         ファイルへデータをスワップしながらなるべくメモリ消費を抑えながらロードする方式。
            AllPartitionDirectLoadStrategy: 直接ダイレクトにメモリに読み込む方式。メモリを大量消費するが、高速。
            PerPartitionLoadStrategy:       パーティション単位でデータを読み込む方式。
                                            パーティションタイプがMOD,LISTの場合、またはCubeの読み込み元がCSVの場合で、
                                            あらかじめパーティション単位でデータが分けられている場合、これを指定するとメモリ消費抑えつつ高速ロードが期待できる。

            ※いずれもパッケージはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load
     -->
    <property name="loadStrategy" class="org.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.SaveMemoryLoadStrategy"/>
    <!-- fork-join frameworkベースのコードで処理するか否か。複数Nodeでの分散実行の際にtrue設定すると高速化が望める -->
    <property name="useForkJoin" value="false"/>
    <!-- ディメンジョンのギャップを埋める場合のカテゴリ数の最大値。これ以上のカテゴリとなる場合は、ギャップ埋めしない -->
    <property name="gapFillLimit" value="100"/>
    <!-- DerivedCube利用時のローデータの最大行数。メモリ内で処理するため行数を制限する。 -->
    <property name="maxRowsOfDerivedCube" value="10000"/>
    <!-- Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合の待機の最大時間(秒)。 -->
    <property name="innerCubeLoadTimeoutSec" value="1800"/>
    <!-- Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合のロードが完了したかをチェックする間隔(秒)。 -->
    <property name="innerCubeLoadIntervalSec" value="10"/>
</service>

3.20. CubeTemplateService

Cube集計のカスタムメジャーのテンプレートを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService

実装クラス名

org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService

CubeTemplateServiceの設定

CubeTemplateServiceを設定します。

設定項目
項目 説明

templateSettings

CubeTemplateSetting、複数指定可

カスタムメジャーに利用するテンプレートの設定。

CubeTemplateSetting

classはorg.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSettingを指定します。

カスタムメジャーに利用するテンプレート設定です。以下の項目を設定可能です。

項目 説明

displayLabel

String

表示ラベル。

valueExpressionTemplate

String

カスタムメジャー用の式。式中に埋め込まれた${1}はCubeのアイテム名に置換されます。

locale

String

ロケール。

設定例
<service>
    <interface>org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService</interface>
    <class>org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService</class>
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="10刻み" />
        <property name="valueExpressionTemplate" value="CASE WHEN ${1} &lt; 10 THEN '0' WHEN ${1} &lt; 20 THEN '10' WHEN ${1} &lt; 30 THEN '20' WHEN ${1} &lt; 40 THEN '30' WHEN ${1} &lt; 50 THEN '40' WHEN ${1} &lt; 60 THEN '50' WHEN ${1} &lt; 70 THEN '60' ELSE '70' END" />
        <property name="locale" value="ja" />
    </property>
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="10 increments" />
        <property name="valueExpressionTemplate" value="CASE WHEN ${1} &lt; 10 THEN '0' WHEN ${1} &lt; 20 THEN '10' WHEN ${1} &lt; 30 THEN '20' WHEN ${1} &lt; 40 THEN '30' WHEN ${1} &lt; 50 THEN '40' WHEN ${1} &lt; 60 THEN '50' WHEN ${1} &lt; 70 THEN '60' ELSE '70' END" />
        <property name="locale" value="en" />
    </property>
<!--
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="" />
        <property name="valueExpressionTemplate" value="" />
        <property name="locale" value="ja" />
    </property>
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="" />
        <property name="valueExpressionTemplate" value="" />
        <property name="locale" value="en" />
    </property>
-->
</service>

3.21. DefaultQueueBaseAsyncTaskService

RDBによるキューを利用した標準の非同期実行のサービスです。
非同期実行するためのAsyncTaskServiceの定義です。

インタフェース名

org.iplass.mtp.impl.async.AsyncTaskService

実装クラス名

org.iplass.mtp.impl.async.rdb.RdbAsyncTaskService

RdbAsyncTaskServiceの設定

RdbAsyncTaskServiceを設定します。

設定項目
項目 説明

defaultGetResultTimeoutMillis

long

標準の結果取得のタイムアウト時間(ミリ秒)。デフォルト値は60000(1分)です。

initialGetResultIntervalMillis

long

初期の結果取得のインターバル時間(ミリ秒)。デフォルト値は100です。

設定例
<service name="DefaultQueueBaseAsyncTaskService">
    <interface>org.iplass.mtp.impl.async.AsyncTaskService</interface>
    <class>org.iplass.mtp.impl.async.rdb.RdbAsyncTaskService</class>
    <property name="defaultGetResultTimeoutMillis" value="60000" />
    <property name="initialGetResultIntervalMillis" value="100" />
</service>

3.22. EntityService

エンティティを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.entity.EntityService

実装クラス名

org.iplass.mtp.impl.entity.EntityService

EntityServiceの設定

エンティティハンドラを設定します。

設定項目
項目 説明

limitOfReferences

int

エンティティの参照数の制限値。デフォルト値は1000です。

oidValidationPattern

String

oidに設定可能な文字列を制限するための正規表現。デフォルト値は ^[0-9a-zA-Z_\-]+$ です。

purgeTargetDate

int

ごみ箱データのクリーナー対象日数。クリーナー対象日数よりも前にごみ箱へ削除されたデータが物理削除されます。

interceptor

EntityInterceptor、複数指定可

エンティティに対する操作の前に挿む処理。

additionalStoreMaintainer

AdditionalStoreMaintainer、複数指定可

データ削除、デフラグ実行時に、併せてストア内をメンテナンスする処理。

EntityInterceptor

classはorg.iplass.mtp.entity.interceptor.EntityInterceptorの実装クラスを指定します。

AdditionalStoreMaintainer

classはorg.iplass.mtp.impl.entity.AdditionalStoreMaintainerの実装クラスを指定します。

設定例
<service>
    <interface>org.iplass.mtp.impl.entity.EntityService</interface>
    <property name="limitOfReferences" value="1000" />
    <property name="oidValidationPattern" value="^[0-9a-zA-Z_\-]+$" />

    <!--
        ごみ箱データのクリーナー用日付です。日数を指定して下さい。
        下記の場合、実行時より30日前の日付がクリーナー対象日となります。
        クリーナー対象日よりも前にごみ箱へ削除されたデータが物理削除されます。
    <property name="purgeTargetDate" value="30" />
    -->

    <property name="interceptor" class="org.iplass.mtp.impl.entity.contentcache.ContentCacheInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.auth.EntityAuthInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.available.EntityReadOnlyInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.auditlog.AuditLogInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.listener.EntityEventListenerInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.l10n.EntityLocalizationInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.cache.EntityCacheInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.fulltextsearch.FulltextSearchInterceptor" />

    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.entity.auditlog.AuditLogStoreMaintainer" />
    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.entity.fulltextsearch.FulltextSearchStoreMaintainer" />
    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.lob.LobStoreMaintainer" />

    <property name="extendPropertyAdapterFactory" class="org.iplass.mtp.impl.entity.EnterpriseExtendPropertyAdapterFactory" />

</service>

3.23. EntityCsvImportService

EntityのCSVインポートに関するサービスです。

インタフェース名

org.iplass.mtp.impl.csv.EntityCsvImportService

実装クラス名

org.iplass.mtp.impl.csv.EntityCsvImportService

EntityCsvImportServiceの設定

EntityCsvImportServiceを設定します。

設定項目
項目 説明

canCreateUserWithSpecificPassword

boolean

UserエンティティのInsert時にパスワード指定を許可するか。デフォルト値は false です。

設定例
<service>
    <interface>org.iplass.mtp.impl.csv.EntityCsvImportService</interface>

    <property name="canCreateUserWithSpecificPassword" value="true" />
</service>

3.24. EntityPortingService

Entityデータのツールに関するサービスです。

インタフェース名

org.iplass.mtp.impl.tools.entityport.EntityPortingService

実装クラス名

org.iplass.mtp.impl.tools.entityport.EntityPortingService

EntityPortingServiceの設定

EntityPortingServiceを設定します。

設定項目
項目 説明

uploadableCsvDownloadLoadSize

int

Entityのプロパティに多重度複数の参照を含む場合の一括ロード件数。デフォルト値は 1 です。

canCreateUserWithSpecificPassword

boolean

UserエンティティのInsert時にパスワード指定を許可するか。デフォルト値は false です。

将来のバージョンでは本設定項目は削除されます。EntityCsvImportServicecanCreateUserWithSpecificPassword を使用してください。
設定例
<service>
    <interface>org.iplass.mtp.impl.tools.entityport.EntityPortingService</interface>

    <property name="uploadableCsvDownloadLoadSize" value="100" />
</service>

3.25. EntityListingService

EntityListingの定義(メタデータ)を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.view.entitylisting.EntityListingService

実装クラス名

org.iplass.mtp.impl.view.entitylisting.EntityListingService

EntityListingServiceの設定

EntityListingServiceを設定します。

設定項目
項目 説明

searchResultCacheLimit

int

User名取得のための検索内部キャッシュサイズ(件数)。デフォルト値は300です。

useSubQueryIfPossible

boolean

フィルター条件に保存リストを利用する場合に、可能な限りサブクエリを利用するか。デフォルト値はfalseです。

設定例
<service>
    <interface>org.iplass.mtp.impl.view.entitylisting.EntityListingService</interface>
    <class>org.iplass.mtp.impl.view.entitylisting.EntityListingService</class>
    <!-- User名取得のための検索内部キャッシュサイズ -->
    <property name="searchResultCacheLimit" value="300" />
    <!-- フィルター条件に保存リストを利用する場合に、可能な限りサブクエリを利用するか否か -->
    <property name="useSubQueryIfPossible" value="false" />
</service>

3.26. EntityWebApiService

EntityWebApiを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.webapi.EntityWebApiService

実装クラス名

org.iplass.mtp.impl.webapi.EntityWebApiService

EntityWebApiServiceの設定

EntityWebApiServiceを設定します。

設定項目
項目 説明

maxLimit

int

EntityWebApiの取得件数の上限。

Web APIのパラメータにて tabular=ture を指定した場合、もしくはAcceptが text/csv の場合はこの制約は適用されません。

throwSearchResultLimitExceededException

boolean

取得件数がmaxLimitを超えた際、例外をスローする場合はtrueを指定します。デフォルト値はfalseです。

csvDateTimeFormat

String

EntityWebApiのQuery検索でCSV形式の結果を返す場合のDateTime型の出力形式。未指定の場合は、実行時のLocaleFormatを利用します。

csvDateFormat

String

EntityWebApiのQuery検索でCSV形式の結果を返す場合のDate型の出力形式。未指定の場合は、実行時のLocaleFormatを利用します。

csvTimeFormat

String

EntityWebApiのQuery検索でCSV形式の結果を返す場合のTime型の出力形式。未指定の場合は、実行時のLocaleFormatを利用します。

loadWithMappedByReference

boolean

EntityWebApiのLoad処理で被参照プロパティを取得するか否かのデフォルト値です。デフォルト値はfalseです。

listWithMappedByReference

boolean

EntityWebApiのQuery検索で被参照プロパティを取得するか否かのデフォルト値です。デフォルト値はfalseです。

csvListWithMappedByReference

boolean

EntityWebApiのQuery検索のCSV形式の場合、被参照プロパティを取得するか否かのデフォルト値です。 未設定時はlistWithMappedByReferenceの設定値が適用されます。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

enableNativeHint

boolean

EntityWebApiの呼び出し時にNative Hintの指定を可能とするか否かを設定。デフォルト値はfalseです。

permitRolesToSpecifyOptions

String、複数指定可

EntityWebApiの呼び出し時に制御オプションの指定を可能とするロールを設定。Adminユーザーの場合はロールが設定されていなくても制御オプションは利用できます。

設定例
<service>
    <interface>org.iplass.mtp.impl.webapi.EntityWebApiService</interface>
    <property name="maxLimit" value="1000" />
    <property name="csvDateTimeFormat" value="yyyy/MM/dd HH:mm:ss" />
    <property name="csvDateFormat" value="yyyy/MM/dd" />
    <property name="csvTimeFormat" value="HH:mm:ss" />

    <property name="loadWithMappedByReference" value="true" />

    <property name="permitRolesToSpecifyOptions" value="RoleA" />
    <property name="permitRolesToSpecifyOptions" value="RoleB" />

</service>

3.27. FulltextSearchService

全文検索のサービスです。 全文検索の実装として、Luceneを利用した全文検索、Elasticsearchを利用した全文検索、OpenSearchを利用した全文検索、Solrを利用した全文検索を標準提供します。

インタフェース名

org.iplass.mtp.impl.fulltextsearch.FulltextSearchService

実装クラス名

Luceneを利用した全文検索
org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService
Elasticsearchを利用した全文検索
org.iplass.mtp.impl.fulltextsearch.elasticsearch.ElasticsearchFulltextSearchService
OpenSearchを利用した全文検索
org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService
(非推奨)Solrを利用した全文検索
org.iplass.mtp.impl.fulltextsearch.FulltextSearchSolrService

FulltextSearchServiceの設定

全文検索の共通項目を設定します。

設定項目
項目 説明

useFulltextSearch

boolean

全文検索を利用するか。デフォルト値はfalseです。

maxRows

int

全文検索の結果件数の上限。デフォルト値は1000です。

throwExceptionWhenOverLimit

boolean

maxRows以上の件数がヒットした場合の挙動。 trueの場合、件数以上取得できたことのメッセージを表示し、検索結果は出しません。 falseの場合、件数以上取得できたことのメッセージを表示し、検索結果も出します。デフォルト値はtrueです。

redundantTimeMinutes

long

前回Index更新日時-redundantTimeMinutes より後のデータに対してIndexの処理を行います。デフォルト値は10です。

binaryParser

BinaryReferenceParser、複数指定可

BinaryReference解析用のParser。

binaryParseLimitLength

int

BinaryReferenceのParse可能な最大文字数。

scorePropertyName

String

検索結果のEntityにスコア値を格納する際のプロパティ名を設定。デフォルト値は score です。

includeMappedByReferenceIfNoPropertySpecified

boolean

検索結果のEntityに被参照の値も取得するかどうかを設定。デフォルト値は false です。

BinaryReferenceParser

Apache Tikaを利用してBinaryReferenceの内容を解析します。

classはorg.iplass.mtp.impl.fulltextsearch.parser.BinaryReferenceParserの実装クラスを指定します。

標準で以下のBinaryReferenceParserを提供します。

標準で提供しているBinaryReferenceParserの共通設定項目は次の通りです(BinaryNameTypeParserを除く)。

共通設定項目
項目 説明

continuableExceptions

String、複数指定可

バイナリ情報をパースする際に、例外が発生しても処理継続したい例外クラス名を設定する。
設定値にはパース時に発生する例外の完全修飾クラス名を設定する。

BinaryAutoDetectParser

TikaのAutoDetectParserを利用して全てのタイプを対象に解析します。 ただし解析に必要となる依存ライブラリが存在しない場合はスキップします。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryAutoDetectParserを指定します。 設定変更可能な項目は、共通設定項目のみです。

BinaryHtmlParser

HTML用Parser。 TikaのHtmlParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParserを指定します。 設定変更可能な項目は、共通設定項目のみです。

BinaryOfficeParser

OfficeDocument(2003以前の形式)用Parser。 TikaのOfficeParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParserを指定します。 設定変更可能な項目は、共通設定項目のみです。

BinaryOOXMLParser

OfficeDocument(OOXML形式)用Parser。 TikaのOOXMLParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParserを指定します。 設定変更可能な項目は、共通設定項目のみです。

BinaryPDFParser

PDF用Parser。 TikaのPDFParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParserを指定します。 設定変更可能な項目は、共通設定項目のみです。

BinaryTextParser

PlainText用Parser。 TikaのTXTParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParserを指定します。 設定変更可能な項目は、共通設定項目のみです。

BinaryXMLParser

XML用Parser。 TikaのXMLParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParserを指定します。 設定変更可能な項目は、共通設定項目のみです。

BinaryNameTypeParser

全てのバイナリファイルを対象に、nameとtypeを返します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParserを指定します。 設定変更可能な項目はありません。

LuceneFulltextSearchServiceの設定

Luceneを利用した全文検索の項目を設定します。

設定項目
項目 説明

indexWriterSetting

IndexWriterSetting、省略可能

IndexWriterの設定です。

directory

String

Indexファイルを保存するルートディレクトリを指定。 ルートディレクトリ配下にテナント、Entity単位にIndexファイルが作成されます。

luceneFSDirectory

org.apache.lucene.store.SimpleFSDirectoryorg.apache.lucene.store.MMapDirectoryorg.apache.lucene.store.NIOFSDirectory

ファイルシステムにINDEXファイルを保存するLucene Directoryの実装クラス。
LuceneのドキュメントによりWindowsの環境で NIOFSDirectory の利用は推薦しません。
※ 未設定の場合、Luceneが決定するデフォルトのFSDirectoryが利用されます。

luceneFSDirectoryMaxChunkSizeMB

int

org.apache.lucene.store.MMapDirectory クラスが利用するメモリマッピング用maxChunkSizeです。
未設定の場合、Luceneが決定するデフォルト値が利用されます。
org.apache.lucene.store.MMapDirectory 以外が選択されている場合、この設定値は無視されます。

analyzerSetting

AnalyzerSetting、省略可能

analyzerを初期化する設定クラスです。設定が省略された場合はJapaneseAnalyzerSettingが適用されます。

defaultOperator

Operator

演算子。設定可能な演算子は AND または OR です。

searcherAutoRefreshTimeMinutes

int

iPLAssが保持しているLuceneのIndexSearcher( ≒ IndexReader)が自動的に更新される時間間隔(分)です。
デフォルト値が「-1」となっています、「0」以下の値を設定している場合、自動更新処理は実行されません。

IndexWriterSetting

classはorg.iplass.mtp.impl.fulltextsearch.lucene.IndexWriterSettingを指定します。

設定項目
項目 説明

ramBufferSizeMB

double

Index作成時のメモリのキャッシュサイズ。デフォルト値は64.0です。

commitLimit

int

Index作成時のコミット単位。未指定の場合は、全件一括でコミットします。

mergePolicy

org.apache.lucene.index.MergePolicy

org.apache.lucene.index.MergePolicyのインスタンスを指定します。

infoStream

org.apache.lucene.util.InfoStream

org.apache.lucene.util.InfoStreamのインスタンスを指定します。 DEBUGログに出力する org.iplass.mtp.impl.fulltextsearch.lucene.LoggingInfoStream を提供していますので、利用することも可能です。

AnalyzerSetting

analyzerを初期化する設定クラスです。

classはorg.iplass.mtp.impl.fulltextsearch.lucene.AnalyzerSettingの実装クラスを指定します。

標準で以下のAnalyzerSettingを提供します。

SimpleAnalyzerSetting

Analyzerクラス名を指定可能なシンプルなAnalyzerSettingです。 org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting を指定します。

設定項目
項目 説明

className

String

org.apache.lucene.analysis.Analyzerの実装クラス名を指定。

JapaneseAnalyzerSetting

JapaneseAnalyzerを初期化するAnalyzerSettingです。 org.iplass.mtp.impl.fulltextsearch.lucene.JapaneseAnalyzerSetting を指定します。

設定項目
項目 説明

className

String

org.apache.lucene.analysis.Analyzerの実装クラス名を指定。 デフォルト値は org.apache.lucene.analysis.ja.JapaneseAnalyzer です。

mode

org.apache.lucene.analysis.ja.JapaneseTokenizer.Mode

トークナイゼーションモード。JapaneseTokenizer.Modeのenum値を指定します。デフォルト値は SEARCH です。

userDictionary

String

ユーザー定義辞書。クラスパス上に配置する必要があります。
未設定の場合、ユーザー定義辞書を利用しないと同じようになります。

stopwords

String

ストップワード定義ファイル。クラスパス上に配置する必要があります。
未設定の場合、lucene-analyzers-kuromoji-XXX.jar 内の定義ファイルが適用されます。

stoptags

String

ストップタグ定義ファイル。クラスパス上に配置する必要があります。
未設定の場合、lucene-analyzers-kuromoji-XXX.jar 内の定義ファイルが適用されます。

PerEntityAnalyzerSetting

Entity定義単位に異なったAnalyzerを利用するためのAnalyzerSettingです。 org.iplass.mtp.impl.fulltextsearch.lucene.PerEntityAnalyzerSetting を指定します。

設定項目
項目 説明

settingsPerEntity

AnalyzerSetting、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerSettingのインスタンスを設定します。

defaultSetting

AnalyzerSetting

デフォルトで適用されるAnalyzerを指定。settingsPerEntityで指定されていないEntity定義に適用されます。

ElasticsearchFulltextSearchServiceの設定

Elasticsearchを利用した全文検索の項目を設定します。

設定項目
項目 説明

restClientFactory

RestClientFactory

RestClientFactoryの設定です。

analysisFactory

AnalysisFactory

AnalysisFactoryの設定です。

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerPropertyの設定です。

analyzerPropertyPerEntity

AnalyzerProperty、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerPropertyのインスタンスを設定します。

defaultOperator

Operator

演算子。設定可能な演算子は AND または OR です。

RestClientFactory

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.RestClientFactoryの実装クラスを指定します。

標準で以下のRestClientFactoryを提供します。

DefaultRestClientFactory

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.DefaultRestClientFactoryを指定します。

設定項目
項目 説明

elasticsearchUrl

String、複数指定可

ElasticsearchサーバのURL

headers

String、Map形式

リクエスト時に設定できるHeader。Map形式で指定可能です。

connectionTimeout

int

http通信確立時のConnectionTimeout値(ミリ秒)。デフォルト値は-1です。

soTimeout

int

http通信確立時のSoTimeout値(ミリ秒)。デフォルト値は-1です。

proxyHost

String

http通信する際のproxyHost。

proxyPort

int

http通信する際のproxyPort。

userName

String

BASIC認証で利用するユーザー名

password

String

BASIC認証で利用するパスワード

AnalysisFactory

カスタムでAnalyzer等を定義したい場合に利用するクラスです。

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalysisFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

DefaultAnalysisFactory

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.DefaultAnalysisFactoryを指定します。

設定項目
項目 説明

analyzer

AnalyzerFactory、Map形式

keyとして定義名を指定し、valueとしてAnalyzerFactoryのインスタンスを設定します。

charFilter

CharFilterFactory、Map形式

keyとして定義名を指定し、valueとしてCharFilterFactoryのインスタンスを設定します。

filter

TokenFilterFactory、Map形式

keyとして定義名を指定し、valueとしてTokenFilterFactoryのインスタンスを設定します。

tokenizer

TokenizerFactory、Map形式

keyとして定義名を指定し、valueとしてTokenizerFactoryのインスタンスを設定します。

AnalyzerFactory

カスタムでAnalyzerを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalyzerFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

CustomAnalyzerFactory

charFilter、tokenizer、filterを組み合わせてAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.CustomAnalyzerFactoryを指定します。

設定項目
項目 説明

charFilter

String、複数指定可

charFilterの定義名

filter

String、複数指定可

filterの定義名

tokenizer

String、必須

tokenizerの定義名

KuromojiAnalyzerFactory

カスタマイズされたKuromojiAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.KuromojiAnalyzerFactoryを指定します。

設定項目
項目 説明

mode

co.elastic.clients.elasticsearch._types.analysis.KuromojiTokenizationMode

tokenizationモードの設定

userDictionary

String

ユーザー辞書

CharFilterFactory

カスタムでCharFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalyzerFactoryの実装クラスを指定します。

TokenFilterFactory

カスタムでTokenFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.filter.TokenFilterFactoryの実装クラスを指定します。

TokenizerFactory

カスタムでTokenizerを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.tokenizer.TokenizerFactoryの実装クラスを指定します。

AnalyzerProperty

Analyzerを指定する際に利用します。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.mappings.AnalyzerPropertyを指定します。

設定項目
項目 説明

analyzer

String

デフォルトで利用するAnalyzer名

searchAnalyzer

String

検索で利用するAnalyzer名

searchQuoteAnalyzer

String

フレーズを利用した検索で利用するAnalyzer名

OpenSearchFulltextSearchServiceの設定

OpenSearchを利用した全文検索の項目を設定します。

設定項目
項目 説明

restClientFactory

RestClientFactory

RestClientFactoryの設定です。

analysisFactory

AnalysisFactory

AnalysisFactoryの設定です。

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerPropertyの設定です。

analyzerPropertyPerEntity

AnalyzerProperty、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerPropertyのインスタンスを設定します。

defaultOperator

Operator

演算子。設定可能な演算子は AND または OR です。

RestClientFactory

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.RestClientFactoryの実装クラスを指定します。

標準で以下のRestClientFactoryを提供します。

DefaultRestClientFactory

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.DefaultRestClientFactoryを指定します。

設定項目
項目 説明

openSearchUrl

String、複数指定可

OpenSearchサーバのURL

headers

String、Map形式

リクエスト時に設定できるHeader。Map形式で指定可能です。

connectionTimeout

int

http通信確立時のConnectionTimeout値(ミリ秒)。デフォルト値は-1です。

soTimeout

int

http通信確立時のSoTimeout値(ミリ秒)。デフォルト値は-1です。

proxyHost

String

http通信する際のproxyHost。

proxyPort

int

http通信する際のproxyPort。

userName

String

BASIC認証で利用するユーザー名

password

String

BASIC認証で利用するパスワード

httpRequestInterceptorFactory

HttpRequestInterceptorFactory

HttpRequestInterceptorFactoryの設定です。userNameとpasswordの値が設定されていない場合に適用されます。

HttpRequestInterceptorFactory

org.apache.http.HttpRequestInterceptor を生成するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.HttpRequestInterceptorの実装クラスを指定します。

標準で以下のHttpRequestInterceptorFactoryを提供します。

AWSRequestSigningApacheInterceptorFactory

com.amazonaws.http.AWSRequestSigningApacheInterceptor を生成するFactoryクラスです。BASIC認証ではなく、IAM認証情報を使用してリクエストを署名したい場合に利用します。

AWSRequestSigningApacheInterceptorで利用するAWSCredentialsProviderについて、AWSSettingのaccessKeyIdとsecretKeyが設定されている場合はAWSStaticCredentialsProviderが適用され、未設定の場合はDefaultAWSCredentialsProviderChainが適用されます。

classはorg.iplass.mtp.impl.aws.AWSRequestSigningApacheInterceptorFactoryを指定します。

設定項目
項目 説明

serviceName

String

サービス名

region

String

リージョン名

AnalysisFactory

カスタムでAnalyzer等を定義したい場合に利用するクラスです。

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalysisFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

DefaultAnalysisFactory

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.DefaultAnalysisFactoryを指定します。

設定項目
項目 説明

analyzer

AnalyzerFactory、Map形式

keyとして定義名を指定し、valueとしてAnalyzerFactoryのインスタンスを設定します。

charFilter

CharFilterFactory、Map形式

keyとして定義名を指定し、valueとしてCharFilterFactoryのインスタンスを設定します。

filter

TokenFilterFactory、Map形式

keyとして定義名を指定し、valueとしてTokenFilterFactoryのインスタンスを設定します。

tokenizer

TokenizerFactory、Map形式

keyとして定義名を指定し、valueとしてTokenizerFactoryのインスタンスを設定します。

AnalyzerFactory

カスタムでAnalyzerを定義したい場合に利用するクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalyzerFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

CustomAnalyzerFactory

charFilter、tokenizer、filterを組み合わせてAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.CustomAnalyzerFactoryを指定します。

設定項目
項目 説明

charFilter

String、複数指定可

charFilterの定義名

filter

String、複数指定可

filterの定義名

tokenizer

String、必須

tokenizerの定義名

KuromojiAnalyzerFactory

カスタマイズされたKuromojiAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactoryを指定します。

設定項目
項目 説明

mode

co.elastic.clients.opensearch._types.analysis.KuromojiTokenizationMode

tokenizationモードの設定

userDictionary

String

ユーザー辞書

CharFilterFactory

カスタムでCharFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalyzerFactoryの実装クラスを指定します。

TokenFilterFactory

カスタムでTokenFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.filter.TokenFilterFactoryの実装クラスを指定します。

TokenizerFactory

カスタムでTokenizerを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.tokenizer.TokenizerFactoryの実装クラスを指定します。

AnalyzerProperty

Analyzerを指定する際に利用します。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerPropertyを指定します。

設定項目
項目 説明

analyzer

String

デフォルトで利用するAnalyzer名

searchAnalyzer

String

検索で利用するAnalyzer名

searchQuoteAnalyzer

String

フレーズを利用した検索で利用するAnalyzer名

FulltextSearchSolrServiceの設定

FulltextSearchSolrServiceは将来削除される予定です。 ElasticsearchFulltextSearchService もしくは OpenSearchFulltextSearchService を利用することを推奨します。

Solrを利用した全文検索の項目を設定します。

設定項目
項目 説明

solrUrl

String、複数指定可

用意したsolrサーバのURL。

solrMasterUrl

String

レプリケーション機能利用時のマスターサーバのURL。

highlightPreTag

String

ハイライト用の開始タグ。

highlightPostTag

String

ハイライト用の終了タグ。

設定例(LuceneFulltextSearchService利用の場合)
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <class>org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService</class>

    <property name="useFulltextSearch" value="true" />
    <property name="maxRows" value="1000" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <property name="directory" value="/lucene" />

    <property name="indexWriterSetting">
        <property name="ramBufferSizeMB" value="64.0"/>
        <property name="commitLimit" value="1000"/>
        <property name="infoStream" class="org.iplass.mtp.impl.fulltextsearch.lucene.LoggingInfoStream"/>
    </property>
    <property name="redundantTimeMinutes" value="10"/>

    <!--
        some.SampleEntity、some.AnotherSampleEntityの場合CJKAnalyzerを利用し、
        それ以外の場合はJapaneseAnalyzerを利用する設定例
    -->
    <property name="analyzerSetting" class="org.iplass.mtp.impl.fulltextsearch.lucene.PerEntityAnalyzerSetting">
        <property name="defaultSetting" class="org.iplass.mtp.impl.fulltextsearch.lucene.JapaneseAnalyzerSetting">
            <property name="mode" value="SEARCH" />
            <property name="userDictionary" value="/lucene/userdict.txt" />
            <property name="stopwords" value="/lucene/stopwords.txt" />
            <property name="stoptags" value="/lucene/stoptags.txt" />
        </property>
        <property name="settingsPerEntity">
            <property name="some.SampleEntity" class="org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting">
                <property name="className" value="org.apache.lucene.analysis.cjk.CJKAnalyzer"/>
            </property>
            <property name="some.AnotherSampleEntity" class="org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting">
                <property name="className" value="org.apache.lucene.analysis.cjk.CJKAnalyzer"/>
            </property>
        </property>
    </property>

    <property name="defaultOperator" value="AND" />
    <property name="indexWriterCommitLimit" value="-1"/>

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
設定例(ElasticsearchFulltextSearchService利用の場合)
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <class>org.iplass.mtp.impl.fulltextsearch.elasticsearch.ElasticsearchFulltextSearchService</class>

    <property name="useFulltextSearch" value="true" />
    <property name="maxRows" value="1000" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <property name="restClientFactory"  class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.DefaultRestClientFactory">
        <property name="elasticsearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>

    <!--
    testEntityの場合、my_kuromojiを利用し、それ以外の場合はkuromojiを利用する設定例
    -->
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>

    <property name="redundantTimeMinutes" value="10"/>
    <property name="defaultOperator" value="AND" />

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
設定例(OpenSearchFulltextSearchService利用の場合)
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <class>org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService</class>

    <property name="useFulltextSearch" value="true" />
    <property name="maxRows" value="1000" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <property name="restClientFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.DefaultRestClientFactory" >
        <property name="openSearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
        <property name="httpRequestInterceptorFactory" class="org.iplass.mtp.impl.aws.AWSRequestSigningApacheInterceptorFactory" >
            <property name="serviceName" value="es"/>
            <property name="region" value="ap-northeast-1"/>
        </property>
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>

    <!--
    testEntityの場合、my_kuromojiを利用し、それ以外の場合はkuromojiを利用する設定例
    -->
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>

    <property name="defaultOperator" value="AND" />

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
設定例
<!--
    ■全文検索で利用するService

    useFulltextSearch:              全文検索を利用する場合は、trueへ変更してください。
    maxRows:                        全文検索の結果件数の上限を設定してください。
    throwExceptionWhenOverLimit:    maxRows以上の件数がヒットした場合の挙動を切り替えます。
                                    true  -> 件数以上取得できたことのメッセージを表示し、検索結果は出さない。
                                    false -> 件数以上取得できたことのメッセージを表示し、検索結果も出す。
    indexWriterRAMBufferSizeMB: Index作成時のメモリのキャッシュサイズを設定します。
    redundantTimeMinutes:           「前回Index更新日時-redundantTimeMinutes」より後のデータに対してIndexの処理を行います。

    □ solr利用の場合
    solrUrl:
        用意したsolrサーバのURLを指定してください。

    □ lunece利用の場合
    directory:
        Index情報(検索対象値)の保存先を指定してください。
    analyzer:
        利用するanalyzerを指定してください。

    □ Elasticsearch利用の場合
    elasticsearchUrl:
        用意したElasticsearchサーバのURLを指定してください。
    defaultAnalyzerProperty:
        利用するanalyzerを指定してください。

    □ OpenSearch利用の場合
    openSearchUrl:
        用意したOpenSearchサーバのURLを指定してください。
    defaultAnalyzerProperty:
        利用するanalyzerを指定してください。


    ■use to fulltext search service

    useFulltextSearch:              If use fulltext search, change to true.
    maxRows:                        Setting max rows of fulltext search result.
    throwExceptionWhenOverLimit:    If maxRows or more of the search result is hit, set one of the operations.
                                    true  -> Display a message that was able to get maxRows or more, and not display search result.
                                    false -> Display a message that was able to get maxRows or more, and display search result.
    indexWriterRAMBufferSizeMB: Setting the memory cache size when creating a index.
    redundantTimeMinutes:           do the processing of the Index for the data after the "previous Index update date -redundantTimeMinutes".

    □ use to solr
    solrUrl:
        Set url of solr server.

    □ use to lunece
    directory:
        Set save directory of the index information.
    analyzer:
        Set the analyzer to use

    □ use to Elasticsearch
    elasticsearchUrl:
        Set url of Elasticsearch server.
    defaultAnalyzerProperty:
        Set the analyzer to use

    □ use to OpenSearch
    openSearchUrl:
        Set url of OpenSearch server.
    defaultAnalyzerProperty:
        Set the analyzer to use
-->
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <property name="useFulltextSearch" value="false" />
    <property name="maxRows" value="1000" />
    <property name="highlightPreTag" value="&lt;b style=&quot;background:aquamarine&quot;&gt;" />
    <property name="highlightPostTag" value="&lt;/b&gt;" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <!-- BinaryReferenceのParse可能な最大文字数 -->
    <property name="binaryParseLimitLength" value="100000"/>

    <!--
        BinaryReference用Parser設定。
        org.iplass.mtp.impl.fulltextsearch.parser.BinaryReferenceParser
        を実装したParserを設定可能。
        BinaryReferenceのタイプに対して対応されているParserを上から順にチェックする。
     -->

    <!-- PDF用Parser。TikaのPDFParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <!-- OfficeDocument(OOXML形式)用Parser。TikaのOOXMLParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <!-- OfficeDocument(2003以前の形式)用Parser。TikaのOfficeParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <!-- RTFファイルの解析例外は処理継続する -->
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <!-- HTML用Parser。TikaのHtmlParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <!-- PlainText用Parser。TikaのTXTParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <!-- XML用Parser。TikaのXMLParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />

    <!-- TikaのAutoDetectParserを利用して全てのタイプを対象に解析する。
        ただし解析に必要となる依存ライブラリが存在しない場合はスキップされる -->
    <!--
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryAutoDetectParser" />
    -->

    <!-- 全てのバイナリファイルを対象に、nameとtypeのみ返す -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

    <!-- solr利用 -->
    <!--
    <class>org.iplass.mtp.impl.fulltextsearch.FulltextSearchSolrService</class>
    <property name="solrUrl" value="http://ADDRESS:PORT/solr/coreName/" />
     -->

    <!-- lucene利用 -->
    <class>org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService</class>
    <property name="directory" value="D:\tmp\lucene" />
    <property name="defaultOperator" value="AND" />
    <property name="analyzer" value="org.apache.lucene.analysis.ja.JapaneseAnalyzer" />
    <!-- JapaneseAnalyzerを初期化する設定。
    <property name="analyzerSetting" class="org.iplass.mtp.impl.fulltextsearch.JapaneseAnalyzerSetting">
        <property name="userDictionary" value="/lucene/userdict.txt" />
        <property name="mode" value="SEARCH" />
        <property name="stopwords" value="/lucene/stopwords.txt" />
        <property name="stoptags" value="/lucene/stoptags.txt" />
    </property>
    -->
    <property name="indexWriterRAMBufferSizeMB" value="64.0"/>
    <property name="redundantTimeMinutes" value="10"/>
    <property name="indexWriterCommitLimit" value="-1"/>

    <!-- Elasticsearch利用 -->
    <!--
    <class>org.iplass.mtp.impl.fulltextsearch.elasticsearch.ElasticsearchFulltextSearchService</class>
    <property name="useFulltextSearch" value="true" />
    <property name="restClientFactory"  class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.DefaultRestClientFactory">
        <property name="elasticsearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>
    -->

    <!-- OpenSearch利用 -->
    <!--
    <class>org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService</class>
    <property name="restClientFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.DefaultRestClientFactory" >
        <property name="openSearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
        <property name="httpRequestInterceptorFactory" class="org.iplass.mtp.impl.aws.AWSRequestSigningApacheInterceptorFactory" >
            <property name="serviceName" value="es"/>
            <property name="region" value="ap-northeast-1"/>
        </property>
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>
    -->
</service>

3.28. GemConfigService

汎用画面全般の動作の設定を行うサービスです。

インタフェース名

org.iplass.gem.GemConfigService

実装クラス名

コミュニティエディション用設定
org.iplass.gem.GemConfigService
エンタープライズエディション用設定
org.iplass.gem.EnterpriseGemConfigService

GemConfigServiceの設定

コミュニティエディション用の動作を設定します。

設定項目
項目 説明

loadWithReference

boolean

リクエストのパラメータを基に参照データをロードする際、参照プロパティも合わせてロードするか。デフォルト値はfalseです。

formatNumberWithComma

boolean

詳細画面で数値プロパティの値をカンマでフォーマットするか。デフォルト値はtrueです。

csvDownloadMaxCount

int

CSVダウンロード件数の上限値。デフォルト値は65535です。

uploadableCsvDownloadLoadSize

int

Upload形式のCSVダウンロード時に多重度複数の参照を含むEntityの一括ロード件数。デフォルト値は1です。

csvDownloadCharacterCode

String、複数指定可

CSVダウンロードの文字コード。デフォルト値は UTF-8 です。

csvDownloadQuoteAll

boolean

CSVダウンロードで常時ダブルクォートの出力を行うか。デフォルト値はtrueです。

csvDownloadReferenceVersion

boolean

CSVダウンロードで参照項目のバージョンを出力するか。デフォルト値はtrueです。

uploadableCsvDownloadWithMappedByReference

boolean

Upload形式のCSVダウンロード時に被参照プロパティも出力するか。デフォルト値はfalseです。

csvUploadCommitCount

int

CSVアップロードのコミット単位。デフォルト値は1000です。

csvUploadAsync

boolean

CSVアップロードを非同期で行うか。デフォルト値はfalseです。
非同期で行う場合は、 RdbQueueService[useQueue]プロパティをtrueに設定してください。

csvUploadStatusPollingInterval

int

CSVアップロードのステータスポーリングのインターバル。デフォルト値は10000(10秒)です。

searchResultCacheLimit

int

CSVダウンロード時User名取得のための検索内部キャッシュサイズ。デフォルト値は300です。

confirmEditSave

boolean

編集画面、一括更新画面で保存時に確認ダイアログを表示するか。デフォルト値はfalseです。 BulkLayoutを利用しない一括更新の場合は無条件で確認ダイアログが表示されます。

confirmEditCancel

boolean

編集画面でキャンセル時に確認ダイアログを表示するか。デフォルト値はtrueです。

topViewEditCancelBackToTop

boolean

詳細画面から編集画面に遷移した際にキャンセル時にTopViewに戻るか。デフォルト値はfalse(詳細画面に戻る)です。

3.0.20までの互換設定です。今後は詳細画面に遷移する動作に統一する予定です。

showSeachCondResetButton

boolean

検索画面でリセットボタンを表示するか。デフォルト値はtrueです。

searchResultDispRowCount

int

検索画面で表示する検索結果の件数。デフォルト値は10です。 個別のEntityView定義の検索結果の設定で上書きすることが可能です。

maxOfDetailSearchItems

int

詳細検索画面における検索項目の上限数。デフォルト値は100です。

searchInterval

int

検索処理のインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

csvDownloadInterval

int

CSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

csvDownloadWithFooter

boolean

汎用検索のCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

csvDownloadFooter

String

汎用検索のCSVダウンロードのフッター文言。

useDisplayLabelItemInSearch

boolean

検索処理で表示ラベルとして扱うプロパティを検索条件に利用するか。trueの場合、ReferencePropertyEditorで「表示ラベルとして扱うプロパティ」として設定された項目を通常検索のテキスト入力による条件指定時、または詳細検索の条件項目として設定します。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

useDisplayLabelItemInCsvDownload

boolean

CSVダウンロード処理で表示ラベルとして扱うプロパティを出力するか。trueの場合、ReferencePropertyEditorで「表示ラベルとして扱うプロパティ」として設定された項目をCSV項目として出力します。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

showPulldownPleaseSelectLabel

boolean

プルダウンの未選択時のラベル「選択してください」を表示するか。デフォルト値はtrueです。

datePickerDefaultOption

String

Datepickerのデフォルトオプション。デフォルト値は以下です。
changeMonth:true,changeYear:true,yearRange:"c-10:c+10"

recycleBinMaxCount

int

ゴミ箱の表示件数上限値。未指定の場合のデフォルト値は100です。-1を指定した場合は無制限となります。

deleteAllCommandBatchSize

int

一括削除のコミットバッチサイズ件数。未指定の場合のデフォルト値は100です。一括削除コミットタイプがDIVISIONの場合適用されます。

bulkUpdateAllCommandBatchSize

int

一括更新のコミットバッチサイズ件数。未指定の場合のデフォルト値は100です。一括更新コミットタイプがDIVISIONの場合適用されます。

binaryDownloadLoggingTargetProperty

BinaryDownloadLoggingTargetProperty、複数指定可

バイナリダウンロード用ログの出力対象のプロパティ。

binaryUploadAcceptMimeTypesPattern

String

エンティティのバイナリプロパティでアップロード可能なファイルのMIME Typeパターンを指定します。設定値は正規表現パターンを指定します。
設定が無い場合はアップロード時のファイルの MIME Type の確認は実施しません。
設定内容は全エンティティのバイナリプロパティに反映されます。

設定例

  • CSVファイルのアップロード許可 ^(text/csv)$

  • PDFと画像のアップロード許可 ^(application/pdf|image/.*)$

検証対象となる MIME Type の決定方法については、WebFrontendService uploadFileTypeDetector, FileTypeDetector を参照してください。

imageColors

ImageColorSetting、複数指定可

検索画面や詳細画面、メニュー等に設定するイメージカラーの設定。

skins

Skin、複数指定可

スキン。

themes

Theme、複数指定可

テーマ。

entityViewHelper

EntityViewHelper

検索画面や詳細画面を表示する際のヘルパークラス。

shallowCopyLobData

boolean

エンティティをコピーする際にLobデータをシャッローコピーするか。デフォルト値はfalseです。

autoGenerateShowSystemProperty

boolean

汎用画面の自動生成処理でシステム項目を表示するか。 autoGenerateSystemProperties で指定したプロパティを詳細・編集画面で「システム情報」Secitonとして読み取り専用項目で出力します。 新規作成画面では表示しません。デフォルト値は false です。

autoGenerateSystemProperties

String

汎用画面の自動生成処理の「システム情報」に表示するプロパティ。カンマ区切り。以下のプロパティのみ対象。
oid , version , createBy , createDate , updateBy , updateDate , lockedBy

autoGenerateSystemPropertyDisplayPosition

String

汎用画面の自動生成処理の「システム情報」表示位置。 TOPBOTTOM 。デフォルトは TOP です。

autoGenerateExcludeOidWhenCustomOid

boolean

汎用画面の自動生成処理の「システム情報」で、EntityのOIDプロパティをカスタマイズしている場合にOIDを表示しないか。デフォルト値は true です。

autoGenerateUseUserPropertyEditor

boolean

createByupdateBylockedBy にUserPropertyEditorを利用するか。 デフォルト値は true です。

permitRolesToGem

String、複数指定可

GemAuthでのGem許可ロール。 デフォルト値は GemUserAppAdmin です。

permitRolesToNoView

String、複数指定可

GemAuthでのEntityViewが未定義の場合の許可ロール。 デフォルト値は AppAdmin です。

EnterpriseGemConfigServiceの設定

エンタープライズエディション用の動作を設定します。 コミュニティエディション用の設定と併せて設定してください。

設定項目
項目 説明

savedListCsvDownloadInterval

int

SavedList一覧のCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

entitylistingSearchInterval

int

EntityListingの検索処理のインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

entitylistingCsvDownloadInterval

int

EntityListingのCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

aggregationCsvDownloadInterval

int

AggregationのCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

aggregationRawdataCsvDownloadInterval

int

AggregationのローデータCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

showBothAggregationCsvDownloadButton

boolean

AggregationのCSVダウンロードを集計表の上下に表示するか。デフォルト値はfalseです。

dividingTableSideAtCrosstabCsvDownload

boolean

Aggregation(Crosstab)のCSVダウンロードで表側を分割して出力するか。デフォルト値はfalseです。

dividingTableHeadAtCrosstabCsvDownload

boolean

Aggregation(Crosstab)のCSVダウンロードで表頭を分割して出力するか。デフォルト値はfalseです。

outputItemLabelCrosstabCsvDownload

boolean

Aggregation(Crosstab)のCSVダウンロードで表頭/表側のアイテム名を表示するか。デフォルト値はfalseです。

entitylistingSearchLimit

int

EntityListingの検索Limit。デフォルト値は10です。

entitylistingCsvDownloadWithFooter

boolean

EntityListingのCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

entitylistingCsvDownloadFooter

String

EntityListingのCSVダウンロードのフッター文言。

aggregationCsvDownloadWithFooter

boolean

集計のCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

aggregationCsvDownloadFooter

String

集計のCSVダウンロードのフッター文言。

aggregationRawdataCsvDownloadWithFooter

boolean

集計のローデータCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

aggregationRawdataCsvDownloadFooter

String

集計のローデータのCSVダウンロードのフッター文言。

confirmUserTaskSubmit

boolean

ワークフローのタスク編集画面でタスク確認ダイアログを表示するか。デフォルト値はfalseです。

confirmUserTaskCancel

boolean

ワークフローのタスク編集画面でキャンセル確認ダイアログを表示するか。デフォルト値はfalseです。

BinaryDownloadLoggingTargetProperty

classはorg.iplass.gem.BinaryDownloadLoggingTargetPropertyを指定します。

バイナリダウンロード用ログの出力対象のプロパティです。以下の項目を設定可能です。

項目 説明

entityName

String

エンティティ名。

propertyName

String

プロパティ名。

ImageColorSetting

classはorg.iplass.gem.ImageColorSettingを指定します。

検索画面や詳細画面、メニュー等に設定するイメージカラーと、対応するCSSを設定します。 イメージカラーを追加する場合、対応するCSSを作成してください。

項目 説明

colorName

String

イメージカラー名。

cssSettings

CssSetting、複数指定可

スキンと対応するCSSファイルのパスの設定。

CssSetting

classはorg.iplass.gem.CssSettingを指定します。

スキンと対応するCSSファイルのパスを設定します。

項目 説明

skinName

String

スキン名。

cssPath

String

CSSファイルのパス。

Skin

classはorg.iplass.mtp.tenant.Skinを指定します。 以下の項目を設定可能です。

項目 説明

displayName

String

表示名。

skinName

String

スキン名。

pageSkinName

String

ページ全体用のスキン名。

menuSkinName

String

メニュー用のスキン名。

Theme

classはorg.iplass.mtp.tenant.Themeを指定します。 以下の項目を設定可能です。

項目 説明

displayName

String

表示名。

themeName

String

テーマ名。

EntityViewHelper

検索画面や詳細画面を表示する際のヘルパークラスを設定します。

classはorg.iplass.gem.EntityViewHelperの実装クラスを指定します。

標準で以下のEntityViewHelperを提供しています。

EntityViewHelperImpl

コミュニティエディション向けのEntityViewHeplerです。

classにorg.iplass.gem.EntityViewHelperImplを指定します。 設定可能な項目はありません。

EnterpriseEntityViewHelperImpl

エンタープライズエディション向けのEntityViewHelperです。

classにorg.iplass.gem.EnterpriseEntityViewHelperImplを指定します。 設定可能な項目はありません。

設定例
<service>
    <interface>org.iplass.gem.GemConfigService</interface>
    <class>org.iplass.gem.EnterpriseGemConfigService</class>

    <!-- CSVダウンロード件数上限値 -->
    <property name="csvDownloadMaxCount" value="65535" />

    <!-- CSVダウンロード文字コード -->
    <!--
    gem-service-config.xmlにUTF8が設定されています。
    追加したい場合は以下を参考にvalueに任意の文字コードを指定し有効にして下さい。

    <property name="csvDownloadCharacterCode" value="windows-31j" additional="true" />
    <property name="csvDownloadCharacterCode" value="EUC-JP" additional="true" />
     -->
    <property name="csvDownloadCharacterCode" value="UTF-8"/>

    <!-- CSVダウンロード常時ダブルクォート出力
        標準ではtrueに設定されています。ダブルクォートを出力したくない場合はfalseにしてください。
        (," 改行が含まれる場合は設定に関係なくダブルクォートを出力します)
     -->
    <property name="csvDownloadQuoteAll" value="true"/>

    <!-- CSVダウンロード参照項目バージョン出力 -->
    <property name="csvDownloadReferenceVersion" value="true"/>

    <!-- CSVアップロードコミット単位 -->
    <property name="csvUploadCommitCount" value="1000"/>

    <!-- CSVダウンロード時User名取得のための検索内部キャッシュサイズ -->
    <property name="searchResultCacheLimit" value="300" />

    <!-- 編集画面で保存時に確認ダイアログを表示するか
        デフォルトで非表示するに設定されています。表示にしたい場合はtrueを設定してください。
    -->
    <property name="confirmEditSave" value="false"/>

    <!-- 編集画面でキャンセル時に確認ダイアログを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="confirmEditCancel" value="true"/>

    <!-- 編集画面でキャンセル時にTopViewに戻るか
         デフォルト戻らない(詳細画面に戻る)に設定されています。TopViewに戻りたい場合はtrueを設定してください。
     -->
    <property name="topViewEditCancelBackToTop" value="false"/>

    <!-- 検索画面でリセットボタンを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="showSeachCondResetButton" value="true"/>

    <!-- 検索画面で表示する検索結果の件数 -->
    <property name="searchResultDispRowCount" value="10"/>

    <!-- 詳細検索画面における検索項目の上限数 -->
    <property name="maxOfDetailSearchItems" value="100"/>

    <!-- 検索処理のインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="searchInterval" value="60000"/>

    <!-- CSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="csvDownloadInterval" value="60000"/>

    <!-- EntityListingの検索処理のインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="entitylistingSearchInterval" value="60000"/>

    <!-- EntityListingのCSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="entitylistingCsvDownloadInterval" value="60000"/>

    <!-- AggregationのCSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="aggregationCsvDownloadInterval" value="60000"/>

    <!-- AggregationのローデータCSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="aggregationRawdataCsvDownloadInterval" value="60000"/>

    <!-- AggregationのCSVダウンロードを集計表の上下に表示するか -->
    <property name="showBothAggregationCsvDownloadButton" value="false"/>

    <!-- Aggregation(Crosstab)のCSVダウンロードで表側を分割して出力するか -->
    <property name="dividingTableSideAtCrosstabCsvDownload" value="false"/>

    <!-- Aggregation(Crosstab)のCSVダウンロードで表頭を分割して出力するか -->
    <property name="dividingTableHeadAtCrosstabCsvDownload" value="false"/>

    <!-- Aggregation(Crosstab)のCSVダウンロードで表頭/表側のアイテム名を表示するか -->
    <property name="outputItemLabelCrosstabCsvDownload" value="false"/>

    <!-- 汎用検索のCSVダウンロードでフッターを出力するか -->
    <property name="csvDownloadWithFooter" value="false"/>

    <!-- 汎用検索のCSVダウンロードのフッター文言 -->
    <property name="csvDownloadFooter" value=""/>

    <!-- 検索処理で表示ラベルとして扱うプロパティを検索条件に利用するか -->
    <property name="useDisplayLabelItemInSearch" value="true"/>

    <!-- CSVダウンロード処理で表示ラベルとして扱うプロパティを出力するか -->
    <property name="useDisplayLabelItemInCsvDownload" value="true"/>

    <!-- EntityListingの検索Limit -->
    <property name="entitylistingSearchLimit" value="10"/>

    <!-- EntityListingのCSVダウンロードでフッターを出力するか -->
    <property name="entitylistingCsvDownloadWithFooter" value="false"/>

    <!-- EntityListingのCSVダウンロードのフッター文言 -->
    <property name="entitylistingCsvDownloadFooter" value=""/>

    <!-- 集計のCSVダウンロードでフッターを出力するか -->
    <property name="aggregationCsvDownloadWithFooter" value="false"/>

    <!-- 集計のCSVダウンロードのフッター文言 -->
    <property name="aggregationCsvDownloadFooter" value=""/>

    <!-- 集計のローデータCSVダウンロードでフッターを出力するか -->
    <property name="aggregationRawdataCsvDownloadWithFooter" value="false"/>

    <!-- 集計のローデータのCSVダウンロードのフッター文言 -->
    <property name="aggregationRawdataCsvDownloadFooter" value=""/>

    <!-- ワークフローのタスク編集画面でタスク確認ダイアログを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="confirmUserTaskSubmit" value="false"/>

    <!-- ワークフローのタスク編集画面でキャンセル確認ダイアログを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="confirmUserTaskCancel" value="false"/>

    <!-- CSVアップロード非同期設定 -->
    <!-- true(非同期)を設定する場合は、 RdbQueueServiceのuseQueueプロパティをtrueに設定してください。 -->
    <property name="csvUploadAsync" value="false"/>

    <!-- CSVアップロードステータスポーリングのインターバル、指定ミリ秒 -->
    <property name="csvUploadStatusPollingInterval" value="10000"/>

    <!-- プルダウンの「選択してください」を表示するか -->
    <property name="showPulldownPleaseSelectLabel" value="true" />

    <property name="binaryDownloadLoggingTargetProperty">
        <property name="entityName" value="mtp.maintenance.Package" />
        <property name="propertyName" value="archive" />
    </property>
    <property name="binaryDownloadLoggingTargetProperty">
        <property name="entityName" value="mtp.listing.SavedList" />
        <property name="propertyName" value="listedData" />
    </property>

    <!-- バイナリファイルアップロード受け入れ可能な MIME Type パターン。正規表現を指定する。 -->
    <!-- 設定例
    <property name="binaryUploadAcceptMimeTypesPattern" value="^(image/.*|application/pdf|text/csv)$" />
    -->

    <!-- 汎用画面、メニュー用のイメージカラー設定 -->
    <property name="imageColors">
        <property name="colorName" value="blue" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/blue.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/blue.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/blue.css" />
        </property>
    </property>
    <property name="imageColors">
        <property name="colorName" value="green" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/green.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/green.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/green.css" />
        </property>
    </property>
    <property name="imageColors">
        <property name="colorName" value="red" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/red.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/red.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/red.css" />
        </property>
    </property>
    <property name="imageColors">
        <property name="colorName" value="yellow" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/yellow.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/yellow.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/yellow.css" />
        </property>
    </property>

    <!-- スキン定義 -->
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="flat" />
        <property name="displayName" value="フラット" />
        <property name="pageSkinName" value="flat" />
        <property name="menuSkinName" value="sub-popup" />
    </property>
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="vertical" />
        <property name="displayName" value="垂直メニュー" />
        <property name="pageSkinName" value="vertical" />
        <property name="menuSkinName" value="sub-popup" />
    </property>
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="horizontal" />
        <property name="displayName" value="水平メニュー" />
        <property name="pageSkinName" value="horizontal" />
        <property name="menuSkinName" value="sub-popup" />
    </property>
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="horizontal_droplist" />
        <property name="displayName" value="水平メニュー(ドロップリストメニュー)" />
        <property name="pageSkinName" value="horizontal" />
        <property name="menuSkinName" value="sub-droplist" />
    </property>

    <!-- テーマ定義 -->
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="black" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="red" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="green" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="blue" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightred" />
        <property name="displayName" value="明赤" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightgreen" />
        <property name="displayName" value="明緑" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightblue" />
        <property name="displayName" value="明青" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="orange" />
        <property name="displayName" value="" />
    </property>
    <property name="entityViewHelper" class="org.iplass.gem.EnterpriseEntityViewHelperImpl" />
</service>

3.29. InfinispanService

Infinispanを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.infinispan.InfinispanService

実装クラス名

org.iplass.mtp.impl.infinispan.InfinispanService

InfinispanServiceの設定

InfinispanServiceを設定します。

設定項目
項目 説明

configurationFile

String

Infinispanの設定ファイル。

設定例
<service>
    <interface>org.iplass.mtp.impl.infinispan.InfinispanService</interface>
        <property name="configurationFile" value="infinispan.xml" />
</service>

3.30. InterceptorService

コマンド実行時に呼び出されるインターセプターを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.command.InterceptorService

実装クラス名

org.iplass.mtp.impl.command.InterceptorService

InterceptorServiceの設定

コマンドを実行する機能単位で呼び出すインターセプターを設定します。

設定項目
項目 説明

invoker

CommandInterceptor、複数指定可

CommandInvoker経由の明示的な呼び出し時のインターセプター。

web

CommandInterceptor、複数指定可

Actionのインターセプター。

webApi

CommandInterceptor、複数指定可

WebApiのインターセプター。

soap

CommandInterceptor、複数指定可

SOAP通信のインターセプター。

CommandInterceptor

classはorg.iplass.mtp.command.interceptor.CommandInterceptorの実装クラスを指定します。

標準で、以下のCommandInterceptorを提供します。

InitialInterceptor

classはorg.iplass.mtp.impl.webapi.interceptors.InitialInterceptorを指定します。

webApi、soapで利用可能です。

WebApiリクエストの初期処理として言語とプレビュー時刻を設定するインターセプターです。設定変更可能な項目はありません。

AuthInterceptor(WebApi)

classはorg.iplass.mtp.impl.webapi.interceptors.AuthInterceptorを指定します。

webApiで利用可能です。

カスタムヘッダーによる認証処理を行うインターセプターです。設定変更可能な項目はありません。

AuthInterceptor(SOAP)

classはorg.iplass.mtp.impl.webapi.soap.interceptors.AuthInterceptorを指定します。

soapで利用可能です。

カスタムヘッダーによる認証処理を行うインターセプターです。設定変更可能な項目はありません。

OAuthScopeInterceptor

classはorg.iplass.mtp.impl.webapi.interceptors.OAuthScopeInterceptorを指定します。

webApiで利用可能です。

OAuth2.0のscopeのチェックを行います。 設定変更可能な項目はありません。

LoggingInterceptor

classはorg.iplass.mtp.impl.command.interceptors.LoggingInterceptorを指定します。

invoker、web、soapで利用可能です。

コマンドの実行結果をログ出力するインターセプターです。設定変更可能な項目は有りません。

LoggingInterceptor(WebApi)

classはorg.iplass.mtp.impl.webapi.interceptors.LoggingInterceptorを指定します。

webApiで利用可能です。

WebApiの実行結果をログ出力するインターセプターです。以下の項目を設定可能です。

項目 説明

webapiTrace

boolean

WepApiのログを出力するか。デフォルト値はtrueです。

logParamName

String、複数指定可

ログ出力するパラメータ名。

logAttributeName

String、複数指定可

ログ出力するRequestContextのattribute名。

noStackTrace

String、複数指定可

スタックトレースを出力しない例外クラス。 複数指定する場合はプロパティを複数設定するか例外クラスを半角コロン(:)で区切って設定します。

warnLogThresholdOfSqlExecutionCount

int

警告ログを出力するSQL実行回数の閾値。
単一リクエスト中に閾値を越える回数のSQLが発行された場合、WARNレベルでログ出力されます。
デフォルト値は-1(すべてINFOレベルで出力)です。

warnLogThresholdOfExecutionTimeMillis

long

警告ログを出力する実行時間の閾値(ミリ秒)。
リクエスト処理時間が閾値を越えた場合、WARNレベルでログ出力されます。
デフォルト値は-1(すべてINFOレベルで出力)です。

TokenInterceptor

classはorg.iplass.mtp.impl.web.interceptors.TokenInterceptorを指定します。

webで利用可能です。

Actionのリクエスト時にトークンのチェックを行うインターセプターです。設定変更可能な項目はありません。

TokenInterceptor(WebApi)

classはorg.iplass.mtp.impl.web.interceptors.TokenInterceptorを指定します。

webApiで利用可能です。

WebApiのリクエスト時にトークンのチェックを行うインターセプターです。設定変更可能な項目はありません。

UnavailableInterceptor

classはorg.iplass.mtp.impl.webapi.interceptors.UnavailableInterceptorを指定します。

webApi、soapで利用可能です。

テナント単位でメンテナンスモードの切り替えを行うインターセプターです。設定変更可能な項目はありません。

TransactionInterceptor

classはorg.iplass.mtp.impl.command.interceptors.TransactionInterceptorを指定します。

invoker、web、webApi、soapで利用可能です。

トランザクションの処理を行うインターセプターです。

WebApiMetricsInterceptor

classはorg.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiMetricsInterceptorを指定します。

WebAPIのレイテンシ・SQLの発行回数をメトリクスとして記録するインターセプターです。Micrometerモジュールを適用した場合にデフォルトで追加されます。以下の項目を設定可能です。

項目 説明

provider

WebApiMetricsTagsProvider

org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiMetricsTagsProviderを実装するクラス。メトリクスに付与するタグをカスタマイズしたい場合に指定可能です。デフォルトでは、org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiMetricsTagsProviderが使用されます。

設定例
<service>
    <interface>org.iplass.mtp.impl.command.InterceptorService</interface>
    <class>org.iplass.mtp.impl.command.InterceptorService</class>

    <property name="invoker" class="org.iplass.mtp.impl.command.interceptors.LoggingInterceptor" />
    <property name="invoker" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />

    <property name="web" class="org.iplass.mtp.impl.command.interceptors.LoggingInterceptor" />
    <property name="web" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />
    <property name="web" class="org.iplass.mtp.impl.web.interceptors.TokenInterceptor" />

    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.InitialInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.AuthInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.UnavailableInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.OAuthScopeInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.LoggingInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.TokenInterceptor" />

    <property name="soap" class="org.iplass.mtp.impl.webapi.interceptors.InitialInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.webapi.soap.interceptors.AuthInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.webapi.interceptors.UnavailableInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.command.interceptors.LoggingInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />

</service>

3.31. IPAddressHistoryStoreService

過去にアクセスされたIPアドレスの保持を行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.auth.authenticate.ipaddress.IPAddressHistoryStoreService

実装クラス名

org.iplass.mtp.impl.auth.authenticate.ipaddress.UserEntityIPAddressHistoryStoreService

UserEntityIPAddressHistoryStoreServiceの設定

過去にアクセスされたIPアドレスのUserEntityへの保持について設定します。

設定項目
項目 説明

storePropertyName

String

IPアドレスの保持に利用するUserEntityのプロパティ名。デフォルト値は ipAddressHistory です。

設定例
<service>
    <interface>org.iplass.mtp.impl.auth.authenticate.ipaddress.IPAddressHistoryStoreService</interface>
    <class>org.iplass.mtp.impl.auth.authenticate.ipaddress.UserEntityIPAddressHistoryStoreService</class>
    <property name="storePropertyName" value="ipAddressHistory" />
</service>

3.32. I18nService

国際化の設定を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.i18n.I18nService

実装クラス名

org.iplass.mtp.impl.i18n.I18nService

I18nServiceの設定

I18nServiceを設定します。

設定項目
項目 説明

enableLanguages

EnableLanguages、複数指定可

利用可能言語の設定。

defaultLocaleFormat

LocaleFormat

標準のロケール書式の設定。

localeFormat

LocaleFormat、複数指定可

各ロケールの書式の設定。

languageFonts

LanguageFonts、複数指定可

各言語のフォントの設定。

genericFontFamilyList

String、複数指定可

総称フォントファミリーとして解釈する文字列リスト。languageFontsの各fontsに、本設定と一致する文字列が存在した場合、そのフォントは総称フォントファミリーとして解釈する。

EnableLanguages

classはorg.iplass.mtp.impl.i18n.EnableLanguagesを指定します。

設定可能言語です。以下の項目を設定可能です。

項目 説明

languageKey

String

言語キー。

languageName

String

言語名。

otherLanguageKey

String、複数指定可

その他の言語キー。

LocaleFormat

classはorg.iplass.mtp.impl.i18n.LocaleFormatを指定します。

ロケール書式です。以下の項目を設定可能です。

項目 説明

locale

String、複数指定可

ロケール。

serverDateFormat

String

サーバ上でのDate型形式。

serverTimeFormat

String

サーバ上でのTime型形式。

browserInputDateFormat

String

ブラウザ上でのDate型入力形式。

browserInputTimeSecFormat

String

ブラウザ上でのTime型入力形式(秒)。

browserInputTimeMinFormat

String

ブラウザ上でのTime型入力形式(分)。

browserInputTimeHourFormat

String

ブラウザ上でのTime型入力形式(時)。

outputDateFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式。

outputDateWeekdayFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(曜日付)。

excelDateFormat

String

ExcelでのDate型形式。

excelTimeFormat

String

ExcelでのTime型形式。

outputTimeSecFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(秒)。

outputTimeMinFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(分)。

outputTimeHourFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(時)。

lastNameIsFirst

boolean

苗字を先頭にするか。

LanguageFonts

classはorg.iplass.mtp.impl.i18n.LanguageFontsを指定します。

言語のフォントです。以下の項目を設定可能です。

項目 説明

language

String

言語。

fonts

String、複数指定可

フォント。

設定例
<service>
    <interface>org.iplass.mtp.impl.i18n.I18nService</interface>
    <class>org.iplass.mtp.impl.i18n.I18nService</class>

    <!-- 設定可能言語 -->
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="ja" />
        <property name="languageName" value="日本語" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="en" />
        <property name="otherLanguageKey" value="en-US" />
        <property name="languageName" value="English" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="zh-CN" />
        <property name="otherLanguageKey" value="zh" />
        <property name="otherLanguageKey" value="zh-SG" />
        <property name="languageName" value="简体中文" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="zh-TW" />
        <property name="otherLanguageKey" value="zh-HK" />
        <property name="languageName" value="繁體中文" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="th" />
        <property name="otherLanguageKey" value="th-TH" />
        <property name="languageName" value="ภาษาไทย" />
    </property>

    <!-- locale format -->
    <property name="defaultLocaleFormat" class="org.iplass.mtp.impl.i18n.LocaleFormat">
        <property name="locale" value="ja" />
        <property name="locale" value="ja_JP" />
        <property name="locale" value="zh" />
        <property name="locale" value="zh_CN" />
        <property name="locale" value="zh_TW" />
        <property name="locale" value="zh_HK" />

        <!--
            Formatに指定可能な書式
                yyyy : full year (four digit)
                MM   : day of year (two digit)
                dd   : day of month (two digit)
                MMM  : month name short (ex. Jan)
                MMMM : month name long (ex. January)
                HH   : hour (two digit)
                mm   : minute (two digit)
                ss   : second (two digit)
                SSS  : millisecond (three digit)

            ※MMM、MMMMはoutputXXXでのみ利用可能。browserInputDateFormatでは利用不可。
             またロケールがen、en_XXの場合のみ正常に動作します。

            ※Server系のフォーマットは内部制御があるため変更しないでください。
            ※Time系の入力フォーマットはRange制御があるため変更しないでください。
         -->

        <!-- Server側でDateの入力値として受け取る形式(変更不可) -->
        <property name="serverDateFormat" value="yyyyMMdd" />
        <!-- Server側でTimeの入力値として受け取る形式(変更不可) -->
        <property name="serverTimeFormat" value="HHmmssSSS" />

        <!-- ブラウザ上でのDateの入力形式(テナントで個別指定可能) -->
        <property name="browserInputDateFormat" value="yyyyMMdd" />

        <!-- ブラウザ上でのTimeの入力形式(TimeはRange制御があるので変更不可) -->
        <property name="browserInputTimeSecFormat" value="HH:mm:ss" />
        <property name="browserInputTimeMinFormat" value="HH:mm" />
        <property name="browserInputTimeHourFormat" value="HH" />

        <!-- Date型の出力形式(検索結果やCSVなど。テナントで個別指定可能) -->
        <property name="outputDateFormat" value="yyyy/MM/dd" />
        <property name="outputDateWeekdayFormat" value="yyyy/MM/dd EEEE" />
        <!-- Excelでの日付出力形式 -->
        <property name="excelDateFormat" value="yyyy/M/d" />
        <property name="excelTimeFormat" value="H:mm" />

        <!-- Time型の出力形式(検索結果やCSVなど。現状テナントで個別指定不可) -->
        <property name="outputTimeSecFormat" value="HH:mm:ss" />
        <property name="outputTimeMinFormat" value="HH:mm" />
        <property name="outputTimeHourFormat" value="HH" />

        <property name="lastNameIsFirst" value="true" />
    </property>
    <property name="localeFormat" class="org.iplass.mtp.impl.i18n.LocaleFormat">
        <property name="locale" value="en_US" />
        <property name="locale" value="en" />

        <property name="serverDateFormat" value="yyyyMMdd" />
        <property name="serverTimeFormat" value="HHmmssSSS" />

        <property name="browserInputDateFormat" value="MM/dd/yyyy" />
        <property name="browserInputTimeSecFormat" value="HH:mm:ss" />
        <property name="browserInputTimeMinFormat" value="HH:mm" />
        <property name="browserInputTimeHourFormat" value="HH" />

        <property name="outputDateFormat" value="MM/dd/yyyy" />
        <property name="outputDateWeekdayFormat" value="EEEE, MM/dd/yyyy" />
        <property name="excelDateFormat" value="M/d/yyyy" />
        <property name="excelTimeFormat" value="H:mm" />
        <property name="outputTimeSecFormat" value="HH:mm:ss" />
        <property name="outputTimeMinFormat" value="HH:mm" />
        <property name="outputTimeHourFormat" value="HH" />

        <property name="lastNameIsFirst" value="false" />
    </property>
    <property name="localeFormat" class="org.iplass.mtp.impl.i18n.LocaleFormat">
        <property name="locale" value="en_SG" />
        <property name="locale" value="th" />
        <property name="locale" value="th_TH" />

        <property name="serverDateFormat" value="yyyyMMdd" />
        <property name="serverTimeFormat" value="HHmmssSSS" />

        <property name="browserInputDateFormat" value="dd/MM/yyyy" />
        <property name="browserInputTimeSecFormat" value="HH:mm:ss" />
        <property name="browserInputTimeMinFormat" value="HH:mm" />
        <property name="browserInputTimeHourFormat" value="HH" />

        <property name="outputDateFormat" value="dd/MM/yyyy" />
        <property name="outputDateWeekdayFormat" value="EEEE dd/MM/yyyy" />
        <property name="excelDateFormat" value="d/M/yyyy" />
        <property name="excelTimeFormat" value="H:mm" />
        <property name="outputTimeSecFormat" value="HH:mm:ss" />
        <property name="outputTimeMinFormat" value="HH:mm" />
        <property name="outputTimeHourFormat" value="HH" />

        <property name="lastNameIsFirst" value="false" />
    </property>

    <property name="genericFontFamilyList" value="serif" />
    <property name="genericFontFamilyList" value="sans-serif" />
    <property name="genericFontFamilyList" value="monospace" />
    <property name="genericFontFamilyList" value="cursive" />
    <property name="genericFontFamilyList" value="fantasy" />
    <property name="genericFontFamilyList" value="system-ui" />
    <property name="genericFontFamilyList" value="ui-serif" />
    <property name="genericFontFamilyList" value="ui-sans-serif" >
    <property name="genericFontFamilyList" value="ui-monospace" >
    <property name="genericFontFamilyList" value="ui-rounded" />
    <property name="genericFontFamilyList" value="math" />
    <property name="genericFontFamilyList" value="emoji" />
    <property name="genericFontFamilyList" value="fangsong" />

    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="ja" />
        <property name="fonts" value="Meiryo" />
        <property name="fonts" value="MS PGothic" />
        <property name="fonts" value="Hiragino Kaku Gothic Pro" />
        <property name="fonts" value="ヒラギノ角ゴ Pro W3" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="en" />
        <property name="fonts" value="Segoe UI" />
        <property name="fonts" value="Helvetica Neue" />
        <property name="fonts" value="Arial" />
        <property name="fonts" value="Helvetica" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="zh-CN" />
        <property name="fonts" value="Microsoft Yahei" />
        <property name="fonts" value="PingHei" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="zh-TW" />
        <property name="fonts" value="Microsoft Yahei" />
        <property name="fonts" value="PingHei" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="th" />
        <property name="fonts" value="Leelawadee" />
        <property name="fonts" value="Tahoma" />
        <property name="fonts" value="sans-serif" />
    </property>
</service>

3.33. ListingService

保存リストの実行を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.listing.ListingService

実装クラス名

org.iplass.mtp.impl.listing.ListingService

ListingServiceの設定

ListingServiceを設定します。

設定項目
項目 説明

automaticConversionToRootFolderMode

boolean

3.0.15未満からの移行用。Rootフォルダを利用するモードに自動的に変換する場合にtrueを設定。 デフォルト値は false です。

true にした場合、保存リスト機能の初回アクセス時にRootフォルダの生成、保存リストの更新を実行します。

3.0.14まではRootに対するフォルダは明示的に作成していませんでした(nullとして対応)が、 保存リストの検索処理の高速化を目的として、3.0.15からRootフォルダを利用するように変更しました。 3.0.14以前を利用して、既にフォルダや保存リストが登録されている場合は、Rootフォルダを利用しないモードで動作しますが、 3.0.15以降と同様に動作させる場合は、このフラグを true に設定してください。
一度、Rootフォルダに対応した後(SavedListFolderエンティティにRootフォルダが作成されているかを確認)は、 false に戻しても平気です。

serializedClassResolver

SerializedClassResolver

保存リストをデシリアライズする際のクラスのリゾルバです。復元処理をカスタマイズしたい場合に利用可能です。

SerializedClassResolver

classはorg.iplass.mtp.impl.listing.SerializedClassResolverの実装クラスを指定します。

SerializedClassResolverを実装するクラスでは、 Class<?> resolveClass(String serializedClassName) メソッドを実装し、クラス名から解決されるClassインスタンスを返却するようにします。

設定例
<service>
    <interface>org.iplass.mtp.impl.listing.ListingService</interface>

    <!-- 3.0.15未満からの移行用。RootFolderを利用するモードに自動的に変換する場合にtrue -->
    <property name="automaticConversionToRootFolderMode" value="false"/>

</service>

3.34. LobStoreService

LOBデータの永続化を行うサービスです。

インタフェース名

org.iplass.mtp.impl.lob.LobStoreService

実装クラス名

org.iplass.mtp.impl.lob.LobStoreService

LobStoreServiceの設定

LobStoreServiceを設定します。

設定項目
項目 説明

binaryStore

LobStore

バイナリデータのLobStore。

longTextStore

LobStore

LongTextのLobStore。

defaultLobStoreName

String

デフォルトとするLobストアの名前。デフォルト値は default です。

manageLobSizeOnRdb

boolean

LobサイズをRdb(lob_store)で管理するか。デフォルト値は false (管理しない)です。

temporaryKeepDay

int

テンポラリデータの保存日数。クリーナによりここで指定された日数よりも前のデータが削除されます。デフォルト値は 1 です。

invalidKeepDay

int

無効(非参照)データの保存日数。クリーナによりここで指定された日数よりも前のデータが削除されます。デフォルト値は 0 です。

cleanCommitLimit

int

クリーナの削除処理のコミット単位。デフォルト値は 100 です。

LobStore

classはorg.iplass.mtp.impl.lob.lobstore.LobStoreの実装クラスを指定します。

標準で以下のLobStoreを提供します。

RdbLobStore

classはorg.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStoreを指定します。

RDBに保存するLobStoreです。 以下の項目を設定可能です。

項目 説明

lobValidator

LobValidator

Lobに対するチェック処理。

FileLobStore

classはorg.iplass.mtp.impl.lob.lobstore.file.FileLobStoreを指定します。

ファイルに保存するLobStoreです。 以下の項目を設定可能です。

項目 説明

rootDir

String

保存先のルートディレクトリ。

overwriteFile

boolean

ファイルの上書きを行うか。デフォルト値はfalse(上書きしない)です。

lobValidator

LobValidator

Lobに対するチェック処理。

S3LobStore

classはorg.iplass.mtp.impl.aws.lobstore.s3.S3LobStoreを指定します。

S3に保存するLobStoreです。 以下の項目を設定可能です。

項目 説明

region

String

S3のリージョン

endpoint

String

S3のendpoint

bucketName

String

S3のバケット名

encryption

S3Encryption

S3オブジェクトを暗号化する場合に指定

overwriteFile

boolean

既にS3オブジェクトが存在した場合に上書きを行うか否か。
デフォルト値はfalse(上書きしない)です。

useTransferManager

boolean

TransferManagerを利用するか否か。デフォルト値はfalseです。

transferManagerConfiguration

TransferManagerConfiguration

TransferManagerの設定

transferManagerThreadPoolSize

int

TransferManagerで利用するスレッドプールのサイズ。 -1 が設定された場合はAWSSDKのデフォルト値によってスレッドプールが作成されます。デフォルト値は -1 です。

lobValidator

LobValidator

Lobに対するチェック処理。

requiredTagMap

String、Map形式

S3オブジェクトにおいて、必要なタグの値をチェックする場合にMap形式で指定します。keyとしてタグ名、valueとしてタグ値を設定します。

retryTagCheckIntervalMillis

long

タグチェックのリトライ間隔(ミリ秒)。

retryTagCheckCount

int

タグチェックのリトライ回数。

TransferManagerConfiguration

classはcom.amazonaws.services.s3.transfer.TransferManagerConfigurationです。TransferManager関連の設定が可能です。

S3Encryption

classはorg.iplass.mtp.impl.aws.lobstore.s3.S3Encryptionの実装クラスを指定します。

標準で、以下のS3Encryptionを提供しています。

SseS3Encryption

classはorg.iplass.mtp.impl.aws.lobstore.s3.SseS3Encryptionを設定します。

SSE-S3方式で暗号化します。設定変更可能な項目は有りません。

SseKmsEncryption

classはorg.iplass.mtp.impl.aws.lobstore.s3.SseKmsEncryptionを設定します。

SSE-KMS方式で暗号化します。 以下の項目を設定可能です。

項目 説明

awsKmsKeyId

String

AWS Key Management Service (KMS)S3のKey Id

MetricsS3LobStore

classはorg.iplass.mtp.impl.micrometer.metrics.aws.lobstore.s3.MetricsS3LobStoreを指定します。

Micrometerによるメトリクス収集機能を追加したS3LobStoreです。 S3LobStoreと同じ項目を設定可能です。

AddableMultiLobStore

classはorg.iplass.mtp.impl.lob.lobstore.multi.AddableMultiLobStoreを指定します。

複数のLobStoreを合わせて単一のLobStoreと設定することが可能なLobStoreです。 以下の項目を設定可能です。

項目 説明

lobStore

LobStore、複数指定可

LobStoreの設定。

lobValidator

LobValidator

Lobに対するチェック処理。

LobValidator

classにorg.iplass.mtp.impl.lob.lobstore.LobValidatorの実装クラスを設定します。

標準で、以下のLobValidatorを提供しています。

LogLobValidator

classはorg.iplass.mtp.impl.lob.lobstore.LogLobValidatorを設定します。

単純にログを出力のみを行います。設定変更可能な項目は有りません。

ProcessLobValidator

classはorg.iplass.mtp.impl.lob.lobstore.ProcessLobValidatorを設定します。

外部プロセスを起動します。 以下の項目を設定可能です。

項目 説明

command

String、複数指定可

外部プロセスとパラメータを指定します。

checksumAlgorithm

String

checksumのアルゴリズムを指定します。 Adler-32/CRC-32/MD5/SHA-1/SHA-256のいずれかを指定してください。

設定例
<service>
    <interface>org.iplass.mtp.impl.lob.LobStoreService</interface>
    <property name="lobDao" class="org.iplass.mtp.impl.lob.EncryptLobDao" />

    <property name="defaultLobStoreName" value="defaultStore" />
    <property name="defaultStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
    </property>
    <!--
    <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
        <property name="rootDir" value="D:\tmp\fileLobStore" />
        <property name="overwriteFile" value="false" />
    </property>
    <property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
    </property>
     -->

    <!--
        複数のLobStoreを合わせて単一のLobStoreと設定することが可能。
        新規追加は先頭に定義されているlobStoreに対して行われる。
        参照はすべてのlobStoreにから検索する。
        削除もすべてのlobStoreに対して実行される。
     -->
    <!--
    <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.multi.AddableMultiLobStore">
        <property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="D:\tmp\fls2" />
        </property>
        <property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="D:\tmp\fls1" />
        </property>
        <property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore" />
    </property>
     -->

     <!--
        LobサイズをRdb(lob_store)で管理するかを指定する。
        ver1.5.2でサイズ管理制御のためにlob_storeテーブルのレイアウトを変更。
        既存システムでlob_storeテーブルが変更できない場合は、falseを指定することで回避可能。 -->
    <property name="manageLobSizeOnRdb" value="false" />
</service>

3.35. LoggingService

ログ全般に関する設定を行うサービスです。

インタフェース名

org.iplass.mtp.impl.logging.LoggingService

実装クラス名

ログにLogbackを利用するLoggingService
org.iplass.mtp.impl.logging.logback.LogbackLoggingService

LoggingServiceの設定

ログ出力に関する設定項目の設定をします。 当サービスの機能により、テナント毎にログ出力の条件を動的に切り替えることが可能となります。 この機能を有効化するためには合わせてLogbackの設定(logback.xml)にて、 org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter を有効化する必要があります。 当該機能が有効化された場合、AdminConsole等を介してログ出力条件を動的に切り替えることが可能となります。

設定項目
項目 説明

maxAgeSecondsOfLogCondition

long

ログ出力条件の有効期限に設定可能な最大の生存期間(秒)。 デフォルト値は-1(無期限)です。

設定例
<service>
    <interface>org.iplass.mtp.impl.logging.LoggingService</interface>
    <class>org.iplass.mtp.impl.logging.logback.LogbackLoggingService</class>
    <property name="maxAgeSecondsOfLogCondition" value="86400" />
</service>

3.36. MailService

メールテンプレートの定義(メタデータ)の管理と、メール送信を行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.mail.MailService

実装クラス名

JavaMailを利用したメール送信
org.iplass.mtp.impl.mail.MailServiceImpl
Amazon SESを利用したメール送信
org.iplass.mtp.impl.mail.AWSMailService
SendGridを利用したメール送信
org.iplass.mtp.impl.sendgrid.SendGridMailServiceImpl

MailServiceImplの設定

標準のメール送信(JavaMail)を利用する場合、MailServiceImplを設定します。
JavaMailで定義される標準のプロパティ、各プロバイダ実装のプロパティ、およびiPLAssで拡張したプロパティを設定可能です。

設定項目
項目 説明

mail.smtp.host

String、必須

SMTPサーバのホスト名。

mail.smtp.port

int

SMTPサーバのポート番号。デフォルト値は25です。

mail.smtp.connectiontimeout

int

SMTPコネクションを確立する際のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.smtp.timeout

int

SMTP通信時のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.pop3.connectiontimeout

int

POP3コネクションを確立する際のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.pop3.timeout

int

POP3通信時のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.*

-

その他JavaMailで定義される標準のプロパティ、各プロバイダ実装のプロパティを設定可能です。

mail.host
mail.smtp.from
mail.smtp.auth
mail.transport.protocol
など

mail.smtp.popbeforesmtp

boolean

POP before SMTPにより認証する場合trueを設定します。デフォルト値はfalseです。
iPLAssにて拡張されたプロパティです。

mail.pop3.auth.id

String

POP before SMTP認証する際のユーザーのIDです。
この設定はmail.smtp.popbeforesmtpがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.pop3.auth.password

String

POP before SMTP認証する際のユーザーのパスワードです。
この設定はmail.smtp.popbeforesmtpがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.smtp.auth.id

String

SMTP認証する際のユーザーIDです。
この設定はmail.smtp.authがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.smtp.auth.password

String

SMTP認証する際のパスワードです。
この設定はmail.smtp.authがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.charset

String

メールのデフォルトのcharsetです。
例えば utf-8 を指定します。
iPLAssにて拡張されたプロパティです。

mail.encoding

String

メールのデフォルトのencodingです。
例えば base64 を指定します。
iPLAssにて拡張されたプロパティです。

debug

boolean

デバッグを有効にした場合、標準出力にトレースを出力します。

listener

SendMailListener、複数指定可

メール送信時のListener。

retryIntervalMillis

long

メール送信失敗時のリトライ間隔(ミリ秒)。

retryCount

int

メール送信失敗時のリトライ回数。

smimeHandler

SmimeHandler

S/MIME利用時のハンドラです。

SendMailListener

classはorg.iplass.mtp.mail.SendMailListenerの実装クラスを指定します。

標準で以下のSendMailListenerを提供します。

LoggingSendMailListener

classはorg.iplass.mtp.mail.listeners.LoggingSendMailListenerを指定します。

送信メールのログ出力を行うSendMailListenerです。 設定変更可能な項目はありません。

MetricsSendMailListener

classはorg.iplass.mtp.impl.micrometer.metrics.mail.MetricsSendMailListenerを指定します。

Micrometerによるメトリクス収集機能を追加したSendMailListenerです。 設定変更可能な項目はありません。

SmimeHandler

MailServiceImplを利用する場合、標準でS/MIMEによる電子署名と暗号化を行うorg.iplass.mtp.impl.mail.smime.SmimeHandlerを提供します。 以下の設定項目が可能です。

項目

説明

cmsAlgorithmName

String

CMS(暗号メッセージ構文)での暗号アルゴリズム名です。デフォルト値は AES128_CBC です。

signatureAlgorithmMap

SignatureAlgorithmMap

電子署名アルゴリズムのマッピング。

certStore

SmimeCertStore

S/MIMEで利用する証明書と秘密鍵を格納しているストアクラスです。

SignatureAlgorithmMap

電子署名アルゴリズムのマッピングを設定します。 以下の項目が設定できます。

項目 説明

name

String

電子署名アルゴリズムのキー。

value

String

電子署名アルゴリズム。

デフォルトの設定値

name

value

RSA

SHA256withRSA

DSA

SHA256withDSA

EC

SHA256withECDSA

SmimeCertStore

classはorg.iplass.mtp.impl.mail.smime.SmimeCertStoreの実装クラスを指定します。

標準でjava.security.KeyStoreベースのシンプルな実装クラスorg.iplass.mtp.impl.mail.smime.SimpleSmimeCertStoreを提供します。 KeyStoreに格納されている証明書はクライアントの証明書も含めて、信頼されたものとして扱います。 実行時には有効期間のチェックのみ行い、証明書チェーンの検証は行いません。

項目

説明

keyStoreType

String

KeyStoreのタイプ。デフォルト値は PKCS12 です。

keyStoreProvider

String

KeyStoreのプロバイダ名。未設定の場合、最優先のProviderから順に、登録済みのセキュリティプロバイダのリストから、指定されたKeyStoreのタイプをサポートする最初のプロバイダを利用します。

keyStoreFilePath

String

署名作成および暗号化の為のエントリが格納されるKeyStoreのファイルパス。

keyStorePassword

String

KeyStoreのパスワード。

keyPasswordMap

KeyPasswordMap

エントリに関連した秘密鍵を復元する為のパスワードマッピング。

keyStoreReloadIntervalMinutes

String

KeyStoreのリロード間隔(分)。デフォルト値は Long.MAX_VALUE です。

KeyPasswordMap

エントリに関連した鍵を復元する為のパスワードマッピングを設定します。 以下の項目が設定できます。

項目 説明

name

String

エントリの別名。(送信者または受信者のメールアドレス)

value

String

エントリに関連した秘密鍵を復元する為のパスワード。

設定例
<service>
    <interface>org.iplass.mtp.impl.mail.MailService</interface>
    <class>org.iplass.mtp.impl.mail.MailServiceImpl</class>

    <!-- SMTP設定  -->
    <!-- SMTPサーバホスト -->
    <property name="mail.smtp.host" value="XXXXXXXX"/>
    <!-- SMTPサーバポート  通常:25 / サブミッションポート:587 / SSL:465 -->
    <property name="mail.smtp.port" value="25"/>
    <!-- タイムアウト設定 -->
    <property name="mail.smtp.connectiontimeout" value="60000"/>
    <property name="mail.smtp.timeout" value="60000"/>

    <!--
        mail.smtp.hostプロパティはmail.hostプロパティに優先して認識されるため、2つの値が同一ならば、
        mail.smtp.hostプロパティを設定するだけでもメール送信は可能です。
        しかし、mail.hostプロパティは内部的にMessage-ID ヘッダを生成するのに利用されます。
        mail.hostプロパティを明示的に指定していない場合、Message-IDヘッダが正しく生成できない可能性があります。
     -->
    <property name="mail.host" value="XXXXXXXX"/>

    <!-- デフォルトCharset -->
    <property name="mail.charset" value="utf-8"/>

    <property name="mail.encoding" value="base64"/>

    <!-- S/MIME設定 -->
    <!-- S/MIMEによる署名および暗号化を利用します。 -->
    <property name="smimeHandler" class="org.iplass.mtp.impl.mail.smime.SmimeHandler">
        <property name="cmsAlgorithmName" value="AES128_CBC" />
        <property name="signatureAlgorithmMap">
            <property name="RSA" value="SHA256withRSA" />
            <property name="DSA" value="SHA256withDSA" />
            <property name="EC" value="SHA256withECDSA" />
        </property>
        <property name="certStore" class="org.iplass.mtp.impl.mail.smime.SimpleSmimeCertStore" >
            <property name="keyStoreType" value="yourOwnKeyStoreType" />
            <property name="keyStoreProvider" value="yourOwnKeyStoreProvider" />
            <property name="keyStoreFilePath" value="yourOwnKeyStoreFilePath" />
            <property name="keyStorePassword" value="yourOwnKeyStorePassword" />
            <property name="keyPasswordMap">
                <property name="test1@contract.dentsusoken.com" value="yourOwnKeyPassword1" />
                <property name="test2@contract.dentsusoken.com" value="yourOwnKeyPassword2" />
            </property>
            <property name="keyStoreReloadIntervalMinutes" value="60" />
        </property>
    </property>

    <!-- ■ for develop only (additional="true) ■ -->
    <!-- 送信メールをデバッグ出力する場合、以下を有効にしてください。 -->
    <!--
    <property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
     -->
</service>

AWSMailServiceの設定

Amazon SESを利用する場合、AWSMailServiceを設定します。
AWSMailServiceを利用する場合、AWSSettingにてAWSの認証設定が行われている必要があります。ただし、注意点としてAWSSettingのclientConfigurationは適用できません。

設定項目
項目 説明

mail.charset

String

メールのデフォルトのcharsetです。
例えば utf-8 を指定します。

mail.encoding

String

メールのデフォルトのencodingです。
例えば base64 を指定します。

mail.aws.host

String

SESのendpointを指定可能です。
未指定の場合はデフォルトのendpointが利用されます。

debug

boolean

デバッグを有効にした場合、標準出力にトレースを出力します。

listener

SendMailListener、複数指定可

メール送信時のListener。

retryIntervalMillis

long

メール送信失敗時のリトライ間隔(ミリ秒)。

retryCount

int

メール送信失敗時のリトライ回数。

SendMailListener

MailServiceImplのSendMailListenerと同様です。

設定例

MailServiceImplと同様です。

SendGridMailServiceImplの設定

SendGridを利用する場合、SendGridMailServiceImplを設定します。

設定項目
項目 説明

checkBounce

boolean

送信前にバウンスリスト、ブロックリストチェックを行うか。デフォルト値はtrueです。

checkBouncePattern

String

バウンスリスト、ブロックリストチェックを行う対象とするメールアドレス。正規表現の形式で指定します。

httpClientConfig

HttpClientConfig

HTTPクライアントの設定。

httpTransport

HttpTransport

WebApiへのHTTPリクエストの設定。

mailApiClient

MailClient

メールクライアントの設定。

deleteBouncePattern

String

SendGridのバウンス、ブロックリストにアドレスが載った際にリストから削除対象とするメールアドレス。正規表現の形式で指定します。

bounce

BounceClient

バウンスクライアント。

block

BlockClient

ブロッククライアント。

listener

SendMailListener、複数指定可

メール送信時のListener。

retryIntervalMillis

long

送信失敗時のリトライ間隔(ミリ秒)。

retryCount

int

送信失敗時のリトライ回数。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。

以下の項目を設定可能です。

項目 説明

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)(ミリ秒)。デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

proxyHost

String

プロキシサーバのホスト。

proxyPort

int

プロキシサーバのポート番号。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

HttpTransport

classはorg.iplass.mtp.impl.sendgrid.apiclient.HttpTransportImplを指定します。

以下の項目を設定可能です。

項目 説明

apiUser

String、必須

SendGridのユーザーID、もしくは apikey 固定値(認証時にパスワードではなくAPI Keyを利用する場合)

apiKey

String、必須

SendGridのパスワード、もしくはAPI Key。

webApiRoot

String、必須

SendGridのAPIのURL。

MailClient

classはorg.iplass.mtp.impl.sendgrid.apiclient.MailClientImplを指定します。

以下の項目を設定可能です。

項目 説明

charset

String

メールの文字コード。

BounceClien