4.0
設定(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に関するデフォルト設定です。

/aws-service-config.xml

awsに関するデフォルト設定です。Enterprise Editionで利用可能です。iplass-ee-aws ライブラリに同梱されています。

AWS SDK for Java 1.x はメンテナンスモードになっており、2025年12月 にサポートを終了する予定です。
iPLAss では AWS SDK for Java 1.x ベースのライブラリ iplass-ee-aws を非推奨とし、AWS SDK for Java 2.x ベースのライブラリ iplass-ee-aws2 への移行を推奨します。
本設定を利用している場合は、ライブラリ iplass-ee-aws2 の設定へ移行してください。
ライブラリ iplass-ee-aws は将来削除される予定です。

/aws2-service-config.xml

awsに関するデフォルト設定です。Enterprise Editionで利用可能です。iplass-ee-aws2 ライブラリに同梱されています。

/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を指定可能です。

    ifnone

    boolean

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

    inherit

    boolean

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

    final

    boolean

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

    encrypted

    boolean

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

    additional

    boolean

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

    Beanの生成に関する属性が複数同時に指定された場合の優先順位は以下です。

    ref > builder > class > value

    ただし、プロパティ定義を親の設定ファイルより継承する場合、継承元に定義されるrefの値は引き継がれません。

  • 子要素

    要素名 説明

    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のシークレットに登録された設定値を取得。クラスは iplass-ee-aws ライブラリに含まれています。
AWS認証情報として、デフォルトの認証情報プロバイダーチェーンを使用しています。
詳細は AWS SDK for Java 1.x デフォルトの認証情報プロバイダチェーンの使用を参照してください。

SecretsManagerPropertyValueCoder

AWS Secrets Managerのシークレットに登録された設定値を取得。クラスは iplass-ee-aws2 ライブラリに含まれています。
AWS認証情報として、デフォルトの認証情報プロバイダーチェーンを使用しています。
詳細は AWS SDK for Java 2.x デフォルトの認証情報プロバイダーチェーンを参照してください。

未指定の場合は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より取得。クラスは iplass-ee-aws ライブラリに含まれています。
AWS認証情報として、デフォルトの認証情報プロバイダーチェーンを使用しています。
詳細は AWS SDK for Java 1.x デフォルトの認証情報プロバイダチェーンの使用を参照してください。

AWS SDK for Java 1.x はメンテナンスモードになっており、2025年12月 にサポートを終了する予定です。
iPLAss では AWS SDK for Java 1.x ベースのライブラリ iplass-ee-aws を非推奨とし、AWS SDK for Java 2.x ベースのライブラリ iplass-ee-aws2 への移行を推奨します。
本機能を利用している場合は、ライブラリ iplass-ee-aws2 の org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPassphraseSupplier へ設定を移行してください。
ライブラリ iplass-ee-aws は将来削除される予定です。

org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPassphraseSupplier

AWS Secrets Managerのシークレットに登録されているpassphraseより取得。クラスは iplass-ee-aws2 ライブラリに含まれています。
AWS認証情報として、デフォルトの認証情報プロバイダーチェーンを使用しています。
詳細は AWS SDK for Java 2.x デフォルトの認証情報プロバイダーチェーンを参照してください。

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

passphrase

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

aws.secretName

SecretsManagerPassphraseSupplierを利用する場合、シークレット名を指定。

例1:デフォルトの難読化設定を利用

パスフレーズのみを設定する例です。

crypt.propertiesの設定例
passphrase=hogehoge
例2:SecretsManagerPassphraseSupplier の難読化設定を利用

AWS Secrets Manager にパスフレーズを定義し、その値を利用する例です。

AWS Secrets Manager の設定例 ( SecretName = test/passphrase/example2 )
{ "passphrase": "passphrase_value" } (1)
1 SecretsManager で passphrase というKey/Valueを定義する。
crypt.propertiesの設定例
passphraseSupplier=org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPassphraseSupplier
aws.secretName=test/passphrase/example2 (1)
1 AWS Secrets Manager に登録したシークレット名 test/passphrase/example2 を設定することで、当該シークレットを取得することが可能。本例では、passphrase_value がパスフレーズとなる。
(非推奨)SecretsManagerPropertyValueCoder

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

AWS SDK for Java 1.x はメンテナンスモードになっており、2025年12月 にサポートを終了する予定です。
iPLAss では AWS SDK for Java 1.x ベースのライブラリ iplass-ee-aws を非推奨とし、AWS SDK for Java 2.x ベースのライブラリ iplass-ee-aws2 への移行を推奨します。
本機能を利用している場合は、ライブラリ iplass-ee-aws2 の SecretsManagerPropertyValueCoder へ設定を移行してください。
ライブラリ iplass-ee-aws は将来削除される予定です。

項目名 設定値

aws.secretName

シークレット名を指定。

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

crypt.propertiesの設定例
propertyValueCoder=org.iplass.mtp.impl.aws.secretsmanager.SecretsManagerPropertyValueCoder
aws.secretName=test/propertyValueCoder/example (1)
1 AWS Secrets Manager に登録したシークレット名 test/propertyValueCoder/example を設定することで、当該シークレットを取得することが可能。

併せて、AWS Secrets Managerによる設定値の取得 も確認ください。

SecretsManagerPropertyValueCoder

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

項目名 設定値

aws.secretName

シークレット名を指定。

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

crypt.propertiesの設定例
propertyValueCoder=org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPropertyValueCoder
aws.secretName=test/propertyValueCoder/example (1)
1 AWS Secrets Manager に登録したシークレット名 test/propertyValueCoder/example を設定することで、当該シークレットを取得することが可能。

併せて、AWS Secrets Managerによる設定値の取得 も確認ください。

プロパティファイルの指定

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形式で事前に登録しておきます。本例では、シークレット名を test/propertyValueCoder/example として設定した想定です。

{
    "xxxservice_secret_password": "secret_password_value",
    "xxxservice_secret_key": "secret_key_value"
}
crypt.propertiesの設定

SecretsManagerPropertyValueCoder と、登録したシークレット名を設定します。

propertyValueCoder=org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPropertyValueCoder (1)
aws.secretName=test/propertyValueCoder/example (2)
1 本例では、SecretsManagerPropertyValueCoder を設定しています。
2 AWS Secrets Manager に登録したシークレット名 test/propertyValueCoder/example を設定する。
service-configへ設定

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE serviceDefinition>
<serviceDefinition>
    <service>
        <interface>org.iplass.mtp....XxxService</interface>
        <class>org.iplass.mtp....XxxService</interface>

        <property name="simpleValue" value="value123" />
        <property name="password" value="xxxservice_secret_password" encrypted="true" /> (1)
        <property name="key" value="xxxservice_secret_key" encrypted="true" /> (2)
    </service>
</serviceDefinition>
1 property 要素の value 属性に設定された "xxxservice_secret_password" が AWS Secrets Manager のキーとなります。値は secret_password_value が設定されます。
2 property 要素の value 属性に設定された "xxxservice_secret_key" が AWS Secrets Manager のキーとなります。値は secret_key_value が設定されます。

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インポートに関するサービスです。

EntityFileUploadService

Entityデータのアップロードを管理するサービスです。

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

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

MdcDetailViewService

MDC版の詳細画面の設定を行うサービスです。

MdcSearchViewService

MDC版の検索画面の設定を行うサービスです。

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の設定を管理する サービスです。AWS SDK for Java 1.x の設定を管理します。

AWSSetting

AWSの設定を管理する サービスです。AWS SDK for Java 2.x の設定を管理します。

InfinispanService

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

RedisService

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

CaptchaService

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

OutOfBandVerificationService

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

WamService

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

MicrometerService

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

GoogleCloudSettings

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

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の設定を管理するサービスです。

AWS SDK for Java 1.x はメンテナンスモードになっており、2025年12月 にサポートを終了する予定です。
iPLAss では AWS SDK for Java 1.x ベースのライブラリ iplass-ee-aws を非推奨とし、AWS SDK for Java 2.x ベースのライブラリ iplass-ee-aws2 への移行を推奨します。
本機能を利用している場合は、ライブラリ iplass-ee-aws2 の AWSSetting へ設定を移行してください。
ライブラリ iplass-ee-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. AWSSetting

AWSの設定を管理するサービスです。本サービスでは、AWS SDK for Java 2.x の設定を管理します。

インタフェース名

org.iplass.mtp.impl.awsv2.AWSSetting

実装クラス名

org.iplass.mtp.impl.awsv2.AWSSetting

AWSSettingの設定

AWSSetting を設定します。

設定項目
項目 説明

credentialsProviderFactory

CredentialsProviderFactory

AwsCredentialsProvider を生成する為の設定。未設定の場合は DefaultCredentialsProviderFactory が設定されます。

clientConfig

AWSClientConfig

AWS SDK クライアントの全体に適用するデフォルト設定。AWSリージョンや通信設定を設定します。

CredentialsProviderFactory

class は org.iplass.mtp.impl.awsv2.CredentialsProviderFactory の実装クラスを設定します。
標準で以下の CredentialsProviderFactory を提供しています。

DefaultCredentialsProviderFactory

classはorg.iplass.mtp.impl.awsv2.DefaultCredentialsProviderFactoryを指定します。
デフォルトの認証情報プロバイダーチェーンを使用して AWS認証情報を作成します。設定変更可能な項目はありません。
詳細は AWS SDK for Java 2.x デフォルトの認証情報プロバイダーチェーンを参照してください。

StaticCredentialsProviderFactory

classはorg.iplass.mtp.impl.awsv2.StaticCredentialsProviderFactoryを指定します。
AWS で作成したアクセスキーを利用して AWS 認証情報を作成します。以下の項目を設定可能です。

項目 説明

accessKeyId

String

アクセスキーの、Access key ID を設定します。

secretAccessKey

String

アクセスキーの、Secret access key を設定します。

AWSClientConfig

classは org.iplass.mtp.impl.awsv2.AWSClientConfig を設定します。
AWS SDK クライアントの設定を指定します。AWS サービスに対応したクライアントでも個別に設定可能な場合は、個別に設定した値が優先されます。

項目 説明

proxyScheme

String

プロキシースキームを設定します。http, https のいずれかを設定します。

proxyHost

String

プロキシーホスト名を設定します。

proxyPort

Integer

プロキシーポート番号を設定します。未指定の場合は、proxyScheme のデフォルトポートが設定されます。

connectionTimeoutMillis

Long

HttpClient コネクションタイムアウト(ミリ秒)を設定します。

socketTimeoutMillis

Long

HttpClient ソケットタイムアウト(ミリ秒)を設定します。

maxConnections

Integer

HttpClient 最大コネクション数を設定します。

connectionAcquisitionTimeoutMillis

Long

プールコネクション獲得タイムアウト(ミリ秒)を設定します。

maxPendingConnectionAcquires

Integer

プールコネクション獲得待ち許容数を設定します。

apiCallTimeoutMillis

Long

API全体実行タイムアウト(ミリ秒)を設定します。API リトライを含む呼び出し全体のタイムアウトを設定します。
詳細は Best Practices API タイムアウトの設定 を参照してください。

apiCallAttemptTimeoutMillis

Long

API実行タイムアウト(ミリ秒)を設定します。1回のAPI実行のHTTP施行にかかる時間を設定します。
通常、apiCallTimeoutMillis よりも小さな値を設定します。
詳細は Best Practices API タイムアウトの設定 を参照してください。

defaultsMode

String

スマート設定のデフォルトを設定します。詳細は HttpClient スマート設定のデフォルト を参照してください。

endpointOverride

String

サービスエンドポイントを設定します。localstack 等、AWS以外の環境を利用する場合に設定することを想定しています。

region

String

AWSリージョンを設定します。

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

    <!-- use AWS Access Key Id -->
    <!--
    <property name="credentialsProviderFactory" class="org.iplass.mtp.impl.awsv2.StaticCredentialsProviderFactory">
        <property name="accessKeyId" value="input your access key id" />
        <property name="secretAccessKey" value="input your secret access key" />
    </property>
    -->

    <!--
        Aws クライアントのデフォルト設定。全ての設定値は任意。個別サービスでも設定可能で、設定されている場合は個別サービスの設定値が優先される。
    -->
    <!--
    <property name="clientConfig" class="org.iplass.mtp.impl.awsv2.AWSClientConfig">
        <property name="proxyScheme" value="http" />
        <property name="proxyHost" value="proxy.domain" />
        <property name="proxyPort" value="8080" />
        <property name="connectionTimeoutMillis" value="3000" />
        <property name="socketTimeoutMillis" value="3000" />
        <property name="maxConnections" value="5" />
        <property name="connectionAcquisitionTimeoutMillis" value="60000" />
        <property name="maxPendingConnectionAcquires" value="20" />
        <property name="apiCallTimeoutMillis" value="10000" />
        <property name="apiCallAttemptTimeoutMillis" value="3000" />
        <property name="defaultsMode" value="auto" />
        <property name="endpointOverride" value="[setYourDefaultEndpoint]" />
        <property name="region" value="[setYourDefaultRegion]" />
    </property>
    -->
</service>

3.14. 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.15. CacheService

キャッシュストアを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.cache.CacheService

実装クラス名

org.iplass.mtp.impl.cache.CacheService

CacheServiceの設定

CacheServiceを設定します。

設定項目
項目 説明

reloadThreadPoolSize

int

キャッシュのリロード処理を実施するスレッド数。デフォルト値は4です。

defaultFactory

CacheStoreFactory

標準のCacheStoreFactoryの設定。

任意の文字列(defaultFactory, reloadThreadPoolSize を除く)

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.16. 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.17. 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)。デフォルト値は10000(10秒)です。

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.18. 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.19. CsvUploadService

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

インタフェース名

org.iplass.mtp.impl.fileport.CsvUploadService

実装クラス名

org.iplass.mtp.impl.fileport.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.fileport.CsvUploadService</interface>
    <class>org.iplass.mtp.impl.fileport.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.20. 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.21. 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.22. 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.23. 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.24. EntityCsvImportService

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

インタフェース名

org.iplass.mtp.impl.fileport.EntityCsvImportService

実装クラス名

org.iplass.mtp.impl.fileport.EntityCsvImportService

EntityCsvImportServiceの設定

EntityCsvImportServiceを設定します。

設定項目
項目 説明

canCreateUserWithSpecificPassword

boolean

UserエンティティのInsert時にパスワード指定を許可するか。デフォルト値は false です。

設定例
<service>
    <interface>org.iplass.mtp.impl.fileport.EntityCsvImportService</interface>

    <property name="canCreateUserWithSpecificPassword" value="true" />
</service>

3.25. EntityFileUploadService

Entityに対して、ExcelまたはCSVファイルのアップロード処理を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.fileport.EntityFileUploadService

実装クラス名

org.iplass.mtp.impl.fileport.EntityFileUploadService

EntityFileUploadServiceの設定

EntityFileUploadServiceを設定します。

設定項目
項目 説明

showErrorLimitCount

int

ファイルアップロード時のエラー表示件数上限値。-1 を指定した場合は無制限となる。

defaultUpdateTargetVersionForNoneVersionedEntity

TargetVersion

アップロード対象がバージョン管理Entity以外の場合の更新時のデフォルトTargetVersion。デフォルト値は CURRENT_VALID です。

mustOrderByWithLimit

boolean

アップロード形式でのダウンロード時に、件数上限が指定されている場合にOrderByを必ず指定するかを設定する。デフォルト値は false です。

SQLServerを利用している場合は、 true を指定してください。 SQLServerの場合、以下の条件に該当するとデータが取得できない状況になりますが、この値を true にすることでデータを取得します。

  • ダウンロード件数制限をしている

  • 指定された検索条件に多重度複数のReferenceに対する条件が含まれる

設定例
<service>
    <interface>org.iplass.mtp.impl.fileport.EntityFileUploadService</interface>
    <class>org.iplass.mtp.impl.fileport.EntityFileUploadService</class>
    <!-- アップロードエラー表示件数上限値 (-1は無制限)  -->
    <property name="showErrorLimitCount" value="100"/>

    <!--
     アップロードのバージョン管理Entity以外の場合の更新時のデフォルトTargetVersion。
     デフォルトはCURRENT_VALID。
    -->
    <property name="defaultUpdateTargetVersionForNoneVersionedEntity" value="SPECIFIC"/>

    <!--
        ダウンロード時にLimitが指定されている場合にOrderByを必ず指定するか。
        SQLServerの場合はtrueを指定すること。
    -->
    <property name="mustOrderByWithLimit" value="false"/>
</service>

3.26. 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.27. 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.28. 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を利用します。

csvDownloadFooter

String

Entity CRUD APIのCSVダウンロードのフッター文言。

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="csvDownloadFooter" value=""/>

    <property name="loadWithMappedByReference" value="true" />

    <property name="permitRolesToSpecifyOptions" value="RoleA" />
    <property name="permitRolesToSpecifyOptions" value="RoleB" />

</service>

3.29. FulltextSearchService

全文検索のサービスです。 全文検索の実装として、Luceneを利用した全文検索、Elasticsearchを利用した全文検索、OpenSearchを利用した全文検索を標準提供します。

インタフェース名

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
OpenSearchを利用した全文検索
org.iplass.mtp.impl.fulltextsearch.opensearch.OpenSearchFulltextSearchService

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.MMapDirectoryorg.apache.lucene.store.NIOFSDirectory

ファイルシステムにINDEXファイルを保存するLucene Directoryの実装クラス。
LuceneのドキュメントによりWindowsの環境で NIOFSDirectory の利用は推薦しません。
※ 未設定の場合、Luceneが決定するデフォルトのFSDirectoryが利用されます。

luceneFSDirectoryMaxChunkSizeMB

long

org.apache.lucene.store.MMapDirectory クラスが利用するメモリマッピング用maxChunkSizeです。
未設定の場合、Luceneが決定するデフォルト値が利用されます。
※ 項目 luceneFSDirectory の設定値が 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-analysis-kuromoji-XXX.jar 内の定義ファイルが適用されます。

stoptags

String

ストップタグ定義ファイル。クラスパス上に配置する必要があります。
未設定の場合、lucene-analysis-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, 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を利用した全文検索の項目を設定します。
本機能を利用する場合は、ライブラリ iplass-ee-aws を追加してください。

AWS SDK for Java 1.x はメンテナンスモードになっており、2025年12月 にサポートを終了する予定です。
iPLAss では AWS SDK for Java 1.x ベースのライブラリ iplass-ee-aws を非推奨とし、AWS SDK for Java 2.x ベースのライブラリ iplass-ee-aws2 への移行を推奨します。
iplass-ee-aws2 の対応に伴い、opensearch の機能は iplass-ee-opensearch へ移管しました。
本機能を利用している場合は、ライブラリ iplass-ee-opensearch の OpenSearchFulltextSearchServiceの設定 へ設定を移行してください。
ライブラリ iplass-ee-aws は将来削除される予定です。

設定項目
項目 説明

restClientFactory

RestClientFactory

RestClientFactoryの設定です。

analysisFactory

AnalysisFactory

AnalysisFactoryの設定です。

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerPropertyの設定です。

analyzerPropertyPerEntity

AnalyzerProperty、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerPropertyのインスタンスを設定します。

defaultOperator

Operator

演算子。設定可能な演算子は AND, OR, 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

org.opensearch.client.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名

OpenSearchFulltextSearchServiceの設定

OpenSearchを利用した全文検索の項目を設定します。
本機能を利用する場合は、ライブラリ iplass-ee-opensearch を追加してください。

設定項目
項目 説明

restClientFactory

RestClientFactory

RestClientFactoryの設定です。

transportFactory

OpenSearchTransportFactory

OpenSearchTransport インスタンスを生成するクラスを設定する。restClientFactory と同時に設定された場合、restClientFactory の設定値が優先される。

analysisFactory

AnalysisFactory

AnalysisFactoryの設定です。

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerPropertyの設定です。

analyzerPropertyPerEntity

AnalyzerProperty、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerPropertyのインスタンスを設定します。

defaultOperator

Operator

演算子。設定可能な演算子は AND, OR, And, Or のいずれかです。

RestClientFactory

classはorg.iplass.mtp.impl.fulltextsearch.opensearch.RestClientFactoryの実装クラスを指定します。

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

DefaultRestClientFactory

classはorg.iplass.mtp.impl.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

classはorg.iplass.mtp.impl.fulltextsearch.opensearch.HttpRequestInterceptorFactoryの実装クラスを指定します。
Apache HttpComponents4 の org.apache.http.HttpRequestInterceptor を生成するFactoryクラスです。
標準提供する機能はありません。

OpenSearchTransportFactory

classはorg.iplass.mtp.impl.fulltextsearch.opensearch.OpenSearchTransportFactoryの実装クラスを指定します。
OpenSearch Client の org.opensearch.client.transport.OpenSearchTransport を生成する Factory クラスです。
標準で以下の OpenSearchTransportFactory を提供します。

AwsSdk2OpenSearchTransportFactory

class は org.iplass.mtp.impl.fulltextsearch.openserarch.awsv2.AwsSdk2OpenSearchTransportFactory を指定します。
AWS IAM 認証情報でリクエストに署名する場合に利用します。 認証情報は AWSSetting の設定を利用します。
以下の項目を設定可能です。

設定項目
項目 説明

host

String

サービスのホスト名を設定します。スキーム( https:// )を除いた値を設定してください。

serviceName

String

サービス名。利用するサービスで設定値を決定します。

  • es (Amazon OpenSearch)

  • aoss (Amazon OpenSearch Serverless)

詳細は Connecting to Amazon OpenSearch Service | Serverless を確認ください。

region

String

サービスを構築したリージョンを指定します。

AnalysisFactory

カスタムでAnalyzer等を定義したい場合に利用するクラスです。

classはorg.iplass.mtp.impl.fulltextsearch.opensearch.analysis.AnalysisFactoryの実装クラスを指定します。

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

DefaultAnalysisFactory

classはorg.iplass.mtp.impl.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.fulltextsearch.opensearch.analysis.AnalyzerFactoryの実装クラスを指定します。

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

CustomAnalyzerFactory

charFilter、tokenizer、filterを組み合わせてAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.fulltextsearch.opensearch.analysis.analyzer.CustomAnalyzerFactoryを指定します。

設定項目
項目 説明

charFilter

String、複数指定可

charFilterの定義名

filter

String、複数指定可

filterの定義名

tokenizer

String、必須

tokenizerの定義名

KuromojiAnalyzerFactory

カスタマイズされたKuromojiAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactoryを指定します。

設定項目
項目 説明

mode

org.opensearch.client.opensearch._types.analysis.KuromojiTokenizationMode

tokenizationモードの設定

userDictionary

String

ユーザー辞書

CharFilterFactory

カスタムでCharFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.opensearch.analysis.AnalyzerFactoryの実装クラスを指定します。

TokenFilterFactory

カスタムでTokenFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.opensearch.analysis.filter.TokenFilterFactoryの実装クラスを指定します。

TokenizerFactory

カスタムでTokenizerを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.opensearch.analysis.tokenizer.TokenizerFactoryの実装クラスを指定します。

AnalyzerProperty

Analyzerを指定する際に利用します。 classはorg.iplass.mtp.impl.fulltextsearch.opensearch.mappings.AnalyzerPropertyを指定します。

設定項目
項目 説明

analyzer

String

デフォルトで利用するAnalyzer名

searchAnalyzer

String

検索で利用するAnalyzer名

searchQuoteAnalyzer

String

フレーズを利用した検索で利用するAnalyzer名

設定例(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利用の場合)
<!-- iplass-ee-aws プロジェクトのクラスを利用したOpenSearch構成。本構成は非推奨です。 -->
<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>
設定例(OpenSearchFulltextSearchService利用の場合)
<!-- iplass-ee-opensearch プロジェクトのクラスを利用したOpenSearch構成。 -->
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <class>org.iplass.mtp.impl.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.fulltextsearch.opensearch.DefaultRestClientFactory" >
        <property name="openSearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
        <property name="userName" value="openSearchUserName" />
        <property name="password" value="openSearchPassword" />
    </property>

    <!-- AWS 認証を利用する場合は、restClientFactory をコメントアウトし、以下の設定を有効化する。AWSSetting の設定も必要。 -->
    <!--
    <property name="transportFactory"  class="org.iplass.mtp.impl.fulltextsearch.openserarch.awsv2.AwsSdk2OpenSearchTransportFactory">
        <property name="host" value="{ADDRESS}:{PORT}" />
        <property name="serviceName" value="es or aoss" />
        <property name="region" value="ap-northeast-1" />
    </property>
    -->


    <property name="analysisFactory" class="org.iplass.mtp.impl.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.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.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の処理を行います。

    □ lunece利用の場合
    directory:
        Index情報(検索対象値)の保存先を指定してください。
    analyzer:
        利用するanalyzerを指定してください。

    □ Elasticsearch利用の場合
    elasticsearchUrl:
        用意したElasticsearchサーバのURLを指定してください。
    defaultAnalyzerProperty:
        利用するanalyzerを指定してください。

    □ (非推奨)OpenSearch利用の場合
    openSearchUrl:
        用意したOpenSearchサーバのURLを指定してください。
    defaultAnalyzerProperty:
        利用するanalyzerを指定してください。

    □ OpenSearch利用の場合
    restClientFactory に DefaultRestClientFactory を設定する場合
        openSearchUrl:
            用意したOpenSearchサーバのURLを指定してください。
    transportFactory に AwsSdk2OpenSearchTransportFactory を設定する場合
        host:
            用意したOpenSearchサーバの scheme を除いたホスト名を指定してください。
    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 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

    □ (Deprecated) use to OpenSearch
    openSearchUrl:
        Set url of OpenSearch server.
    defaultAnalyzerProperty:
        Set the analyzer to use

    □ use to OpenSearch
    When setting DefaultRestClientFactory to restClientFactory
        openSearchUrl:
            Set url of OpenSearch server.
    When setting AwsSdk2OpenSearchTransportFactory to transportFactory
        host:
            Set url of OpenSearch server without scheme.
    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" />

    <!-- 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>
    -->

    <!-- OpenSearch利用 -->
    <!--
    <class>org.iplass.mtp.impl.fulltextsearch.opensearch.OpenSearchFulltextSearchService</class>
    <depend>org.iplass.mtp.impl.awsv2.AWSSetting</depend>

    <property name="transportFactory"  class="org.iplass.mtp.impl.fulltextsearch.openserarch.awsv2.AwsSdk2OpenSearchTransportFactory">
        <property name="host" value="{ADDRESS}:{PORT}" />
        <property name="serviceName" value="es or aoss" />
        <property name="region" value="ap-northeast-1" />
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.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.fulltextsearch.opensearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>
    -->
</service>

3.30. GemConfigService

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

インタフェース名

org.iplass.gem.GemConfigService

実装クラス名

コミュニティエディション用設定
org.iplass.gem.GemConfigService
エンタープライズエディション用設定
org.iplass.gem.EnterpriseGemConfigService

GemConfigServiceの設定

コミュニティエディション用の動作を設定します。

設定項目
項目 説明

loadWithReference

boolean

リクエストのパラメータを基に参照データをロードする際、参照プロパティも合わせてロードするか。デフォルト値はfalseです。

formatNumberWithComma

boolean

詳細画面で数値プロパティの値をカンマでフォーマットするか。デフォルト値はtrueです。

fileSupportType

FileSupportType

ダウンロードやアップロードで利用するファイル形式。CSV EXCEL SPECIFY から指定します。デフォルト値は CSV です。

csvDownloadMaxCount

int

ダウンロード件数の上限値。デフォルト値は65535です。

uploadableCsvDownloadLoadSize

int

Upload形式のダウンロード時に多重度複数の参照を含むEntityの一括ロード件数。デフォルト値は1です。

csvDownloadCharacterCode

String、複数指定可

CSVダウンロードの文字コード。デフォルト値は UTF-8 です。

csvDownloadQuoteAll

boolean

CSVダウンロードで常時ダブルクォートの出力を行うか。デフォルト値はtrueです。

csvDownloadReferenceVersion

boolean

ダウンロードで参照項目のバージョンを出力するか。デフォルト値はtrueです。

uploadableCsvDownloadWithMappedByReference

boolean

Upload形式のダウンロード時に被参照プロパティも出力するか。デフォルト値はfalseです。

csvUploadCommitCount

int

アップロードのコミット単位。デフォルト値は1000です。

csvUploadAsync

boolean

アップロードを非同期で行うか。デフォルト値はfalseです。
非同期で行う場合は、 RdbQueueServiceuseQueue をtrueに設定してください。

csvUploadStatusPollingInterval

int

アップロードのステータスポーリングのインターバル。デフォルト値は10000(10秒)です。

searchResultCacheLimit

int

ダウンロード時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

ダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

csvDownloadWithFooter

boolean

汎用検索のCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

csvDownloadFooter

String

汎用検索のCSVダウンロードのフッター文言。

useDisplayLabelItemInSearch

boolean

検索処理で表示ラベルとして扱うプロパティを検索条件に利用するか。trueの場合、ReferencePropertyEditorで「表示ラベルとして扱うプロパティ」として設定された項目を通常検索のテキスト入力による条件指定時、または詳細検索の条件項目として設定します。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

useDisplayLabelItemInCsvDownload

boolean

ダウンロード処理で表示ラベルとして扱うプロパティを出力するか。trueの場合、ReferencePropertyEditorで「表示ラベルとして扱うプロパティ」として設定された項目をファイル項目として出力します。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

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 を参照してください。

richTextLibrary

String

StringPropertyEditorの RichText タイプで利用するデフォルトのリッチテキストライブラリ。 QUILL または CKEDITOR を指定します。デフォルト値は QUILL です。

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>

    <!-- Entityデータのサポートファイルタイプ。CSV, EXCEL, SPECIFY -->
    <property name="fileSupportType" value="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"/>

    <!-- ダウンロード参照項目バージョン出力 -->
    <property name="csvDownloadReferenceVersion" value="true"/>

    <!-- アップロードコミット単位 -->
    <property name="csvUploadCommitCount" value="1000"/>

    <!-- ダウンロード時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"/>

    <!-- ダウンロードのインターバル、無期限(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"/>

    <!-- ダウンロード処理で表示ラベルとして扱うプロパティを出力するか -->
    <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"/>

    <!-- アップロード非同期設定 -->
    <!-- true(非同期)を設定する場合は、 RdbQueueServiceのuseQueueプロパティをtrueに設定してください。 -->
    <property name="csvUploadAsync" value="false"/>

    <!-- アップロードステータスポーリングのインターバル、指定ミリ秒 -->
    <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.31. GoogleCloudSettings

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

インタフェース名

org.iplass.mtp.impl.googlecloud.GoogleCloudSettings

実装クラス名

org.iplass.mtp.impl.googlecloud.GoogleCloudSettings

GoogleCloudSettingsの設定

GoogleCloudSettingsを設定します。

設定項目
項目 説明

credentialsFactory

GoogleCredentialsFactory、必須

GoogleCredentials を生成するクラスを設定する。

GoogleCredentialsFactory

インターフェース org.iplass.mtp.impl.googlecloud.GoogleCredentialsFactory を実装したクラスです。

標準機能として、以下の GoogleCredentialsFactory を提供します。

  • org.iplass.mtp.impl.googlecloud.ServiceAccountSecretKeyGoogleCredentialsFactory

    • サービスアカウント用の秘密鍵ファイルを利用した認証情報を生成する機能です。

ServiceAccountSecretKeyGoogleCredentialsFactoryの設定

org.iplass.mtp.impl.googlecloud.ServiceAccountSecretKeyGoogleCredentialsFactory を指定します。

Google以外の環境を利用する場合に、サービスアカウント秘密鍵ファイルを利用して認証を行うことを想定しています。
Google環境を利用する場合は、サービスアカウント秘密鍵ファイル以外の方法を検討してください。参考: サービスアカウントキーを管理するためのベストプラクティス

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

項目 説明

serviceAccountSecretKeyFilePath

String、必須

Google Cloud 環境より取得したサービスアカウント秘密鍵ファイルへのパス(物理ファイルパスもしくは、リソースパス)を設定します。

scope

String、複数指定可

GoogleCredentials に設定するスコープ。設定可能なスコープは Google API の OAuth 2.0 スコープ を確認してください。

proxyHost

String

proxyを利用する場合のHost名。

proxyPort

int

proxyを利用する場合のPort番号。

設定例
<!-- GoogleCloudSettings -->
<service>
    <interface>org.iplass.mtp.impl.googlecloud.GoogleCloudSettings</interface>
    <class>org.iplass.mtp.impl.googlecloud.GoogleCloudSettings</class>

    <property name="credentialsFactory" class="org.iplass.mtp.impl.googlecloud.ServiceAccountSecretKeyGoogleCredentialsFactory">
        <!-- サービスアカウント用の秘密鍵ファイル(json)を設定する -->
        <property name="serviceAccountSecretKeyFilePath" value="/path/to/service-account.json" />
        <property name="scope" value="https://www.googleapis.com/auth/datastore" />
        <property name="scope" value="https://www.googleapis.com/auth/cloud-platform" />
        <property name="scope" value="https://www.googleapis.com/auth/firebase.messaging" />
        <!-- proxy利用する場合設定 -->
        <property name="proxyHost" value="xxxxxx.dentsusoken.com" />
        <property name="proxyPort" value="8080" />
    </property>
</service>

3.32. InfinispanService

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

インタフェース名

org.iplass.mtp.impl.infinispan.InfinispanService

実装クラス名

org.iplass.mtp.impl.infinispan.InfinispanService

InfinispanServiceの設定

InfinispanServiceを設定します。

設定項目
項目 説明

configurationFile

String

Infinispanの設定ファイル (XML)を指定します。設定ファイルはクラスパスリソースパスもしくは、ファイルパスを指定します。設定ファイルの詳細については Infinispan DocumentSchema reference を参照してください。

infinispan.serialization.allowList.class

String、複数指定可

Infinispan を利用しメッセージ送受信する際、キャッシュ情報を Infinispan クラスターで管理する際に、シリアライズを許可するクラス名を設定します。クラス名は、完全修飾クラス名を設定してください。

infinispan.serialization.allowList.regex

String、複数指定可

Infinispan を利用しメッセージ送受信する際、キャッシュ情報を Infinispan クラスターで管理する際に、シリアライズを許可するクラス名の正規表現パターンを設定します。

設定例
<service>
    <interface>org.iplass.mtp.impl.infinispan.InfinispanService</interface>
    <property name="configurationFile" value="infinispan.xml" />

    <!-- メッセージ送受信データ、キャッシュ情報に独自クラスを追加する場合はクラスを設定する。class, regex ともに複数指定可能。 -->
    <!--
    <property name="infinispan.serialization.allowList.class" value="package.path.Class" />
    <property name="infinispan.serialization.allowList.regex" value="^(\[L|)package\.path\..*(;|)$" />
    -->
</service>

3.33. 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.34. 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.35. 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" <