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

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

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

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

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

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

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

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

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

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

    :
    :

</serviceDefinition>

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

1.1. Serviceとは

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

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

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

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

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

明示的に指定する場合

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

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

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

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

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

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

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

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

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

ファイルパス 説明

/mtp-core-service-config.xml

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/mtp-web-service-config.xml

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

/mtp-tools-service-config.xml

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

/gem-service-config.xml

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

/mdc-service-config.xml

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

/adminconsole-service-config.xml

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

/infinispan-service-config.xml

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

/redis-service-config.xml

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

/appconsole-service-config.xml

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

/aws-service-config.xml

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

/wam-service-config.xml

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

/micrometer-service-config.xml

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

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

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

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

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

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

    :
    :

</serviceDefinition>

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

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

serviceDefinition要素

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

  • 属性

    属性名 説明

    preprocess

    boolean

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

  • 子要素

    要素名 説明

    inherits

    String、複数指定可

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

    includes

    String、複数指定可

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

    service

    service、複数指定可

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

service要素

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

  • 属性

    属性名 説明

    name

    String

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

    ifnone

    boolean

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

    inherit

    boolean

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

    final

    boolean

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

  • 子要素

    要素名 説明

    interface

    String、必須

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

    class

    String

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

    depend

    String、複数指定可

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

    property

    property、複数指定可

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

    bean

    bean、複数指定可

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

property要素

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

  • 属性

    属性名 説明

    name

    String

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

    value

    String

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

    class

    String

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

    builder

    String

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

    ref

    String

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

    ifnone

    boolean

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

    inherit

    boolean

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

    final

    boolean

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

    encrypted

    boolean

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

    additional

    boolean

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

  • 子要素

    要素名 説明

    value

    String

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

    property

    property、複数指定可

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

    arg

    property、複数指定可

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

    buildScript

    String

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

bean要素

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

  • 属性

    属性名 説明

    name

    String

    Beanの名前を設定します。

    class

    String

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

    builder

    String

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

    ifnone

    boolean

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

    inherit

    boolean

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

    final

    boolean

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

    additional

    boolean

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

  • 子要素

    要素名 説明

    property

    property、複数指定可

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

    arg

    property、複数指定可

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

    buildScript

    String

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

Collectionへの対応

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

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

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


</service>

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

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


</service>

設定例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    変数名 説明

    name

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

    value

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

    className

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

    properties

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

    args

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

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

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

1.6. 設定値の難読化

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

難読化方法の設定

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

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

項目名 設定値

propertyValueCoder

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

DefaultPropertyValueCoder

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

SecretsManagerPropertyValueCoder

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

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

DefaultPropertyValueCoder

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

項目名 設定値

keyFactoryAlgorithm

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

keySalt

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

keyStretch

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

keyLength

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

cipherAlgorithm

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

passphraseSupplier

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

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

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

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

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

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

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

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

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

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

passphrase

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

aws.secretName

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

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

crypt.propertiesの設定例
passphrase=hogehoge
SecretsManagerPropertyValueCoder

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

項目名 設定値

aws.secretName

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

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

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

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

パラメータ名

mtp.config.crypt

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

:
:

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

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

service-configへ設定

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

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

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

service-configへ設定

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

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

1.7. プリプロセッサ

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

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

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

    :
    :

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

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


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

    :
    :

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

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


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

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

    %> --> (2)

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

    :
    :

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

2. Service一覧

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

2.1. Core services

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

名前 概要

AsyncTaskService

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

AsyncTaskServiceForHttpMessageChannel

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

AuditLoggingService

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

AuthLoggerService

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

AuthService

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

AuthTokenService

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

AutoNumberTypeCounter

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

BinaryMetaDataService

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

CacheService

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

ClusterService

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

ConnectionFactory

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

CubeService

Cube集計のサービスです。

DefaultQueueBaseAsyncTaskService

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

EntityService

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

FulltextSearchService

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

I18nService

国際化のサービスです。

InterceptorService

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

ListingService

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

LobStoreService

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

LoggingService

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

MailService

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

MessageService

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

MetaDataRepository

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

OidCounter

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

OnetimeCodeGeneratorService

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

PropertyService

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

PropertyEncryptionService

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

PushNotificationService

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

QueryService

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

RdbAdapterService

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

RdbQueueService

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

ScheduleService

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

ScriptService

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

SecureRandomService

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

SmsService

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

StoreService

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

SyntaxService

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

TaskIdCounter

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

TenantContextService

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

ValidationService

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

WebhookService

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

WorkflowService

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

2.2. Web services

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

名前 概要

ActionMappingService

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

CsvUploadService

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

EntityCsvImportService

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

EntityWebApiService

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

IPAddressHistoryStoreService

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

OAuthAuthorizationService

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

OpenIdConnectService

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

ReportingEngineService

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

SamlService

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

TenantAvailableService

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

WebApiService

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

WebApiJaxbService

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

WebFrontendService

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

ODataService

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

2.3. Gem services

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

名前 概要

AggregationService

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

CubeTemplateService

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

EntityListingService

EntityListing機能のサービスです。

GemConfigService

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

MdcConfigService

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

MdcDetailViewService

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

MdcSearchViewService

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

RelativeRangeService

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

2.4. Admin services

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

名前 概要

AdminAuditLoggingService

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

AdminConsoleService

AdminConsoleService全般のサービスです。

2.5. Tools services

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

名前 概要

EntityPortingService

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

StorageSpaceService

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

TenantToolService

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

2.6. Other services

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

名前 概要

AWSSetting

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

InfinispanService

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

RedisService

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

CaptchaService

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

OutOfBandVerificationService

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

WamService

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

MicrometerService

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

3. Serviceの詳細

3.1. ActionMappingService

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

インタフェース名

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

実装クラス名

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

ActionMappingServiceの設定

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

設定項目
項目 説明

interceptor

RequestInterceptor、複数指定可

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

RequestInterceptor

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

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

InitialInterceptor

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

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

ActionCacheInterceptor

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

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

AuthInterceptor

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

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

ExceptionInterceptor

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

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

項目 説明

noHande

String、複数指定可

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

eliminate

String、複数指定可

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

LoggingInterceptor

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

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

項目 説明

actionTrace

boolean

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

partsTrace

boolean

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

paramName

String、複数指定可

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

noStackTrace

String、複数指定可

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

warnLogThresholdOfSqlExecutionCount

int

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

warnLogThresholdOfExecutionTimeMillis

long

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

UnavailableInterceptor

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

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

ActionMetricsInterceptor

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

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

項目 説明

provider

ActionMetricsTagsProvider

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

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

3.2. AdminAuditLoggingService

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

インタフェース名

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

実装クラス名

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

AdminAuditLoggingServiceの設定

AdminAuditLoggingServiceを設定します。

設定項目
項目 説明

logCompact

boolean

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

logQuery

boolean

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

logSelectValueWithLabel

boolean

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

logReferenceWithLabel

boolean

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

textMaxLength

int

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

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

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

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

3.3. AdminConsoleService

AdminConsoleService全般のサービスです。

インタフェース名

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

実装クラス名

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

AdminConsoleServiceの設定

AdminConsoleServiceを設定します。

設定項目
項目 説明

showServerInfo

boolean

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

logDownloadConfig

LogConfig

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

maxUploadFileSize

long

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

LogConfig

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

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

項目 説明

enabled

boolean

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

logHome

String、複数指定可

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

fileFilter

String、複数指定可

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

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

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

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

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

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

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

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

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

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

</service>

3.4. AggregationService

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

インタフェース名

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

実装クラス名

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

AggregationServiceの設定

AggregationServiceを設定します。

設定項目
項目 説明

useSubQueryIfPossible

boolean

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

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

3.5. AsyncTaskService

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

インタフェース名

org.iplass.mtp.impl.async.AsyncTaskService

実装クラス名

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

ThreadingAsyncTaskServiceの設定

ThreadingAsyncTaskServiceを設定します。

設定項目
項目 説明

corePoolSize

int

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

threadPoolType

String

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

fixed

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

single

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

cached

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

maximumPoolSize

int

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

keepAliveTime

long

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

useResourceHolder

boolean

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

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

3.6. AsyncTaskServiceForHttpMessageChannel

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

インタフェース名

org.iplass.mtp.impl.async.AsyncTaskService

実装クラス名

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

ThreadingAsyncTaskServiceの設定

ThreadingAsyncTaskServiceを設定します。

設定項目
項目 説明

corePoolSize

int

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

threadPoolType

String

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

fixed

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

single

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

cached

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

maximumPoolSize

int

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

keepAliveTime

long

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

useResourceHolder

boolean

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

設定例
<service name="AsyncTaskServiceForHttpMessageChannel">

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

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

3.7. AuditLoggingService

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

インタフェース名

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

実装クラス名

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

LoggerAuditLoggingServiceの設定

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

設定項目
項目 説明

logCompact

boolean

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

logQuery

boolean

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

logSelectValueWithLabel

boolean

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

logReferenceWithLabel

boolean

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

textMaxLength

int

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

maskTarget

MaskTarget

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

MaskTarget

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

設定項目
項目 説明

entity

String

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

property

String

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

maskHandler

MaskHandler

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

MaskHandler

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

LogAllMaskHandler

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

項目 説明

maskString

String

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

LogRegexMaskHandler

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

項目 説明

maskChar

String

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

maskRegex

String

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

LogHashMaskHandler

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

項目 説明

hashAlgorithm

String

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

LogNoMaskHandler

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

RdbAuditLoggingServiceの設定

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

設定項目

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

項目 説明

searchResultCacheLimit

long

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

logIndexOrder

boolean

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

disableLogging

boolean

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

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

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

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

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

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

3.8. AuthLoggerService

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

インタフェース名

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

実装クラス名

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

AuthLoggerServiceの設定

AuthLoggerServiceを設定します。

設定項目
項目 説明

loggers

AuthLogger、複数指定可

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

AuthLogger

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

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

Slf4jAuthLogger

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

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

項目 説明

loggerName

String

ロガー名。

slf4LoggerName

String

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

MultiAuthLogger

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

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

項目 説明

loggerName

String

ロガー名。

logger

AuthLogger、複数指定可

標準のロガーの設定。

EnterpriseSlf4jAuthLogger

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

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

AuthenticationEventMetrics

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

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

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

3.9. AuthService

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

インタフェース名

org.iplass.mtp.impl.auth.AuthService

実装クラス名

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

AuthServiceの設定

AuthServiceを設定します。

設定項目
項目 説明

userSessionStore

UserSessionStore

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

authorizationProvider

AuthorizationProvider

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

authenticationProvider

AuthenticationProvider、複数指定可

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

EnterpriseAuthServiceの設定

AuthServiceを設定します。

設定項目

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

UserSessionStore

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

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

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

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

項目 説明

shareLoginSession

boolean

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

sessionFixationProtection

DefaultUserSessionStore.SessionFixationProtectionMethod

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

CHANGE_SESSION_ID

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

NEW_SESSION

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

デフォルト値は CHANGE_SESSION_ID です。

AuthorizationProvider

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

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

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

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

項目 説明

authorizationContextHandler

AuthorizationContextHandler、複数指定可

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

grantAllPermissionsToAdmin

boolean

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

AuthorizationContextHandler

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

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

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

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

CubeAuthContextHandler

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

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

EntityAuthContextHandler

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

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

項目 説明

useCorrelatedSubqueryOnEntityLimitCondition

boolean

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

WebApiAuthContextHandler

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

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

WorkflowAuthContextHandler

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

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

AuthenticationProvider

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

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

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

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

項目 説明

providerName

String

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

updatable

boolean

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

true

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

false

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

passwordHashSetting

PasswordHashSetting 、複数指定可

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

autoLoginHandler

AutoLoginHandler

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

userEntityResolver

UserEntityResolver

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

PasswordHashSetting

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

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

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

項目 説明

version

String

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

passwordHashAlgorithm

String

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

systemSalt

String

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

stretchCount

int

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

Argon2PasswordHashSetting

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

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

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

項目 説明

version

String

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

passwordHashAlgorithm

String

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

hashLength

int

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

systemSalt

String

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

parallelism

int

並列数。

memorySizeKB

int

メモリサイズ(KiB)。

iterations

int

反復回数。

IdPasswordAutoLoginHandler

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

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

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

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

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

項目 説明

enableBasicAuthentication

boolean

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

rejectAmbiguousRequest

boolean

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

true

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

false

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

DefaultUserEntityResolver

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

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

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

項目 説明

unmodifiableUniqueKeyProperty

String

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

eagerLoadReferenceProperty

String、複数指定可

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

filterCondition

String

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

UserEntityResolverを実装する独自クラス

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

SimpleAuthTokenAuthenticationProvider

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

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

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

項目 説明

providerName

String

autoLoginHandler

AutoLoginHandler

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

credentialTypeForTrust

String

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

accountHandleClassForTrust

String

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

userEntityResolver

UserEntityResolver

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

BearerTokenAutoLoginHandler

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

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

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

項目 説明

rejectAmbiguousRequest

boolean

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

true

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

false

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

bearerTokenHeaderOnly

boolean

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

authTokenType

String

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

DefaultUserEntityResolver

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

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

UserEntityResolverを実装する独自クラス

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

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

AccessTokenAuthenticationProvider

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

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

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

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

項目 説明

providerName

String

autoLoginHandler

AutoLoginHandler

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

credentialTypeForTrust

String

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

accountHandleClassForTrust

String

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

userEntityResolver

UserEntityResolver

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

BearerTokenAutoLoginHandler

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

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

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

DefaultUserEntityResolver

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

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

UserEntityResolverを実装する独自クラス

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

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

ConfigFileAuthenticationProvider

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

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

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

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

項目 説明

providerName

String

accounts

AccountConfig、複数指定可

アカウント情報の設定。

tenantIds

int、複数指定可

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

AccountConfig

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

項目 説明

id

String

アカウントのID。

password

String

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

admin

boolean

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

attrributeMap

String

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

JaasAuthenticationProvider

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

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

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

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

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

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

項目 説明

providerName

String

entryName

String

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

uniquePrincipalType

java.security.Principal

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

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

userEntityResolver

UserEntityResolver

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

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

DefaultUserEntityResolver

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

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

AccountBaseUserEntityResolver

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

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

UserEntityResolverを実装する独自クラス

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

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

JeeContainerManagedAuthenticationProvider

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

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

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

項目 説明

providerName

String

validateOnlyLogin

boolean

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

roleAsGroup

String、複数指定可

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

userEntityResolver

UserEntityResolver

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

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

DefaultUserEntityResolver

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

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

AccountBaseUserEntityResolver

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

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

UserEntityResolverを実装する独自クラス

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

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

LdapAuthenticationProvider

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

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

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

項目 説明

providerName

String

BuiltinAuthenticationProviderを参照してください。

jndiEnv

JNDIEnv

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

userDn

String

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

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

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

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

getUser

boolean

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

userBaseDn

String

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

cn=Users,ou=${tenantName}

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

userFilter

String

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

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

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

uniqueKeyAttribute

String

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

getGroup

boolean

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

groupBaseDn

String

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

cn=Groups,ou=${tenantName}

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

groupFilter

String

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

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

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

groupCodeAttribute

String

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

groupAsTenant

boolean

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

tenantGroupCode

String

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

T-${tenantName}

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

userEntityResolver

UserEntityResolver

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

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

JNDIEnv

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

項目 説明

java.naming.factory.initial

String

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

java.naming.provider.url

String

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

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

java.naming.security.principal

String

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

java.naming.security.credentials

String

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

DefaultUserEntityResolver

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

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

AccountBaseUserEntityResolver

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

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

項目 説明

propertyName

String

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

accountAttributeName

String

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

id

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

unmodifiableUniqueKey

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

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

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

type

Class

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

defaultValue

Object

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

UserEntityResolverを実装する独自クラス

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

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

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

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

[userID]@[domainName]

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

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

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

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

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

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

項目 説明

providerName

String

validateOnlyLogin

boolean

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

sourceType

SourceType

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

accountIdAttribute

String

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

uniqueKeyAttribute

String

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

userAttribute

String、複数指定可

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

logoutUrl

String

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

userEntityResolver

UserEntityResolver

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

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

SourceType

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

HEADER

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

REQUEST

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

SESSION

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

DefaultUserEntityResolver

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

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

AccountBaseUserEntityResolver

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

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

UserEntityResolverを実装する独自クラス

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

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

X509AuthenticationProvider

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

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

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

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

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

項目 説明

providerName

String

validateOnlyLogin

boolean

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

twoStep2ndFactor

boolean

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

userEntityResolver

UserEntityResolver

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

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

DefaultUserEntityResolver

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

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

AccountBaseUserEntityResolver

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

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

UserEntityResolverを実装する独自クラス

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

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

SamlAuthenticationProvider

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

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

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

項目 説明

providerName

String

userEntityResolver

UserEntityResolver

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

SamlUserEntityResolver

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

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

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

項目 説明

eagerLoadReferenceProperty

String、複数指定可

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

filterCondition

String

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

AccountBaseUserEntityResolver

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

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

UserEntityResolverを実装する独自クラス

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

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

TwoStepAuthenticationProvider

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

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

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

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

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

項目 説明

providerName

String

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

primary

AuthenticationProvider

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

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

secondary

AuthenticationProvider

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

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

OnetimeCodeAuthenticationProvider

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

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

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

TimeBasedAuthenticationProvider

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

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

項目 説明

maxFailureCount

int

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

failureExpirationInterval

int

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

unmodifiableUniqueKeyResolver

UnmodifiableUniqueKeyResolver

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

DefaultUnmodifiableUniqueKeyResolver

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

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

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

項目 説明

unmodifiableUniqueKeyProperty

String

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

DefaultUnmodifiableUniqueKeyResolverを実装する独自クラス

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

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

KnowledgeBasedAuthenticationProvider

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

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

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

RememberMeTokenAuthenticationProvider

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

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

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

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

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

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

項目 説明

providerName

String

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

authenticationProvider

AuthenticationProvider

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

deleteTokenOnFailure

boolean

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

clientStore

AuthTokenClientStore

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

autoLoginHandler

AutoLoginHandler

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

AuthTokenCookieStore

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

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

項目 説明

cookieName

String

Cookie名。

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

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

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

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

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

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

3.10. AuthTokenService

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

インタフェース名

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

実装クラス名

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

AuthTokenServiceの設定

AuthTokenServiceを設定します。

設定項目
項目 説明

storeMap

AuthTokenStore、Map形式

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

handler

AuthTokenHandler、複数指定可

AuthTokenHandlerの設定。

AuthTokenStore

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

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

RdbAuthTokenStore

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

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

項目 説明

saveDetailAsJson

boolean

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

authTokenStore

AuthTokenStore

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

CachableAuthTokenStore

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

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

項目 説明

cacheStoreName

String

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

authTokenStore

AuthTokenStore

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

CacheOnlyAuthTokenStore

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

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

項目 説明

cacheStoreName

String

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

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

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

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

RememberMeTokenHandler

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

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

項目 説明

store

String

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

type

String

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

hashSettings

HashSetting、複数指定可

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

secureRandomGeneratorName

String

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

visible

boolean

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

HashSetting

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

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

項目 説明

version

String

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

hashAlgorithm

String

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

stretchCount

int

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

SimpleAuthTokenHandler

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

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

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

項目 説明

store

String

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

type

String

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

hashSettings

HashSetting、複数指定可

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

secureRandomGeneratorName

String

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

visible

boolean

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

TimeBasedOneTimePasswordHandler

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

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

項目 説明

store

String

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

type

String

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

timeStepWindowSize

int

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

AccessTokenHandler

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

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

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

項目 説明

store

String

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

refreshTokenStore

String

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

type

String

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

refreshTokenType

String

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

hashSettings

HashSetting、複数指定可

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

secureRandomGeneratorName

String

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

refreshTokenSecureRandomGeneratorName

String

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

visible

boolean

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

OAuthClientCredentialHandler

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

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

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

項目 説明

store

String

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

type

String

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

hashSettings

HashSetting、複数指定可

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

secureRandomGeneratorName

String

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

oldCredentialValidDays

int

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

WebhookAuthTokenHandler

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

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

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

項目 説明

store

String

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

type

String

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

CookieRiskEvaluationTokenHandler

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

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

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

項目 説明

store

String

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

type

String

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

hashSettings

HashSetting、複数指定可

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

secureRandomGeneratorName

String

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

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

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

3.11. AutoNumberTypeCounter

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

インタフェース名

org.iplass.mtp.impl.counter.CounterService

実装クラス名

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

RdbTableCounterServiceの設定

RdbTableCounterServiceを設定します。

設定項目
項目 説明

separateTransaction

boolean

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

retryCount

int

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

counterTypeName

String

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

CachableRdbTableCounterServiceの設定

CachableRdbTableCounterServiceを設定します。

設定項目
項目 説明

separateTransaction

boolean

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

retryCount

int

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

counterTypeName

String

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

cacheSize

int

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

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

3.12. AWSSetting

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

インタフェース名

org.iplass.mtp.impl.aws.AWSSetting

実装クラス名

org.iplass.mtp.impl.aws.AWSSetting

AWSSettingの設定

AWSSettingを設定します。

設定項目
項目 説明

accessKeyId

String

AWSのアクセスキーID

secretKey

String

AWSのシークレットキー

clientConfiguration

ClientConfiguration

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

configurationMap

ClientConfiguration、Map形式

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

ClientConfiguration

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

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

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

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

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

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

3.13. BinaryMetaDataService

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

インタフェース名

org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService

実装クラス名

org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService

BinaryMetaDataServiceの設定

バイナリ形式のメタデータの保持に関する動作について設定します。

設定項目
項目 説明

keepInMemoryThreshold

int

メモリ内に保持するサイズの閾値(バイト)。 サイズが閾値を超える場合は一時ファイルとして保持されます。デフォルト値は65536(64KiB)です。

cacheMemoryThreshold

int

メモリにキャッシュするサイズの閾値(バイト)。 サイズが閾値以下の場合はメモリにキャッシュされます。デフォルト値は1048576(1024KiB)です。

xmlBinaryChunkSize

int

メタデータのXMLにマーシャルまたはアンマーシャルする際のチャンクサイズ(バイト)。 デフォルト値は262144(256KiB)です。

deleteTempFileOnDestroy

boolean

サービスが破棄される、あるいは仮想マシン(VM)がシャットダウンされる際に一時ファイルを削除するか。デフォルト値はtrueです。

tempFileDir

String

一時ファイルが保存されるディレクトリのパス。 設定しない場合は"java.io.tmpdir"のディレクトリパスが使用されます。

設定例
<service>
    <interface>org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService</interface>
    <property name="keepInMemoryThreshold" value="65536" />
    <property name="cacheMemoryThreshold" value="1048576" />
    <property name="xmlBinaryChunkSize" value="262144" />
    <property name="deleteTempFileOnDestroy" value="true" />
    <!-- if temp dir not specified, use "java.io.tmpdir"'s dir -->
    <!--
    <property name="tempFileDir" value="/tmp" />
    -->
</service>

3.14. CacheService

キャッシュストアを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.cache.CacheService

実装クラス名

org.iplass.mtp.impl.cache.CacheService

CacheServiceの設定

CacheServiceを設定します。

設定項目
項目 説明

defaultFactory

CacheStoreFactory

標準のCacheStoreFactoryの設定。

"defaultFactory"以外の任意の文字列

CacheStoreFactory、複数指定可

個別のCacheStoreFactoryの設定。

CacheStoreFactory

classはorg.iplass.mtp.impl.cache.store.CacheStoreFactoryの実装クラスを指定します。

標準で、以下のCacheStoreFactoryを提供します。

共通設定

各CacheStoreFactoryの共通の設定項目です。 以下の項目を設定可能です。

項目 説明

namespace

String

キャッシュを行う名前空間。

namespacePattern

String

キャッシュを行う名前空間のパターン。パターンは正規表現で記述します。

indexCount

int

インデックスの数。デフォルト値は0です。

concurrencyLevelOfCacheHandler

int

CacheHandlerの並列実行数。デフォルト値は4です。

RdbCacheStoreFactory

Rdbを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

cacheKeyResolver

CacheKeyResolver

CacheKeyResolverの設定。

cacheIndexResolver

CacheKeyResolver、複数指定可

インデックスのCacheKeyResolverの設定。

connectionFactoryName

String

接続ファクトリ名。

rdbArapterName

String

RdbAdapter名。

tableName

String

キャッシュを保存するテーブル名。デフォルト値は CACHE_STORE です。

retryCount

int

キャッシュ保存失敗時にリトライする回数。デフォルト値は0です。

timeToLive

long

キャッシュの生存時間(ミリ秒)。-1が設定された場合は無期限となります。デフォルト値は-1です。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。timeToLiveの設定よりtimeToLiveCalculatorの実装が優先されます。

SimpleCacheStoreFactory

内部メモリを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

initialCapacity

int

キャッシュの初期容量。デフォルト値は16です。

loadFactor

float

負荷係数。初期値は0.75です。

concurrencyLevel

int

並行して更新しているスレッドの推定数。デフォルト値は16です。

timeToLive

int

キャッシュの生存時間(ミリ秒)。-1が設定された場合は無期限となります。デフォルト値は-1です。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。timeToLiveの設定よりtimeToLiveCalculatorの実装が優先されます。

size

int

キャッシュのサイズ。-1が設定された場合は無制限となります。デフォルト値は-1です。

multiThreaded

boolean

マルチスレッドに対応するか。デフォルト値はtrueです。

evictionInterval

long

キャッシュの有効期限(ミリ秒)。-1が設定された場合は無期限となります。デフォルト値は-1です。

fineGrainedLock

boolean

細粒度のロックを行うかどうか。Index利用且つキャッシュの更新頻度が高い場合、このフラグを有効化することにより、キャッシュ更新処理の並列性が向上する可能性があります。デフォルト値はfalseです。

indexConfig

FineGrainedLockIndexConfig、複数指定可

細粒度のロックのindex毎の詳細設定です。

FineGrainedLockIndexConfig

classにorg.iplass.mtp.impl.cache.store.builtin.FineGrainedLockIndexConfigの実装クラスを指定します。

以下の項目を設定可能です。

項目 説明

shardSize

int

シャードのサイズ。並列度に応じた値を設定します。デフォルト値は1です。

fair

boolean

ロック時の公平性ポリシーを指定します。公平順序付けポリシーを使用する場合は true を指定します。デフォルトはfalseです。

SyncServerCacheStoreFactory

信頼性の低い、サーバ間のキャッシュを同期するCacheStoreFactoryです。 実ストアのtimeToLiveの設定で一定間隔でキャッシュがリフレッシュされる前提で利用してください。 他のサーバがキャッシュの更新処理中にダウンした場合などは、そのtimeToLiveの間、キャッシュと実データの間で不整合が発生する可能性あります。 以下の項目を設定可能です。

項目 説明

cacheKeyResolver

CacheKeyResolver

CacheKeyResolverの設定。

cacheIndexResolver

CacheKeyResolver、複数指定可

インデックスのCacheKeyResolverの設定。

store

CacheStoreFactory

CacheStoreFactoryの設定。

listener

SyncServerCacheEventListener

同期メッセージ受信時に実行するリスナーの設定。

noClusterEventOnPut

boolean

キャッシュへのput操作時に別サーバに通知しない場合にtrueを設定する。デフォルト値はfalse(通知する)です。

TransactionLocalCacheStoreFactory

トランザクションが有効な間はバックエンドのCacheStoreに反映を遅延するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

backendStore

CacheStoreFactory

バックエンドのCacheStoreFactoryの設定。

InfinispanCacheStoreFactory

Infinispanを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

createOnStartup

boolean

スタートアップ時にCacheStoreを生成するか。デフォルト値はfalseです。

cacheConfigrationName

String

キャッシュ名。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。

RedisCacheStoreFactory

Redisを利用するCacheStoreFactoryです。 以下の項目を設定可能です。

項目 説明

serverName

String

RedisServiceで設定されたサーバ名。

timeToLive

long

キャッシュの生存時間(秒)。0以下が設定された場合は無期限となります。デフォルト値は0 (無期限) です。

timeToLiveCalculator

TimeToLiveCalculator

キャッシュエントリ個別に生存期間を動的に設定したい場合、org.iplass.mtp.impl.cache.store.TimeToLiveCalculatorインタフェースの実装クラスを指定します。timeToLiveの設定よりtimeToLiveCalculatorの実装が優先されます。

retryCount

int

キャッシュ保存失敗時のリトライ回数。デフォルト値は0 (リトライしない) です。

poolConfig

RedisCacheStorePoolConfig

コネクションプールの設定 (Apache Commons-pool2 を使用しています)。

RedisCacheStorePoolConfig

以下の項目が設定可能です。各項目の詳細やデフォルト値は、Apache Commons-pool2のorg.apache.commons.pool2.impl.BaseObjectPoolConfig、org.apache.commons.pool2.impl.GenericObjectPoolConfigで確認できます。

項目 説明

maxTotal

int

プールから割り当てることができるコネクションの最大数。デフォルト値は8です。

maxIdle

int

プール内のアイドルインスタンス数の上限。デフォルト値は8です。

minIdle

int

プール内に維持するアイドルインスタンスの最小数。デフォルト値は0です。

blockWhenExhausted

boolean

maxTotalに達した状態でプールからインスタンスを取得しようとしたときに呼び出し元が待機する必要があるかどうか。デフォルト値はtrueです。

maxWaitMillis

long

コネクションが使用できないときに呼び出し元が待機する最大ミリ秒数。デフォルト値は-1 (タイムアウトしない) です。

testOnBorrow

boolean

コネクションをプールから取得する前に検証するかどうか。デフォルト値はfalseです。

testOnReturn

boolean

コネクションがプールに返される前に検証するかどうか。デフォルト値はfalseです。

testWhileIdle

boolean

プール内のアイドルインスタンスを検証するかどうか。デフォルト値はfalseです。

timeBetweenEvictionRunsMillis

long

プール内のアイドルインスタンスの検証が実行される間にスリープする時間。デフォルト値は-1 (検証しない) です。

minEvictableIdleTimeMillis

long

プール内でインスタンスがアイドル状態になってから、検証されて退去させられるようになるまでの最小時間。デフォルト値は 180000 (30分) です。

numTestsPerEvictionRun

int

アイドルインスタンス検証スレッドの書く実行中に検査するオブジェクトの最大数。デフォルト値は3です。

MetricsCacheStoreFactory

バックエンドCacheStoreのサイズ、キャッシュヒット回数/ミス回数をメトリクスとして収集するCacheStoreFactoryです。バックエンドに実際にキャッシュを行う永続ストアを持っており、このクラスではキャッシュに関する操作は行いません(記録のみ)。 Micrometerモジュールを依存関係に追加した場合に設定可能です。Micrometerモジュールを適用した場合、標準で設定されているCacheStoreFactoryに対して、メトリクスを収集するようにデフォルトで設定されます。

以下の項目を設定可能です。

項目 説明

wrappedStore

CacheStoreFactory

バックエンドのCacheStoreFactoryの設定。

sizeOnly

boolean

CacheStoreのサイズのみを記録するかを指定します。falseの場合、CacheStoreのサイズに加えて、Cacheのヒット/ミスの回数をnameSpace毎に記録します。デフォルトでは、Queryキャッシュ、ActionContentキャッシュのみfalseに設定されています。

CacheKeyResolver

classにorg.iplass.mtp.impl.cache.store.keyresolver.CacheKeyResolverの実装クラスを指定します。

標準で、以下のCacheKeyResolverを提供します。

CounterCacheKeyResolver

classにorg.iplass.mtp.impl.counter.CachableRdbTableCounterServicea$CounterCacheKeyResolverを指定します。

CounterKey型のCacheKeyResolverです。設定変更可能な項目はありません。

IntegerCacheKeyResolver

classにorg.iplass.mtp.impl.cache.store.keyresolver.IntegerCacheKeyResolverを指定します。

Integer型のCacheKeyResolverです。設定変更可能な項目はありません。

QueryCacheKeyResolver

classにorg.iplass.mtp.impl.entity.cache.QueryCacheKeyResolverを指定します。

Query型のCacheKeyResolverです。設定変更可能な項目はありません。

StringCacheKeyResolver

classにorg.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolverを指定します。

文字列型のCacheKeyResolverです。設定変更可能な項目はありません。

SyncServerCacheEventListener

classにorg.iplass.mtp.impl.metadata.MetaDataSyncServerCacheListenerを指定します。

メタデータの同期を行います。設定変更可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.cache.CacheService</interface>

    <!-- Entityのトランザクションローカル用キャッシュ(非共有) -->
    <property name="entityTransactionLocal" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.entity.transactionLocalCache" />
        <property name="multiThreaded" value="false" />
        <property name="size" value="32" />
    </property>

    <!-- Queryのトランザクションローカル用キャッシュ(非共有) -->
    <property name="queryTransactionLocal" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.entity.transactionLocalQueryCache" />
        <property name="indexCount" value="1" /><!-- index:defName -->
        <property name="multiThreaded" value="false" />
        <property name="size" value="32" />
    </property>

    <!-- 権限チェック結果のキャッシュ(非共有) -->
    <property name="permissionLocal" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.auth.permissionCache" />
        <property name="multiThreaded" value="false" />
        <property name="size" value="16" />

    </property>

    <!-- TenantContextキャッシュ -->
    <property name="tenantContext" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespace" value="mtp.tenant.tenantContext" />
        <property name="indexCount" value="1" /><!-- index:tenantUrl -->
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        </property>
    </property>

    <!-- CounterServiceのカウンタキャッシュ -->
    <property name="rdbTableCounter" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
        <property name="namespace" value="mtp.counter.rdbTableCounter" />
        <property name="cacheKeyResolver" class="org.iplass.mtp.impl.counter.CachableRdbTableCounterService$CounterCacheKeyResolver" />
        <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
            <property name="timeToLive" value="-1" />
            <property name="size" value="1024" />
        </property>
    </property>

    <!-- 権限系Entityのキャッシュ -->
    <property name="authBuiltin" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]auth[.]builtin[.].*" />
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
            <property name="cacheKeyResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <!-- 6時間有効 -->
                <property name="timeToLive" value="21600000" />
            </property>
        </property>
    </property>

    <!-- メタデータ(本体)キャッシュ -->
    <property name="metadata" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]metadata[.]metaData/.*" />
        <property name="indexCount" value="1" /><!-- index:path -->
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
            <property name="cacheKeyResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="cacheIndexResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <!-- 12時間有効 -->
                <property name="timeToLive" value="43200000" />
            </property>
            <property name="listener" class="org.iplass.mtp.impl.metadata.MetaDataSyncServerCacheListener" />
        </property>
    </property>

    <!-- メタデータ(パスに対するリスト)キャッシュ(サーバローカルキャッシュ。メタデータ本体キャッシュのサーバ通知経由でデータの同期) -->
    <property name="metadataList" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]metadata[.]metaDataDefList/.*" />
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <!-- 12時間有効 -->
                <property name="timeToLive" value="43200000" />
        </property>
    </property>

    <!-- cubeのキャッシュ -->
    <property name="cubeStatus" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.aggregation.cube.status" />
    </property>
    <property name="cubeFactData" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespace" value="mtp.aggregation.cube.factPartition" />
        <property name="concurrencyLevelOfCacheHandler" value="4" />
    </property>

    <!-- Queryキャッシュ -->
    <property name="query" class="org.iplass.mtp.impl.cache.store.builtin.TransactionLocalCacheStoreFactory">
        <property name="namespacePattern" value="mtp[.]entity[.]queryCache/.*" />
        <property name="indexCount" value="1" /><!-- index:defName -->
        <property name="backendStore" class="org.iplass.mtp.impl.cache.store.builtin.SyncServerCacheStoreFactory">
            <property name="cacheKeyResolver" class="org.iplass.mtp.impl.entity.cache.QueryCacheKeyResolver" />
            <property name="cacheIndexResolver" class="org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver" />
            <property name="store" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
                <property name="fineGrainedLock" value="true" />
                <property name="indexConfig" class="org.iplass.mtp.impl.cache.store.builtin.FineGrainedLockIndexConfig">
                    <property name="shardSize" value="16" />
                    <property name="fair" value="true" />
                </property>
                <!-- 12時間有効 -->
                <property name="timeToLive" value="43200000" />
                <!-- 最大128 -->
                <property name="size" value="128" />
            </property>
        </property>
    </property>

    <!-- 上記namespace以外の場合のデフォルトキャッシュ -->
    <property name="defaultFactory" class="org.iplass.mtp.impl.cache.store.builtin.SimpleCacheStoreFactory">
        <property name="namespacePattern" value=".*" />
        <property name="indexCount" value="5" />
    </property>
</service>

3.15. CaptchaService

reCAPTCHAによるロボット排除を管理するためのサービスです。

インタフェース名

org.iplass.wam.impl.captcha.CaptchaService

実装クラス名

org.iplass.wam.impl.captcha.CaptchaService

CaptchaServiceの設定

CaptchaServiceを設定します。

設定項目
項目 説明

captchaMethod

CaptchaMethod、複数指定可

CaptchaMethodの設定。

CaptchaMethod

classはorg.iplass.wam.impl.captcha.CaptchaMethodの実装クラスを指定します。

標準でorg.iplass.wam.impl.captcha.ReCaptchaMethodを提供しています。 以下の項目を設定可能です。

項目 説明

siteKey

String

reCAPTCHAのサイトキー。

secretKey

String

GoogleのreCAPTCHAのシークレットキー。reCAPTCHA Enterpriseを使用する場合、GCPのAPIキー。

projectId

String

reCAPTCHA Enterpriseを使用する場合、GCPのプロジェクトIDを入力します。

allowableScoreThreshold

String

許容するスコアの閾値。設定した閾値以上のスコアの場合、正当であると判断します。reCAPTCHA v3もしくはreCAPTCHA Enterpriseの場合に設定します。

設定例
<service>
    <interface>org.iplass.wam.impl.captcha.CaptchaService</interface>
    <class>org.iplass.wam.impl.captcha.CaptchaService</class>

    <property name="captchaMethod" class="org.iplass.wam.impl.captcha.ReCaptchaMethod">
        <property name="siteKey" value="yourSiteKey" />
        <property name="secretKey" value="yourSecretKey" />
        <property name="projectId" value="yourProjectId" />
        <property name="allowableScoreThreshold" value="0.5" />
    </property>

</service>

3.16. ClusterService

クラスタ間通信を行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.cluster.ClusterService

実装クラス名

org.iplass.mtp.impl.cluster.ClusterService

ClusterServiceの設定

ClusterServiceを設定します。

設定項目
項目 説明

messageChannel

MessageChannel

クラスタ間の通信に利用するメッセージチャネルの設定。

MessageChannel

classはorg.iplass.mtp.impl.cluster.channel.MessageChannelの実装クラスを指定します。

標準で、以下のMessageChannelを提供します。

HttpMessageChannel

classはorg.iplass.mtp.impl.cluster.channel.http.HttpMessageChannelを指定します。

Httpを介してメッセージ送受信するメッセージチャネルです。以下の項目を設定可能です。

項目 説明

serverUrl

String、複数指定可

他のクラスタメンバの通信用URL。
指定するURLは次の形式となります。

http://[server]:[port]/[applicationContext]/cmcs

自身のサーバのurlも含めることも可能です。 serverUrlに自身のサーバのurlを含めた場合、次の形で自身のurlを解決して、それ以外のサーバにメッセージ送信します。

  1. システムプロパティに以下が設定されていた場合、その値を自身のサーバ名、ポートと判断する
    mtp.cluster.http.myservername = [server名]
    mtp.cluster.http.myportno = [portNo]
    ※クラスタ設定のserverUrlで同一サーバ名のURLが複数ある場合、ポート指定が必要です

  2. 動作環境から自身のサーバ名を自動解決する
    以下のいずれかの方法でネットワークインタフェースを特定

    1. 明示的にネットワークインタフェースを指定する場合
      システムプロパティでネットワークインタフェースを指定する
      mtp.cluster.http.myinterfacename = [networkInterface名]

    2. 最初に定義されている(LoopBackでなく現在利用可能な)ネットワークインタフェースを利用
      特定されたネットワークインタフェースに定義されているサーバ名(FQDN/サーバ名)/IPAdressを自身のサーバ名と判断する。
      もしそれでも見つからない場合は、LoopBackを自身のサーバ名と判断する。
      ※1.と同様、クラスタ設定のserverUrlで同一サーバ名のURLが複数ある場合、mtp.cluster.http.myportnoシステムプロパティにてポート指定が必要

certKey

String

通信時の認証用のキー。クラスタメンバで同一のものを定義します。

connectionTimeout

int

http通信確立時のConnectionTimeout値(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

http通信確立時のSoTimeout値(ミリ秒)。デフォルト値は30000(30秒)です。

proxyHost

String

http通信する際のproxyHost。

proxyPort

int

http通信する際のproxyPort。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

retryCount

int

メッセージ送信失敗時のリトライ回数。デフォルト値は3です。

retryDelay

int

メッセージ送信失敗時のリトライ間隔(ms)。デフォルト値は3です。

JGroupsMessageChannel

classはorg.iplass.mtp.impl.cluster.channel.jgroups.JGroupsMessageChannelを指定します。 JGroupsを介してメッセージ送受信するメッセージチャネルです。以下の項目を設定可能です。

項目 説明

configFilePath

String

JGroupsの設定ファイルへのパスを指定します。 指定されたパスを元に、次の順にファイルを検索します。

  1. リソースパス(classpath配下)

  2. ファイルパス(OS上のファイルとして)

clusterName

String

JGroupsのクラスタ名を指定します。同一のクラスタ名が指定されたノードがクラスタメンバとなります。

InfinispanMessageChannel

classはorg.iplass.mtp.impl.infinispan.cluster.channel.InfinispanMessageChannelを指定します。

Infinispanを利用してメッセージの送受信を行うメッセージチャネルです。 InfinispanMessageChannelを利用する場合は、別途 InfinispanService の設定が必要です。

以下の項目を設定可能です。

項目 説明

sync

boolean

メッセージの送信を同期して行うかを設定します。

設定例
HttpMessageChannel
<service>
    <interface>org.iplass.mtp.impl.cluster.ClusterService</interface>
    <property name="messageChannel"
        class="org.iplass.mtp.impl.cluster.channel.http.HttpMessageChannel">
        <property name="serverUrl" value="http://xxx1.xxx.xxx/app/cmcs" />
        <property name="serverUrl" value="http://xxx2.xxx.xxx/app/cmcs" />
        <property name="certKey" value="yourOwnClusterCertKey" />
        <property name="connectionTimeout" value="30000" />
        <property name="soTimeout" value="30000" />
        <property name="proxyHost" value="proxy.xxx.xxx" />
        <property name="proxyPort" value="8080" />
    </property>
</service>
JGroupsMessageChannel
<service>
    <interface>org.iplass.mtp.impl.cluster.ClusterService</interface>
    <property name="messageChannel" class="org.iplass.mtp.impl.cluster.channel.jgroups.JGroupsMessageChannel">
        <property name="configFilePath" value="/jgroups-config-udp.xml" />
        <property name="clusterName" value="yourOwnClusterName" />
    </property>
</service>
InfinispanMessageChannel
<service>
    <interface>org.iplass.mtp.impl.cluster.ClusterService</interface>
    <depend>org.iplass.mtp.impl.infinispan.InfinispanService</depend>
    <property name="messageChannel" class="org.iplass.mtp.impl.infinispan.cluster.channel.InfinispanMessageChannel">
        <property name="sync" value="false" />
    </property>
</service>

3.17. ConnectionFactory

データベース接続を行うためのサービスです。 データベース接続の実装として、DriverManagerを利用した接続と、DataSourceを利用した接続のモジュールを標準提供します。

インタフェース名

org.iplass.mtp.impl.rdb.connection.ConnectionFactory

実装クラス名

DriverManagerを利用した接続
org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory
DataSourceを利用した接続
org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory
DataSourceを利用した接続(リードレプリカ対応版)
org.iplass.mtp.impl.rdb.connection.ReplicationAwareDataSourceConnectionFactory

DriverManagerConnectionFactoryの設定

DriverManagerを利用したデータベースの接続情報を設定します。

設定項目
項目 説明

url

String

データベース接続文字列のURL。

user

String

ログインに使用されるユーザー名。

password

String

接続するユーザーのパスワード。

driver

String

JDBCドライバの完全修飾クラス名。

warnLogThreshold

int

警告ログを出力する処理時間(ミリ秒)の閾値。
デフォルト値は0です。
閾値を越えるスロークエリーが実行された場合、ログ出力されます。

warnLogBefore

boolean

事前警告ログを出力するか否かを指定します。
デフォルトはtrueです。
現状、当該フラグがtrueの場合は、INDEXを利用しないEQLクエリーが発行される場合に、事前警告ログが出力されます。

countSqlExecution

boolean

SQL発行回数を記録するか否かを指定します。記録されたSQL実行回数はAction、Web APIなどの実行単位とともにログ出力されます。
デフォルト値はtrueです。

transactionIsolationLevel

String

トランザクションの分離レベル。以下が設定可能。

NONE

ConnectionのTRANSACTION_NONEに対応

READ_UNCOMMITTED

ConnectionのTRANSACTION_READ_UNCOMMITTEDに対応

READ_COMMITTED

ConnectionのTRANSACTION_READ_COMMITTEDに対応

REPEATABLE_READ

ConnectionのTRANSACTION_REPEATABLE_READに対応

SERIALIZABLE

ConnectionのTRANSACTION_SERIALIZABLEに対応

clientInfoMap

String、Map形式

ConnectionのclientInfoへセットする値をMap形式で指定します。nameにはclientInfoのname、valueにはセットする値のMDCのキー名を指定します。valueに thread が指定された場合はThread名がセットされます。

clientInfoMaxLength

int

ConnectionのclientInfoへセットする値の最大文字数を指定します。 -1の場合は、無制限です。
デフォルト値は-1です。

isCreateConnectionIfReadOnlyTransaction

boolean

実行対象のトランザクションが読み取り専用の場合に、フレームワーク内で管理している未使用コネクションを利用せず、新規にコネクションを作成するか否かを指定します。true が指定されると、新規にコネクションを作成します。
デフォルト値は false です。

設定例
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory</class>

    <property name="url" value="jdbc:oracle:thin:ADDRESS:PORT:DB" />
    <property name="user" value="yourName" />
    <property name="password" value="yourPassword" />
    <property name="driver" value="oracle.jdbc.driver.OracleDriver" />

    <property name="warnLogThreshold" value="0" />

    <property name="clientInfoMap">
        <property name="OCSID.CLIENTID" value="thread" />
        <property name="OCSID.ACTION" value="command" />
    </property>
    <property name="clientInfoMaxLength" value="64" />
    <property name="isCreateConnectionIfReadOnlyTransaction" value="false" />
</service>

DataSourceConnectionFactoryの設定

DataSourceを利用したデータベースの接続情報を設定します。 DataSourceは次のいずれかの方法で取得します。

  • JNDI経由で取得する

  • DataSourceのインスタンスを直接生成する

設定項目
項目 説明

dataSourceName

String

データソース名。デフォルト値は java:comp/env/jdbc/defaultDS です。
JNDI経由で取得する場合に指定します。

jndienv.<キー名>

String、複数指定可

JNDIの環境プロパティ。
JNDI経由で取得する場合に指定します。

dataSource

javax.sql.DataSource

javax.sql.DataSourceを実装するクラスのインスタンスを指定。
DataSourceのインスタンスを直接生成する場合に指定します。

warnLogThreshold

int

警告ログを出力する処理時間(ミリ秒)の閾値。
デフォルト値は0です。
閾値を越えるスロークエリーが実行された場合、ログ出力されます。

warnLogBefore

boolean

事前警告ログを出力するか否かを指定します。
デフォルトはtrueです。
現状、当該フラグがtrueの場合は、INDEXを利用しないEQLクエリーが発行される場合に、事前警告ログが出力されます。

countSqlExecution

boolean

SQL発行回数を記録するか否かを指定します。記録されたSQL実行回数はAction、Web APIなどの実行単位とともにログ出力されます。
デフォルト値はtrueです。

transactionIsolationLevel

String

トランザクションの分離レベル。以下が設定可能。

NONE

ConnectionのTRANSACTION_NONEに対応

READ_UNCOMMITTED

ConnectionのTRANSACTION_READ_UNCOMMITTEDに対応

READ_COMMITTED

ConnectionのTRANSACTION_READ_COMMITTEDに対応

REPEATABLE_READ

ConnectionのTRANSACTION_REPEATABLE_READに対応

SERIALIZABLE

ConnectionのTRANSACTION_SERIALIZABLEに対応

clientInfoMap

String、Map形式

ConnectionのclientInfoへセットする値をMap形式で指定します。nameにはclientInfoのname、valueにはセットする値のMDCのキー名を指定します。valueに thread が指定された場合はThread名がセットされます。

clientInfoMaxLength

int

ConnectionのclientInfoへセットする値の最大文字数を指定します。 -1の場合は、無制限です。
デフォルト値は-1です。

isCreateConnectionIfReadOnlyTransaction

boolean

実行対象のトランザクションが読み取り専用の場合に、フレームワーク内で管理している未使用コネクションを利用せず、新規にコネクションを作成するか否かを指定します。true が指定されると、新規にコネクションを作成します。
デフォルト値は false です。

設定例(JNDI経由)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory</class>

    <property name="dataSourceName" value="java:comp/env/jdbc/sampleDS" />
    <property name="jndienv.java.naming.factory.initial"
        value="custom.JNDIInitialContextFactory" />
    <property name="jndienv.java.naming.provider.url"
        value="custom://server:1234:path/to/context" />

    <property name="warnLogThreshold" value="0" />

    <property name="clientInfoMap">
        <property name="threadName" value="thread" />
        <property name="commandName" value="command" />
    </property>
    <property name="isCreateConnectionIfReadOnlyTransaction" value="false" />
</service>
設定例(直接生成)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory</class>

    <property name="dataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:mysql://server:3306/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
        <property name="dataSourceProperties">
            <property name="serverTimezone" value="JST" />
        </property>
    </property>

    <property name="warnLogThreshold" value="0" />

    <property name="clientInfoMap">
        <property name="threadName" value="thread" />
        <property name="commandName" value="command" />
    </property>
    <property name="isCreateConnectionIfReadOnlyTransaction" value="false" />
</service>

ReplicationAwareDataSourceConnectionFactoryの設定

DataSourceを利用したデータベースの接続情報を設定します。 オリジナル(読み書き可能)、リードレプリカ(読み取り専用)、それぞれのDataSourceを設定します。

MySQLのJDBCドライバはドライバレベルでリードレプリカに対応しているため、ReplicationAwareDataSourceConnectionFactoryを利用せずともリードレプリカへの対応は可能です。詳しくはMySQLのドキュメントを参照ください。

オリジナル、リードレプリカそれぞれのDataSourceは次のいずれかの方法で取得します。

  • JNDI経由で取得する

  • DataSourceのインスタンスを直接生成する

設定項目
項目 説明

dataSourceName

String

オリジナルのデータソース名。デフォルト値は java:comp/env/jdbc/defaultDS です。
JNDI経由で取得する場合に指定します。

replicaDataSourceName

String、複数指定可

リードレプリカのデータソース名。
JNDI経由で取得する場合に指定します。
複数指定された場合は、コネクション取得時にランダムに振り分けされます。

jndienv.<キー名>

String、複数指定可

JNDIの環境プロパティ。
JNDI経由で取得する場合に指定します。

dataSource

javax.sql.DataSource

javax.sql.DataSourceを実装するクラスのインスタンスを指定。
DataSourceのインスタンスを直接生成する場合に指定します。

replicaDataSource

javax.sql.DataSource、複数指定可

javax.sql.DataSourceを実装するクラスのインスタンスを指定。
リードレプリカのDataSourceのインスタンスを直接生成する場合に指定します。
複数指定された場合は、コネクション取得時にランダムに振り分けされます。

warnLogThreshold

int

警告ログを出力する処理時間(ミリ秒)の閾値。
デフォルト値は0です。
閾値を越えるスロークエリーが実行された場合、ログ出力されます。

warnLogBefore

boolean

事前警告ログを出力するか否かを指定します。
デフォルトはtrueです。
現状、当該フラグがtrueの場合は、INDEXを利用しないEQLクエリーが発行される場合に、事前警告ログが出力されます。

countSqlExecution

boolean

SQL発行回数を記録するか否かを指定します。記録されたSQL実行回数はAction、Web APIなどの実行単位とともにログ出力されます。
デフォルト値はtrueです。

transactionIsolationLevel

String

トランザクションの分離レベル。以下が設定可能。

NONE

ConnectionのTRANSACTION_NONEに対応

READ_UNCOMMITTED

ConnectionのTRANSACTION_READ_UNCOMMITTEDに対応

READ_COMMITTED

ConnectionのTRANSACTION_READ_COMMITTEDに対応

REPEATABLE_READ

ConnectionのTRANSACTION_REPEATABLE_READに対応

SERIALIZABLE

ConnectionのTRANSACTION_SERIALIZABLEに対応

clientInfoMap

String、Map形式

ConnectionのclientInfoへセットする値をMap形式で指定します。nameにはclientInfoのname、valueにはセットする値のMDCのキー名を指定します。valueに thread が指定された場合はThread名がセットされます。

clientInfoMaxLength

int

ConnectionのclientInfoへセットする値の最大文字数を指定します。 -1の場合は、無制限です。
デフォルト値は-1です。

isCreateConnectionIfReadOnlyTransaction

boolean

実行対象のトランザクションが読み取り専用の場合に、フレームワーク内で管理している未使用コネクションを利用せず、新規にコネクションを作成するか否かを指定します。true が指定されると、新規にコネクションを作成します。
デフォルト値は true です。

設定例(JNDI経由)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.ReplicationAwareDataSourceConnectionFactory</class>

    <property name="dataSourceName" value="java:comp/env/jdbc/sampleDS" />
    <property name="replicaDataSourceName" value="java:comp/env/jdbc/sampleReplicaDS1" />
    <property name="replicaDataSourceName" value="java:comp/env/jdbc/sampleReplicaDS2" />

    <property name="jndienv.java.naming.factory.initial"
        value="custom.JNDIInitialContextFactory" />
    <property name="jndienv.java.naming.provider.url"
        value="custom://server:1234:path/to/context" />

    <property name="warnLogThreshold" value="0" />
    <property name="isCreateConnectionIfReadOnlyTransaction" value="true" />

</service>
設定例(直接生成)
<service>
    <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface>
    <class>org.iplass.mtp.impl.rdb.connection.ReplicationAwareDataSourceConnectionFactory</class>

    <property name="dataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:postgresql://server:5432/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
    </property>

    <property name="replicaDataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:postgresql://replicaServer1:5432/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
    </property>
    <property name="replicaDataSource" class="com.zaxxer.hikari.HikariDataSource">
        <property name="jdbcUrl" value="jdbc:postgresql://replicaServer2:5432/mtdb" />
        <property name="username" value="user" />
        <property name="password" value="pass" />
    </property>

    <property name="warnLogThreshold" value="0" />
    <property name="isCreateConnectionIfReadOnlyTransaction" value="true" />

</service>

3.18. CsvUploadService

CSVアップロードを管理するサービスです

インタフェース名

org.iplass.mtp.impl.csv.CsvUploadService

実装クラス名

org.iplass.mtp.impl.csv.CsvUploadService

CsvUploadServiceの設定

CsvUploadServiceを設定します。

設定項目
項目 説明

showErrorLimitCount

int

CSVアップロードエラー表示件数上限値。-1 を指定した場合は無制限となる。

defaultUpdateTargetVersionForNoneVersionedEntity

TargetVersion

CSVアップロードのバージョン管理Entity以外の場合の更新時のデフォルトTargetVersion。デフォルト値は CURRENT_VALID です。

mustOrderByWithLimit

boolean

アップロード形式でのCSVダウンロード時に、件数上限が指定されている場合にOrderByを必ず指定するかを設定する。デフォルト値は false です。

SQLServerを利用している場合は、 true を指定してください。 SQLServerの場合、以下の条件に該当するとデータが取得できない状況になりますが、この値を true にすることでデータを取得します。

  • ダウンロード件数制限をしている

  • 指定された検索条件に多重度複数のReferenceに対する条件が含まれる

設定例
<service>
    <interface>org.iplass.mtp.impl.csv.CsvUploadService</interface>
    <class>org.iplass.mtp.impl.csv.CsvUploadService</class>
    <!-- CSVアップロードエラー表示件数上限値 (-1は無制限)  -->
    <property name="showErrorLimitCount" value="100"/>

    <!--
     CSVアップロードのバージョン管理Entity以外の場合の更新時のデフォルトTargetVersion。
     デフォルトはCURRENT_VALID。
    -->
    <property name="defaultUpdateTargetVersionForNoneVersionedEntity" value="SPECIFIC"/>

    <!--
        CSVダウンロード時にLimitが指定されている場合にOrderByを必ず指定するか。
        SQLServerの場合はtrueを指定すること。
    -->
    <property name="mustOrderByWithLimit" value="false"/>
</service>

3.19. CubeService

Cubeの定義(メタデータ)を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.aggregation.cube.CubeService

実装クラス名

org.iplass.mtp.impl.aggregation.cube.CubeService

CubeServiceの設定

CubeServiceを設定します。

設定項目
項目 説明

enablePhysicalResourceLoading

boolean

ファイルやJDBCといった物理リソースへのアクセスを許可するか。デフォルト値はfalseです。

useDataCompression

boolean

メモリ内に展開したデータを圧縮するか。デフォルト値はtrueです。

decompressDataReferenceType

String

useDataCompression有効時、展開されたデータの保持形式を指定。 SOFT もしくは WEAK を指定します。デフォルト値は SOFT です。

SOFT

展開されたデータはSoftReferenceとしてキャッシュされます。 WeakReferenceに比較し、キャッシュが再利用されやすくなります。 ただし、CSVダウンロードなど一度に大量のデータが展開され、且つメモリがひっ迫した状況下においては、レスポンス性能が極端に悪化する可能性があります。 java VMの起動オプション、 -XX:SoftRefLRUPolicyMSPerMB によりSoftReferenceの生存期間を調整することが必要です。

WEAK

展開されたデータはWeakReferenceとしてキャッシュされます。

useFlyweightListOnBitSetColData

boolean

BitMap形式でデータ格納する際、Listとして実データを保持するか。trueにした場合、集計速度は速くなりますがメモリ使用量は増えます。デフォルト値はfalseです。

useHashIndexOnListColData

boolean

ObjectPool形式でデータ格納する際、HashIndexを生成するか。trueにした場合、集計速度は速くなりますがメモリ使用量は増えます。デフォルト値はfalseです。

hashIndexSegmentSize

int

HashIndex利用時のHashのセグメントサイズ。設定された値は2の累乗に自動的に補正されます。デフォルト値は16です。

maxRowsOfDimension

int

集計時の最大ディメンジョン数(Clientへの返却可能な行数)。デフォルト値は10000です。

maxRowsOfDimensionInternal

int

集計時の最大ディメンジョン数(内部処理での)。デフォルト値は100000です。

transferredRawDataInMemoryThreshold

int

ローデータ取得時に分散環境下において、他Nodeから実データが転送されてきますが、それをメモリ内で扱う閾値。これより大きい場合は、一旦ファイルに落とします。デフォルト値は16384(16K)です。

joinBufferSize

int

Cubeのjoinを行う際のバッファーサイズ(行数)。大きくするとロード速度は上がりますがメモリ使用量が増えます。デフォルト値は1000です。

enableDistinctRows

boolean

ローデータ取得時にdistinctRow指定を許可するか。distinct操作には重複チェックのため取得する行数に応じてメモリを消費します。デフォルト値はtrueです。

inMemoryRowThresholdOfDistinctRows

int

ローデータ取得時のdistinct処理において、メモリ内で処理する最大行数。これ以上の行を処理する場合はファイルにスワップします(速度は低下します)。-1はすべてをメモリ内で処理します。0はすべてをファイルで処理します。デフォルト値は10000です。

loadStrategy

LoadStrategy

メモリへのデータロード取得時の処理方式。

useForkJoin

boolean

fork-join frameworkベースのコードで処理するか。複数Nodeでの分散実行の際にtrue設定すると高速化が望めます。デフォルト値はfalseです。

gapFillLimit

int

ディメンジョンのギャップを埋める場合のカテゴリ数の最大値。これ以上のカテゴリとなる場合はギャップ埋めしません。デフォルト値は100です。

queryTimeoutOfWaitLoading

long

クエリ実行から読み込みを待機するタイムアウト期間(ms)。デフォルト値は3000です。

maxRowsOfDerivedCube

int

DerivedCube利用時のローデータの最大行数。メモリ内で処理するため行数を制限する。

innerCubeLoadTimeoutSec

long

Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合の待機の最大時間(秒)。

innerCubeLoadIntervalSec

int

Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合のロードが完了したかをチェックする間隔(秒)。

rawDataDimensionResolverBufferSize

int

ReferenceやSelectValueをラベル表示する際のバッファーサイズ。デフォルト値は100。

listaggDefaultSeparator

String

LISTAGG集約関数利用時のデフォルトのセパレータです。デフォルト値は , です。

LoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.LoadStrategyの実装クラスを指定します。

標準で、以下のLoadStrategyを提供します。

AllPartitionDirectLoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.AllPartitionDirectLoadStrategyを指定します。

直接ダイレクトにメモリに読み込む方式です。設定変更可能な項目はありません。
メモリを大量消費しますが高速です。

PerPartitionLoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.PerPartitionLoadStrategyを指定します。

パーティション単位でデータを読み込む方式です。設定変更可能な項目はありません。
パーティションタイプがMOD,LISTの場合、またはCubeの読み込み元がCSVの場合で、あらかじめパーティション単位でデータが分けられている場合、これを指定するとメモリ消費抑えつつ高速ロードが期待できます。

SaveMemoryLoadStrategy

classはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.SaveMemoryLoadStrategyを指定します。

ファイルへデータをスワップしながらなるべくメモリ消費を抑えながらロードする方式です。設定変更可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.aggregation.cube.CubeService</interface>
    <class>org.iplass.mtp.impl.aggregation.cube.CubeService</class>
    <!-- ファイルやJDBCといった物理リソースへのアクセスを許可するかどうか -->
    <property name="enablePhysicalResourceLoading" value="false"/>
    <!-- メモリ内に展開したデータを圧縮するかどうか(圧縮しない場合は、メモリ使用量は増える。ただ、GC後の初回集計時に集計速度が多少遅くなることはない) -->
    <property name="useDataCompression" value="true"/>
    <!-- BitMap形式でデータ格納する際、Listとして実データを保持するかどうか。(trueにした場合、集計速度は速くなるが、メモリ使用量は増える) -->
    <property name="useFlyweightListOnBitSetColData" value="false"/>
    <!-- ObjectPool形式でデータ格納する際、HashIndexを生成するかどうか。(trueにした場合、集計速度は速くなるが、メモリ使用量は増える) -->
    <property name="useHashIndexOnListColData" value="false"/>
    <!-- HashIndex利用時のHashのセグメントサイズ。(2の累乗に自動的に補正される) -->
    <property name="hashIndexSegmentSize" value="16"/>
    <!-- 集計時の最大ディメンジョン数(Clientへの返却可能な行数) -->
    <property name="maxRowsOfDimension" value="10000"/>
    <!-- 集計時の最大ディメンジョン数(内部処理での) -->
    <property name="maxRowsOfDimensionInternal" value="100000"/>
    <!-- ローデータ取得時に分散環境下において、他Nodeから実データが転送されてくるが、それをメモリ内で扱う閾値。これより大きい場合は、一旦ファイルに落とす。デフォルト16K。 -->
    <property name="transferredRawDataInMemoryThreshold" value="16384"/>
    <!-- Cubeのjoinを行う際のバッファーサイズ(行数)。大きくするとロード速度は上がるが、メモリ使用量が増える。 -->
    <property name="joinBufferSize" value="1000"/>
    <!-- ローデータ取得時にdistinctRow指定を許可するかどうか。distinct操作には重複チェックのため、取得する行数に応じて、メモリを消費する。 -->
    <property name="enableDistinctRows" value="true"/>
    <!-- ローデータ取得時のdistinct処理において、メモリ内で処理する最大行数。これ以上の行を処理する場合はファイルにスワップする(速度は低下する)。-1はすべてをメモリ内で処理。0はすべてをファイルで処理。 -->
    <property name="inMemoryRowThresholdOfDistinctRows" value="10000"/>
    <!-- メモリへのデータロード取得時の処理方式
            SaveMemoryLoadStrategy:         ファイルへデータをスワップしながらなるべくメモリ消費を抑えながらロードする方式。
            AllPartitionDirectLoadStrategy: 直接ダイレクトにメモリに読み込む方式。メモリを大量消費するが、高速。
            PerPartitionLoadStrategy:       パーティション単位でデータを読み込む方式。
                                            パーティションタイプがMOD,LISTの場合、またはCubeの読み込み元がCSVの場合で、
                                            あらかじめパーティション単位でデータが分けられている場合、これを指定するとメモリ消費抑えつつ高速ロードが期待できる。

            ※いずれもパッケージはorg.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load
     -->
    <property name="loadStrategy" class="org.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.SaveMemoryLoadStrategy"/>
    <!-- fork-join frameworkベースのコードで処理するか否か。複数Nodeでの分散実行の際にtrue設定すると高速化が望める -->
    <property name="useForkJoin" value="false"/>
    <!-- ディメンジョンのギャップを埋める場合のカテゴリ数の最大値。これ以上のカテゴリとなる場合は、ギャップ埋めしない -->
    <property name="gapFillLimit" value="100"/>
    <!-- DerivedCube利用時のローデータの最大行数。メモリ内で処理するため行数を制限する。 -->
    <property name="maxRowsOfDerivedCube" value="10000"/>
    <!-- Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合の待機の最大時間(秒)。 -->
    <property name="innerCubeLoadTimeoutSec" value="1800"/>
    <!-- Cubeの結合、DerivedCube時に、参照先のCubeがLOADINGであった場合のロードが完了したかをチェックする間隔(秒)。 -->
    <property name="innerCubeLoadIntervalSec" value="10"/>
</service>

3.20. CubeTemplateService

Cube集計のカスタムメジャーのテンプレートを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService

実装クラス名

org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService

CubeTemplateServiceの設定

CubeTemplateServiceを設定します。

設定項目
項目 説明

templateSettings

CubeTemplateSetting、複数指定可

カスタムメジャーに利用するテンプレートの設定。

CubeTemplateSetting

classはorg.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSettingを指定します。

カスタムメジャーに利用するテンプレート設定です。以下の項目を設定可能です。

項目 説明

displayLabel

String

表示ラベル。

valueExpressionTemplate

String

カスタムメジャー用の式。式中に埋め込まれた${1}はCubeのアイテム名に置換されます。

locale

String

ロケール。

設定例
<service>
    <interface>org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService</interface>
    <class>org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService</class>
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="10刻み" />
        <property name="valueExpressionTemplate" value="CASE WHEN ${1} &lt; 10 THEN '0' WHEN ${1} &lt; 20 THEN '10' WHEN ${1} &lt; 30 THEN '20' WHEN ${1} &lt; 40 THEN '30' WHEN ${1} &lt; 50 THEN '40' WHEN ${1} &lt; 60 THEN '50' WHEN ${1} &lt; 70 THEN '60' ELSE '70' END" />
        <property name="locale" value="ja" />
    </property>
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="10 increments" />
        <property name="valueExpressionTemplate" value="CASE WHEN ${1} &lt; 10 THEN '0' WHEN ${1} &lt; 20 THEN '10' WHEN ${1} &lt; 30 THEN '20' WHEN ${1} &lt; 40 THEN '30' WHEN ${1} &lt; 50 THEN '40' WHEN ${1} &lt; 60 THEN '50' WHEN ${1} &lt; 70 THEN '60' ELSE '70' END" />
        <property name="locale" value="en" />
    </property>
<!--
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="" />
        <property name="valueExpressionTemplate" value="" />
        <property name="locale" value="ja" />
    </property>
    <property name="templateSettings" class="org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting">
        <property name="displayLabel" value="" />
        <property name="valueExpressionTemplate" value="" />
        <property name="locale" value="en" />
    </property>
-->
</service>

3.21. DefaultQueueBaseAsyncTaskService

RDBによるキューを利用した標準の非同期実行のサービスです。
非同期実行するためのAsyncTaskServiceの定義です。

インタフェース名

org.iplass.mtp.impl.async.AsyncTaskService

実装クラス名

org.iplass.mtp.impl.async.rdb.RdbAsyncTaskService

RdbAsyncTaskServiceの設定

RdbAsyncTaskServiceを設定します。

設定項目
項目 説明

defaultGetResultTimeoutMillis

long

標準の結果取得のタイムアウト時間(ミリ秒)。デフォルト値は60000(1分)です。

initialGetResultIntervalMillis

long

初期の結果取得のインターバル時間(ミリ秒)。デフォルト値は100です。

設定例
<service name="DefaultQueueBaseAsyncTaskService">
    <interface>org.iplass.mtp.impl.async.AsyncTaskService</interface>
    <class>org.iplass.mtp.impl.async.rdb.RdbAsyncTaskService</class>
    <property name="defaultGetResultTimeoutMillis" value="60000" />
    <property name="initialGetResultIntervalMillis" value="100" />
</service>

3.22. EntityService

エンティティを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.entity.EntityService

実装クラス名

org.iplass.mtp.impl.entity.EntityService

EntityServiceの設定

エンティティハンドラを設定します。

設定項目
項目 説明

limitOfReferences

int

エンティティの参照数の制限値。デフォルト値は1000です。

oidValidationPattern

String

oidに設定可能な文字列を制限するための正規表現。デフォルト値は ^[0-9a-zA-Z_\-]+$ です。

purgeTargetDate

int

ごみ箱データのクリーナー対象日数。クリーナー対象日数よりも前にごみ箱へ削除されたデータが物理削除されます。

interceptor

EntityInterceptor、複数指定可

エンティティに対する操作の前に挿む処理。

additionalStoreMaintainer

AdditionalStoreMaintainer、複数指定可

データ削除、デフラグ実行時に、併せてストア内をメンテナンスする処理。

EntityInterceptor

classはorg.iplass.mtp.entity.interceptor.EntityInterceptorの実装クラスを指定します。

AdditionalStoreMaintainer

classはorg.iplass.mtp.impl.entity.AdditionalStoreMaintainerの実装クラスを指定します。

設定例
<service>
    <interface>org.iplass.mtp.impl.entity.EntityService</interface>
    <property name="limitOfReferences" value="1000" />
    <property name="oidValidationPattern" value="^[0-9a-zA-Z_\-]+$" />

    <!--
        ごみ箱データのクリーナー用日付です。日数を指定して下さい。
        下記の場合、実行時より30日前の日付がクリーナー対象日となります。
        クリーナー対象日よりも前にごみ箱へ削除されたデータが物理削除されます。
    <property name="purgeTargetDate" value="30" />
    -->

    <property name="interceptor" class="org.iplass.mtp.impl.entity.contentcache.ContentCacheInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.auth.EntityAuthInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.available.EntityReadOnlyInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.auditlog.AuditLogInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.listener.EntityEventListenerInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.l10n.EntityLocalizationInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.cache.EntityCacheInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.fulltextsearch.FulltextSearchInterceptor" />

    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.entity.auditlog.AuditLogStoreMaintainer" />
    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.entity.fulltextsearch.FulltextSearchStoreMaintainer" />
    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.lob.LobStoreMaintainer" />

    <property name="extendPropertyAdapterFactory" class="org.iplass.mtp.impl.entity.EnterpriseExtendPropertyAdapterFactory" />

</service>

3.23. EntityCsvImportService

EntityのCSVインポートに関するサービスです。

インタフェース名

org.iplass.mtp.impl.csv.EntityCsvImportService

実装クラス名

org.iplass.mtp.impl.csv.EntityCsvImportService

EntityCsvImportServiceの設定

EntityCsvImportServiceを設定します。

設定項目
項目 説明

canCreateUserWithSpecificPassword

boolean

UserエンティティのInsert時にパスワード指定を許可するか。デフォルト値は false です。

設定例
<service>
    <interface>org.iplass.mtp.impl.csv.EntityCsvImportService</interface>

    <property name="canCreateUserWithSpecificPassword" value="true" />
</service>

3.24. EntityPortingService

Entityデータのツールに関するサービスです。

インタフェース名

org.iplass.mtp.impl.tools.entityport.EntityPortingService

実装クラス名

org.iplass.mtp.impl.tools.entityport.EntityPortingService

EntityPortingServiceの設定

EntityPortingServiceを設定します。

設定項目
項目 説明

uploadableCsvDownloadLoadSize

int

Entityのプロパティに多重度複数の参照を含む場合の一括ロード件数。デフォルト値は 1 です。

canCreateUserWithSpecificPassword

boolean

UserエンティティのInsert時にパスワード指定を許可するか。デフォルト値は false です。

将来のバージョンでは本設定項目は削除されます。EntityCsvImportServicecanCreateUserWithSpecificPassword を使用してください。
設定例
<service>
    <interface>org.iplass.mtp.impl.tools.entityport.EntityPortingService</interface>

    <property name="uploadableCsvDownloadLoadSize" value="100" />
</service>

3.25. EntityListingService

EntityListingの定義(メタデータ)を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.view.entitylisting.EntityListingService

実装クラス名

org.iplass.mtp.impl.view.entitylisting.EntityListingService

EntityListingServiceの設定

EntityListingServiceを設定します。

設定項目
項目 説明

searchResultCacheLimit

int

User名取得のための検索内部キャッシュサイズ(件数)。デフォルト値は300です。

useSubQueryIfPossible

boolean

フィルター条件に保存リストを利用する場合に、可能な限りサブクエリを利用するか。デフォルト値はfalseです。

設定例
<service>
    <interface>org.iplass.mtp.impl.view.entitylisting.EntityListingService</interface>
    <class>org.iplass.mtp.impl.view.entitylisting.EntityListingService</class>
    <!-- User名取得のための検索内部キャッシュサイズ -->
    <property name="searchResultCacheLimit" value="300" />
    <!-- フィルター条件に保存リストを利用する場合に、可能な限りサブクエリを利用するか否か -->
    <property name="useSubQueryIfPossible" value="false" />
</service>

3.26. EntityWebApiService

EntityWebApiを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.webapi.EntityWebApiService

実装クラス名

org.iplass.mtp.impl.webapi.EntityWebApiService

EntityWebApiServiceの設定

EntityWebApiServiceを設定します。

設定項目
項目 説明

maxLimit

int

EntityWebApiの取得件数の上限。

Web APIのパラメータにて tabular=ture を指定した場合、もしくはAcceptが text/csv の場合はこの制約は適用されません。

throwSearchResultLimitExceededException

boolean

取得件数がmaxLimitを超えた際、例外をスローする場合はtrueを指定します。デフォルト値はfalseです。

csvDateTimeFormat

String

EntityWebApiのQuery検索でCSV形式の結果を返す場合のDateTime型の出力形式。未指定の場合は、実行時のLocaleFormatを利用します。

csvDateFormat

String

EntityWebApiのQuery検索でCSV形式の結果を返す場合のDate型の出力形式。未指定の場合は、実行時のLocaleFormatを利用します。

csvTimeFormat

String

EntityWebApiのQuery検索でCSV形式の結果を返す場合のTime型の出力形式。未指定の場合は、実行時のLocaleFormatを利用します。

loadWithMappedByReference

boolean

EntityWebApiのLoad処理で被参照プロパティを取得するか否かのデフォルト値です。デフォルト値はfalseです。

listWithMappedByReference

boolean

EntityWebApiのQuery検索で被参照プロパティを取得するか否かのデフォルト値です。デフォルト値はfalseです。

csvListWithMappedByReference

boolean

EntityWebApiのQuery検索のCSV形式の場合、被参照プロパティを取得するか否かのデフォルト値です。 未設定時はlistWithMappedByReferenceの設定値が適用されます。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

enableNativeHint

boolean

EntityWebApiの呼び出し時にNative Hintの指定を可能とするか否かを設定。デフォルト値はfalseです。

permitRolesToSpecifyOptions

String、複数指定可

EntityWebApiの呼び出し時に制御オプションの指定を可能とするロールを設定。Adminユーザーの場合はロールが設定されていなくても制御オプションは利用できます。

設定例
<service>
    <interface>org.iplass.mtp.impl.webapi.EntityWebApiService</interface>
    <property name="maxLimit" value="1000" />
    <property name="csvDateTimeFormat" value="yyyy/MM/dd HH:mm:ss" />
    <property name="csvDateFormat" value="yyyy/MM/dd" />
    <property name="csvTimeFormat" value="HH:mm:ss" />

    <property name="loadWithMappedByReference" value="true" />

    <property name="permitRolesToSpecifyOptions" value="RoleA" />
    <property name="permitRolesToSpecifyOptions" value="RoleB" />

</service>

3.27. FulltextSearchService

全文検索のサービスです。 全文検索の実装として、Luceneを利用した全文検索、Elasticsearchを利用した全文検索、OpenSearchを利用した全文検索、Solrを利用した全文検索を標準提供します。

インタフェース名

org.iplass.mtp.impl.fulltextsearch.FulltextSearchService

実装クラス名

Luceneを利用した全文検索
org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService
Elasticsearchを利用した全文検索
org.iplass.mtp.impl.fulltextsearch.elasticsearch.ElasticsearchFulltextSearchService
OpenSearchを利用した全文検索
org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService
(非推奨)Solrを利用した全文検索
org.iplass.mtp.impl.fulltextsearch.FulltextSearchSolrService

FulltextSearchServiceの設定

全文検索の共通項目を設定します。

設定項目
項目 説明

useFulltextSearch

boolean

全文検索を利用するか。デフォルト値はfalseです。

maxRows

int

全文検索の結果件数の上限。デフォルト値は1000です。

throwExceptionWhenOverLimit

boolean

maxRows以上の件数がヒットした場合の挙動。 trueの場合、件数以上取得できたことのメッセージを表示し、検索結果は出しません。 falseの場合、件数以上取得できたことのメッセージを表示し、検索結果も出します。デフォルト値はtrueです。

redundantTimeMinutes

long

前回Index更新日時-redundantTimeMinutes より後のデータに対してIndexの処理を行います。デフォルト値は10です。

binaryParser

BinaryReferenceParser、複数指定可

BinaryReference解析用のParser。

binaryParseLimitLength

int

BinaryReferenceのParse可能な最大文字数。

scorePropertyName

String

検索結果のEntityにスコア値を格納する際のプロパティ名を設定。デフォルト値は score です。

includeMappedByReferenceIfNoPropertySpecified

boolean

検索結果のEntityに被参照の値も取得するかどうかを設定。デフォルト値は false です。

BinaryReferenceParser

Apache Tikaを利用してBinaryReferenceの内容を解析します。

classはorg.iplass.mtp.impl.fulltextsearch.parser.BinaryReferenceParserの実装クラスを指定します。

標準で以下のBinaryReferenceParserを提供します。

BinaryAutoDetectParser

TikaのAutoDetectParserを利用して全てのタイプを対象に解析します。 ただし解析に必要となる依存ライブラリが存在しない場合はスキップします。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryAutoDetectParserを指定します。 設定変更可能な項目はありません。

BinaryHtmlParser

HTML用Parser。 TikaのHtmlParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParserを指定します。 設定変更可能な項目はありません。

BinaryOfficeParser

OfficeDocument(2003以前の形式)用Parser。 TikaのOfficeParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParserを指定します。 設定変更可能な項目はありません。

BinaryOOXMLParser

OfficeDocument(OOXML形式)用Parser。 TikaのOOXMLParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParserを指定します。 設定変更可能な項目はありません。

BinaryPDFParser

PDF用Parser。 TikaのPDFParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParserを指定します。 設定変更可能な項目はありません。

BinaryTextParser

PlainText用Parser。 TikaのTXTParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParserを指定します。 設定変更可能な項目はありません。

BinaryXMLParser

XML用Parser。 TikaのXMLParserを利用して解析します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParserを指定します。 設定変更可能な項目はありません。

BinaryNameTypeParser

全てのバイナリファイルを対象に、nameとtypeを返します。

classにorg.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParserを指定します。 設定変更可能な項目はありません。

LuceneFulltextSearchServiceの設定

Luceneを利用した全文検索の項目を設定します。

設定項目
項目 説明

indexWriterSetting

IndexWriterSetting、省略可能

IndexWriterの設定です。

directory

String

Indexファイルを保存するルートディレクトリを指定。 ルートディレクトリ配下にテナント、Entity単位にIndexファイルが作成されます。

luceneFSDirectory

org.apache.lucene.store.SimpleFSDirectoryorg.apache.lucene.store.MMapDirectoryorg.apache.lucene.store.NIOFSDirectory

ファイルシステムにINDEXファイルを保存するLucene Directoryの実装クラス。
LuceneのドキュメントによりWindowsの環境で NIOFSDirectory の利用は推薦しません。
※ 未設定の場合、Luceneが決定するデフォルトのFSDirectoryが利用されます。

luceneFSDirectoryMaxChunkSizeMB

int

org.apache.lucene.store.MMapDirectory クラスが利用するメモリマッピング用maxChunkSizeです。
未設定の場合、Luceneが決定するデフォルト値が利用されます。
org.apache.lucene.store.MMapDirectory 以外が選択されている場合、この設定値は無視されます。

analyzerSetting

AnalyzerSetting、省略可能

analyzerを初期化する設定クラスです。設定が省略された場合はJapaneseAnalyzerSettingが適用されます。

defaultOperator

Operator

演算子。設定可能な演算子は AND または OR です。

searcherAutoRefreshTimeMinutes

int

iPLAssが保持しているLuceneのIndexSearcher( ≒ IndexReader)が自動的に更新される時間間隔(分)です。
デフォルト値が「-1」となっています、「0」以下の値を設定している場合、自動更新処理は実行されません。

IndexWriterSetting

classはorg.iplass.mtp.impl.fulltextsearch.lucene.IndexWriterSettingを指定します。

設定項目
項目 説明

ramBufferSizeMB

double

Index作成時のメモリのキャッシュサイズ。デフォルト値は64.0です。

commitLimit

int

Index作成時のコミット単位。未指定の場合は、全件一括でコミットします。

mergePolicy

org.apache.lucene.index.MergePolicy

org.apache.lucene.index.MergePolicyのインスタンスを指定します。

infoStream

org.apache.lucene.util.InfoStream

org.apache.lucene.util.InfoStreamのインスタンスを指定します。 DEBUGログに出力する org.iplass.mtp.impl.fulltextsearch.lucene.LoggingInfoStream を提供していますので、利用することも可能です。

AnalyzerSetting

analyzerを初期化する設定クラスです。

classはorg.iplass.mtp.impl.fulltextsearch.lucene.AnalyzerSettingの実装クラスを指定します。

標準で以下のAnalyzerSettingを提供します。

SimpleAnalyzerSetting

Analyzerクラス名を指定可能なシンプルなAnalyzerSettingです。 org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting を指定します。

設定項目
項目 説明

className

String

org.apache.lucene.analysis.Analyzerの実装クラス名を指定。

JapaneseAnalyzerSetting

JapaneseAnalyzerを初期化するAnalyzerSettingです。 org.iplass.mtp.impl.fulltextsearch.lucene.JapaneseAnalyzerSetting を指定します。

設定項目
項目 説明

className

String

org.apache.lucene.analysis.Analyzerの実装クラス名を指定。 デフォルト値は org.apache.lucene.analysis.ja.JapaneseAnalyzer です。

mode

org.apache.lucene.analysis.ja.JapaneseTokenizer.Mode

トークナイゼーションモード。JapaneseTokenizer.Modeのenum値を指定します。デフォルト値は SEARCH です。

userDictionary

String

ユーザー定義辞書。クラスパス上に配置する必要があります。
未設定の場合、ユーザー定義辞書を利用しないと同じようになります。

stopwords

String

ストップワード定義ファイル。クラスパス上に配置する必要があります。
未設定の場合、lucene-analyzers-kuromoji-XXX.jar 内の定義ファイルが適用されます。

stoptags

String

ストップタグ定義ファイル。クラスパス上に配置する必要があります。
未設定の場合、lucene-analyzers-kuromoji-XXX.jar 内の定義ファイルが適用されます。

PerEntityAnalyzerSetting

Entity定義単位に異なったAnalyzerを利用するためのAnalyzerSettingです。 org.iplass.mtp.impl.fulltextsearch.lucene.PerEntityAnalyzerSetting を指定します。

設定項目
項目 説明

settingsPerEntity

AnalyzerSetting、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerSettingのインスタンスを設定します。

defaultSetting

AnalyzerSetting

デフォルトで適用されるAnalyzerを指定。settingsPerEntityで指定されていないEntity定義に適用されます。

ElasticsearchFulltextSearchServiceの設定

Elasticsearchを利用した全文検索の項目を設定します。

設定項目
項目 説明

restClientFactory

RestClientFactory

RestClientFactoryの設定です。

analysisFactory

AnalysisFactory

AnalysisFactoryの設定です。

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerPropertyの設定です。

analyzerPropertyPerEntity

AnalyzerProperty、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerPropertyのインスタンスを設定します。

defaultOperator

Operator

演算子。設定可能な演算子は AND または OR です。

RestClientFactory

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.RestClientFactoryの実装クラスを指定します。

標準で以下のRestClientFactoryを提供します。

DefaultRestClientFactory

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.DefaultRestClientFactoryを指定します。

設定項目
項目 説明

elasticsearchUrl

String、複数指定可

ElasticsearchサーバのURL

headers

String、Map形式

リクエスト時に設定できるHeader。Map形式で指定可能です。

connectionTimeout

int

http通信確立時のConnectionTimeout値(ミリ秒)。デフォルト値は-1です。

soTimeout

int

http通信確立時のSoTimeout値(ミリ秒)。デフォルト値は-1です。

proxyHost

String

http通信する際のproxyHost。

proxyPort

int

http通信する際のproxyPort。

userName

String

BASIC認証で利用するユーザー名

password

String

BASIC認証で利用するパスワード

AnalysisFactory

カスタムでAnalyzer等を定義したい場合に利用するクラスです。

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalysisFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

DefaultAnalysisFactory

classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.DefaultAnalysisFactoryを指定します。

設定項目
項目 説明

analyzer

AnalyzerFactory、Map形式

keyとして定義名を指定し、valueとしてAnalyzerFactoryのインスタンスを設定します。

charFilter

CharFilterFactory、Map形式

keyとして定義名を指定し、valueとしてCharFilterFactoryのインスタンスを設定します。

filter

TokenFilterFactory、Map形式

keyとして定義名を指定し、valueとしてTokenFilterFactoryのインスタンスを設定します。

tokenizer

TokenizerFactory、Map形式

keyとして定義名を指定し、valueとしてTokenizerFactoryのインスタンスを設定します。

AnalyzerFactory

カスタムでAnalyzerを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalyzerFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

CustomAnalyzerFactory

charFilter、tokenizer、filterを組み合わせてAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.CustomAnalyzerFactoryを指定します。

設定項目
項目 説明

charFilter

String、複数指定可

charFilterの定義名

filter

String、複数指定可

filterの定義名

tokenizer

String、必須

tokenizerの定義名

KuromojiAnalyzerFactory

カスタマイズされたKuromojiAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.KuromojiAnalyzerFactoryを指定します。

設定項目
項目 説明

mode

co.elastic.clients.elasticsearch._types.analysis.KuromojiTokenizationMode

tokenizationモードの設定

userDictionary

String

ユーザー辞書

CharFilterFactory

カスタムでCharFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalyzerFactoryの実装クラスを指定します。

TokenFilterFactory

カスタムでTokenFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.filter.TokenFilterFactoryの実装クラスを指定します。

TokenizerFactory

カスタムでTokenizerを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.tokenizer.TokenizerFactoryの実装クラスを指定します。

AnalyzerProperty

Analyzerを指定する際に利用します。 classはorg.iplass.mtp.impl.fulltextsearch.elasticsearch.mappings.AnalyzerPropertyを指定します。

設定項目
項目 説明

analyzer

String

デフォルトで利用するAnalyzer名

searchAnalyzer

String

検索で利用するAnalyzer名

searchQuoteAnalyzer

String

フレーズを利用した検索で利用するAnalyzer名

OpenSearchFulltextSearchServiceの設定

OpenSearchを利用した全文検索の項目を設定します。

設定項目
項目 説明

restClientFactory

RestClientFactory

RestClientFactoryの設定です。

analysisFactory

AnalysisFactory

AnalysisFactoryの設定です。

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerPropertyの設定です。

analyzerPropertyPerEntity

AnalyzerProperty、Map形式

keyとしてEntity定義名を指定し、valueとしてAnalyzerPropertyのインスタンスを設定します。

defaultOperator

Operator

演算子。設定可能な演算子は AND または OR です。

RestClientFactory

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.RestClientFactoryの実装クラスを指定します。

標準で以下のRestClientFactoryを提供します。

DefaultRestClientFactory

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.DefaultRestClientFactoryを指定します。

設定項目
項目 説明

openSearchUrl

String、複数指定可

OpenSearchサーバのURL

headers

String、Map形式

リクエスト時に設定できるHeader。Map形式で指定可能です。

connectionTimeout

int

http通信確立時のConnectionTimeout値(ミリ秒)。デフォルト値は-1です。

soTimeout

int

http通信確立時のSoTimeout値(ミリ秒)。デフォルト値は-1です。

proxyHost

String

http通信する際のproxyHost。

proxyPort

int

http通信する際のproxyPort。

userName

String

BASIC認証で利用するユーザー名

password

String

BASIC認証で利用するパスワード

httpRequestInterceptorFactory

HttpRequestInterceptorFactory

HttpRequestInterceptorFactoryの設定です。userNameとpasswordの値が設定されていない場合に適用されます。

HttpRequestInterceptorFactory

org.apache.http.HttpRequestInterceptor を生成するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.HttpRequestInterceptorの実装クラスを指定します。

標準で以下のHttpRequestInterceptorFactoryを提供します。

AWSRequestSigningApacheInterceptorFactory

com.amazonaws.http.AWSRequestSigningApacheInterceptor を生成するFactoryクラスです。BASIC認証ではなく、IAM認証情報を使用してリクエストを署名したい場合に利用します。

AWSRequestSigningApacheInterceptorで利用するAWSCredentialsProviderについて、AWSSettingのaccessKeyIdとsecretKeyが設定されている場合はAWSStaticCredentialsProviderが適用され、未設定の場合はDefaultAWSCredentialsProviderChainが適用されます。

classはorg.iplass.mtp.impl.aws.AWSRequestSigningApacheInterceptorFactoryを指定します。

設定項目
項目 説明

serviceName

String

サービス名

region

String

リージョン名

AnalysisFactory

カスタムでAnalyzer等を定義したい場合に利用するクラスです。

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalysisFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

DefaultAnalysisFactory

classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.DefaultAnalysisFactoryを指定します。

設定項目
項目 説明

analyzer

AnalyzerFactory、Map形式

keyとして定義名を指定し、valueとしてAnalyzerFactoryのインスタンスを設定します。

charFilter

CharFilterFactory、Map形式

keyとして定義名を指定し、valueとしてCharFilterFactoryのインスタンスを設定します。

filter

TokenFilterFactory、Map形式

keyとして定義名を指定し、valueとしてTokenFilterFactoryのインスタンスを設定します。

tokenizer

TokenizerFactory、Map形式

keyとして定義名を指定し、valueとしてTokenizerFactoryのインスタンスを設定します。

AnalyzerFactory

カスタムでAnalyzerを定義したい場合に利用するクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalyzerFactoryの実装クラスを指定します。

標準で以下のAnalysisFactoryを提供します。

CustomAnalyzerFactory

charFilter、tokenizer、filterを組み合わせてAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.CustomAnalyzerFactoryを指定します。

設定項目
項目 説明

charFilter

String、複数指定可

charFilterの定義名

filter

String、複数指定可

filterの定義名

tokenizer

String、必須

tokenizerの定義名

KuromojiAnalyzerFactory

カスタマイズされたKuromojiAnalyzerを定義することができます。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactoryを指定します。

設定項目
項目 説明

mode

co.elastic.clients.opensearch._types.analysis.KuromojiTokenizationMode

tokenizationモードの設定

userDictionary

String

ユーザー辞書

CharFilterFactory

カスタムでCharFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalyzerFactoryの実装クラスを指定します。

TokenFilterFactory

カスタムでTokenFilterを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.filter.TokenFilterFactoryの実装クラスを指定します。

TokenizerFactory

カスタムでTokenizerを定義したい場合に利用するFactoryクラスです。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.tokenizer.TokenizerFactoryの実装クラスを指定します。

AnalyzerProperty

Analyzerを指定する際に利用します。 classはorg.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerPropertyを指定します。

設定項目
項目 説明

analyzer

String

デフォルトで利用するAnalyzer名

searchAnalyzer

String

検索で利用するAnalyzer名

searchQuoteAnalyzer

String

フレーズを利用した検索で利用するAnalyzer名

FulltextSearchSolrServiceの設定

FulltextSearchSolrServiceは将来削除される予定です。 ElasticsearchFulltextSearchService もしくは OpenSearchFulltextSearchService を利用することを推奨します。

Solrを利用した全文検索の項目を設定します。

設定項目
項目 説明

solrUrl

String、複数指定可

用意したsolrサーバのURL。

solrMasterUrl

String

レプリケーション機能利用時のマスターサーバのURL。

highlightPreTag

String

ハイライト用の開始タグ。

highlightPostTag

String

ハイライト用の終了タグ。

設定例(LuceneFulltextSearchService利用の場合)
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <class>org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService</class>

    <property name="useFulltextSearch" value="true" />
    <property name="maxRows" value="1000" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <property name="directory" value="/lucene" />

    <property name="indexWriterSetting">
        <property name="ramBufferSizeMB" value="64.0"/>
        <property name="commitLimit" value="1000"/>
        <property name="infoStream" class="org.iplass.mtp.impl.fulltextsearch.lucene.LoggingInfoStream"/>
    </property>
    <property name="redundantTimeMinutes" value="10"/>

    <!--
        some.SampleEntity、some.AnotherSampleEntityの場合CJKAnalyzerを利用し、
        それ以外の場合はJapaneseAnalyzerを利用する設定例
    -->
    <property name="analyzerSetting" class="org.iplass.mtp.impl.fulltextsearch.lucene.PerEntityAnalyzerSetting">
        <property name="defaultSetting" class="org.iplass.mtp.impl.fulltextsearch.lucene.JapaneseAnalyzerSetting">
            <property name="mode" value="SEARCH" />
            <property name="userDictionary" value="/lucene/userdict.txt" />
            <property name="stopwords" value="/lucene/stopwords.txt" />
            <property name="stoptags" value="/lucene/stoptags.txt" />
        </property>
        <property name="settingsPerEntity">
            <property name="some.SampleEntity" class="org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting">
                <property name="className" value="org.apache.lucene.analysis.cjk.CJKAnalyzer"/>
            </property>
            <property name="some.AnotherSampleEntity" class="org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting">
                <property name="className" value="org.apache.lucene.analysis.cjk.CJKAnalyzer"/>
            </property>
        </property>
    </property>

    <property name="defaultOperator" value="AND" />
    <property name="indexWriterCommitLimit" value="-1"/>

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser" />
    <property name="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="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
設定例(OpenSearchFulltextSearchService利用の場合)
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <class>org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService</class>

    <property name="useFulltextSearch" value="true" />
    <property name="maxRows" value="1000" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <property name="restClientFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.DefaultRestClientFactory" >
        <property name="openSearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
        <property name="httpRequestInterceptorFactory" class="org.iplass.mtp.impl.aws.AWSRequestSigningApacheInterceptorFactory" >
            <property name="serviceName" value="es"/>
            <property name="region" value="ap-northeast-1"/>
        </property>
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>

    <!--
    testEntityの場合、my_kuromojiを利用し、それ以外の場合はkuromojiを利用する設定例
    -->
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>

    <property name="defaultOperator" value="AND" />

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
設定例
<!--
    ■全文検索で利用するService

    useFulltextSearch:              全文検索を利用する場合は、trueへ変更してください。
    maxRows:                        全文検索の結果件数の上限を設定してください。
    throwExceptionWhenOverLimit:    maxRows以上の件数がヒットした場合の挙動を切り替えます。
                                    true  -> 件数以上取得できたことのメッセージを表示し、検索結果は出さない。
                                    false -> 件数以上取得できたことのメッセージを表示し、検索結果も出す。
    indexWriterRAMBufferSizeMB: Index作成時のメモリのキャッシュサイズを設定します。
    redundantTimeMinutes:           「前回Index更新日時-redundantTimeMinutes」より後のデータに対してIndexの処理を行います。

    □ solr利用の場合
    solrUrl:
        用意したsolrサーバのURLを指定してください。

    □ lunece利用の場合
    directory:
        Index情報(検索対象値)の保存先を指定してください。
    analyzer:
        利用するanalyzerを指定してください。

    □ Elasticsearch利用の場合
    elasticsearchUrl:
        用意したElasticsearchサーバのURLを指定してください。
    defaultAnalyzerProperty:
        利用するanalyzerを指定してください。

    □ OpenSearch利用の場合
    openSearchUrl:
        用意したOpenSearchサーバのURLを指定してください。
    defaultAnalyzerProperty:
        利用するanalyzerを指定してください。


    ■use to fulltext search service

    useFulltextSearch:              If use fulltext search, change to true.
    maxRows:                        Setting max rows of fulltext search result.
    throwExceptionWhenOverLimit:    If maxRows or more of the search result is hit, set one of the operations.
                                    true  -> Display a message that was able to get maxRows or more, and not display search result.
                                    false -> Display a message that was able to get maxRows or more, and display search result.
    indexWriterRAMBufferSizeMB: Setting the memory cache size when creating a index.
    redundantTimeMinutes:           do the processing of the Index for the data after the "previous Index update date -redundantTimeMinutes".

    □ use to solr
    solrUrl:
        Set url of solr server.

    □ use to lunece
    directory:
        Set save directory of the index information.
    analyzer:
        Set the analyzer to use

    □ use to Elasticsearch
    elasticsearchUrl:
        Set url of Elasticsearch server.
    defaultAnalyzerProperty:
        Set the analyzer to use

    □ use to OpenSearch
    openSearchUrl:
        Set url of OpenSearch server.
    defaultAnalyzerProperty:
        Set the analyzer to use
-->
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <property name="useFulltextSearch" value="false" />
    <property name="maxRows" value="1000" />
    <property name="highlightPreTag" value="&lt;b style=&quot;background:aquamarine&quot;&gt;" />
    <property name="highlightPostTag" value="&lt;/b&gt;" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <!-- BinaryReferenceのParse可能な最大文字数 -->
    <property name="binaryParseLimitLength" value="100000"/>

    <!--
        BinaryReference用Parser設定。
        org.iplass.mtp.impl.fulltextsearch.parser.BinaryReferenceParser
        を実装したParserを設定可能。
        BinaryReferenceのタイプに対して対応されているParserを上から順にチェックする。
     -->

    <!-- PDF用Parser。TikaのPDFParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <!-- OfficeDocument(OOXML形式)用Parser。TikaのOOXMLParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <!-- OfficeDocument(2003以前の形式)用Parser。TikaのOfficeParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser" />
    <!-- HTML用Parser。TikaのHtmlParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <!-- PlainText用Parser。TikaのTXTParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <!-- XML用Parser。TikaのXMLParserを利用して解析する -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />

    <!-- TikaのAutoDetectParserを利用して全てのタイプを対象に解析する。
        ただし解析に必要となる依存ライブラリが存在しない場合はスキップされる -->
    <!--
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryAutoDetectParser" />
    -->

    <!-- 全てのバイナリファイルを対象に、nameとtypeのみ返す -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

    <!-- solr利用 -->
    <!--
    <class>org.iplass.mtp.impl.fulltextsearch.FulltextSearchSolrService</class>
    <property name="solrUrl" value="http://ADDRESS:PORT/solr/coreName/" />
     -->

    <!-- lucene利用 -->
    <class>org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService</class>
    <property name="directory" value="D:\tmp\lucene" />
    <property name="defaultOperator" value="AND" />
    <property name="analyzer" value="org.apache.lucene.analysis.ja.JapaneseAnalyzer" />
    <!-- JapaneseAnalyzerを初期化する設定。
    <property name="analyzerSetting" class="org.iplass.mtp.impl.fulltextsearch.JapaneseAnalyzerSetting">
        <property name="userDictionary" value="/lucene/userdict.txt" />
        <property name="mode" value="SEARCH" />
        <property name="stopwords" value="/lucene/stopwords.txt" />
        <property name="stoptags" value="/lucene/stoptags.txt" />
    </property>
    -->
    <property name="indexWriterRAMBufferSizeMB" value="64.0"/>
    <property name="redundantTimeMinutes" value="10"/>
    <property name="indexWriterCommitLimit" value="-1"/>

    <!-- Elasticsearch利用 -->
    <!--
    <class>org.iplass.mtp.impl.fulltextsearch.elasticsearch.ElasticsearchFulltextSearchService</class>
    <property name="useFulltextSearch" value="true" />
    <property name="restClientFactory"  class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.DefaultRestClientFactory">
        <property name="elasticsearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>
    -->

    <!-- OpenSearch利用 -->
    <!--
    <class>org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService</class>
    <property name="restClientFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.DefaultRestClientFactory" >
        <property name="openSearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
        <property name="httpRequestInterceptorFactory" class="org.iplass.mtp.impl.aws.AWSRequestSigningApacheInterceptorFactory" >
            <property name="serviceName" value="es"/>
            <property name="region" value="ap-northeast-1"/>
        </property>
    </property>

    <property name="analysisFactory" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>
    -->
</service>

3.28. GemConfigService

汎用画面全般の動作の設定を行うサービスです。

インタフェース名

org.iplass.gem.GemConfigService

実装クラス名

コミュニティエディション用設定
org.iplass.gem.GemConfigService
エンタープライズエディション用設定
org.iplass.gem.EnterpriseGemConfigService

GemConfigServiceの設定

コミュニティエディション用の動作を設定します。

設定項目
項目 説明

loadWithReference

boolean

リクエストのパラメータを基に参照データをロードする際、参照プロパティも合わせてロードするか。デフォルト値はfalseです。

formatNumberWithComma

boolean

詳細画面で数値プロパティの値をカンマでフォーマットするか。デフォルト値はtrueです。

csvDownloadMaxCount

int

CSVダウンロード件数の上限値。デフォルト値は65535です。

uploadableCsvDownloadLoadSize

int

Upload形式のCSVダウンロード時に多重度複数の参照を含むEntityの一括ロード件数。デフォルト値は1です。

csvDownloadCharacterCode

String、複数指定可

CSVダウンロードの文字コード。デフォルト値は UTF-8 です。

csvDownloadQuoteAll

boolean

CSVダウンロードで常時ダブルクォートの出力を行うか。デフォルト値はtrueです。

csvDownloadReferenceVersion

boolean

CSVダウンロードで参照項目のバージョンを出力するか。デフォルト値はtrueです。

uploadableCsvDownloadWithMappedByReference

boolean

Upload形式のCSVダウンロード時に被参照プロパティも出力するか。デフォルト値はfalseです。

csvUploadCommitCount

int

CSVアップロードのコミット単位。デフォルト値は1000です。

csvUploadAsync

boolean

CSVアップロードを非同期で行うか。デフォルト値はfalseです。
非同期で行う場合は、 RdbQueueService[useQueue]プロパティをtrueに設定してください。

csvUploadStatusPollingInterval

int

CSVアップロードのステータスポーリングのインターバル。デフォルト値は10000(10秒)です。

searchResultCacheLimit

int

CSVダウンロード時User名取得のための検索内部キャッシュサイズ。デフォルト値は300です。

confirmEditSave

boolean

編集画面、一括更新画面で保存時に確認ダイアログを表示するか。デフォルト値はfalseです。 BulkLayoutを利用しない一括更新の場合は無条件で確認ダイアログが表示されます。

confirmEditCancel

boolean

編集画面でキャンセル時に確認ダイアログを表示するか。デフォルト値はtrueです。

topViewEditCancelBackToTop

boolean

詳細画面から編集画面に遷移した際にキャンセル時にTopViewに戻るか。デフォルト値はfalse(詳細画面に戻る)です。

3.0.20までの互換設定です。今後は詳細画面に遷移する動作に統一する予定です。

showSeachCondResetButton

boolean

検索画面でリセットボタンを表示するか。デフォルト値はtrueです。

searchResultDispRowCount

int

検索画面で表示する検索結果の件数。デフォルト値は10です。 個別のEntityView定義の検索結果の設定で上書きすることが可能です。

searchInterval

int

検索処理のインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

csvDownloadInterval

int

CSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

csvDownloadWithFooter

boolean

汎用検索のCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

csvDownloadFooter

String

汎用検索のCSVダウンロードのフッター文言。

useDisplayLabelItemInSearch

boolean

検索処理で表示ラベルとして扱うプロパティを検索条件に利用するか。trueの場合、ReferencePropertyEditorで「表示ラベルとして扱うプロパティ」として設定された項目を通常検索のテキスト入力による条件指定時、または詳細検索の条件項目として設定します。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

useDisplayLabelItemInCsvDownload

boolean

CSVダウンロード処理で表示ラベルとして扱うプロパティを出力するか。trueの場合、ReferencePropertyEditorで「表示ラベルとして扱うプロパティ」として設定された項目をCSV項目として出力します。

後方互換性のための設定フラグです。将来のバージョンでは本設定項目は削除されます。

showPulldownPleaseSelectLabel

boolean

プルダウンの未選択時のラベル「選択してください」を表示するか。デフォルト値はtrueです。

datePickerDefaultOption

String

Datepickerのデフォルトオプション。デフォルト値は以下です。
changeMonth:true,changeYear:true,yearRange:"c-10:c+10"

recycleBinMaxCount

int

ゴミ箱の表示件数上限値。未指定の場合のデフォルト値は100です。-1を指定した場合は無制限となります。

deleteAllCommandBatchSize

int

一括削除のコミットバッチサイズ件数。未指定の場合のデフォルト値は100です。一括削除コミットタイプがDIVISIONの場合適用されます。

bulkUpdateAllCommandBatchSize

int

一括更新のコミットバッチサイズ件数。未指定の場合のデフォルト値は100です。一括更新コミットタイプがDIVISIONの場合適用されます。

binaryDownloadLoggingTargetProperty

BinaryDownloadLoggingTargetProperty、複数指定可

バイナリダウンロード用ログの出力対象のプロパティ。

binaryUploadAcceptMimeTypesPattern

String

エンティティのバイナリプロパティでアップロード可能なファイルのMIME Typeパターンを指定します。設定値は正規表現パターンを指定します。
設定が無い場合はアップロード時のファイルの MIME Type の確認は実施しません。
設定内容は全エンティティのバイナリプロパティに反映されます。

設定例

  • CSVファイルのアップロード許可 ^(text/csv)$

  • PDFと画像のアップロード許可 ^(application/pdf|image/.*)$

検証対象となる MIME Type の決定方法については、WebFrontendService uploadFileTypeDetector, FileTypeDetector を参照してください。

imageColors

ImageColorSetting、複数指定可

検索画面や詳細画面、メニュー等に設定するイメージカラーの設定。

skins

Skin、複数指定可

スキン。

themes

Theme、複数指定可

テーマ。

entityViewHelper

EntityViewHelper

検索画面や詳細画面を表示する際のヘルパークラス。

shallowCopyLobData

boolean

エンティティをコピーする際にLobデータをシャッローコピーするか。デフォルト値はfalseです。

autoGenerateShowSystemProperty

boolean

汎用画面の自動生成処理でシステム項目を表示するか。 autoGenerateSystemProperties で指定したプロパティを詳細・編集画面で「システム情報」Secitonとして読み取り専用項目で出力します。 新規作成画面では表示しません。デフォルト値は false です。

autoGenerateSystemProperties

String

汎用画面の自動生成処理の「システム情報」に表示するプロパティ。カンマ区切り。以下のプロパティのみ対象。
oid , version , createBy , createDate , updateBy , updateDate , lockedBy

autoGenerateSystemPropertyDisplayPosition

String

汎用画面の自動生成処理の「システム情報」表示位置。 TOPBOTTOM 。デフォルトは TOP です。

autoGenerateExcludeOidWhenCustomOid

boolean

汎用画面の自動生成処理の「システム情報」で、EntityのOIDプロパティをカスタマイズしている場合にOIDを表示しないか。デフォルト値は true です。

autoGenerateUseUserPropertyEditor

boolean

createByupdateBylockedBy にUserPropertyEditorを利用するか。 デフォルト値は true です。

permitRolesToGem

String、複数指定可

GemAuthでのGem許可ロール。 デフォルト値は GemUserAppAdmin です。

permitRolesToNoView

String、複数指定可

GemAuthでのEntityViewが未定義の場合の許可ロール。 デフォルト値は AppAdmin です。

EnterpriseGemConfigServiceの設定

エンタープライズエディション用の動作を設定します。 コミュニティエディション用の設定と併せて設定してください。

設定項目
項目 説明

savedListCsvDownloadInterval

int

SavedList一覧のCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

entitylistingSearchInterval

int

EntityListingの検索処理のインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

entitylistingCsvDownloadInterval

int

EntityListingのCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

aggregationCsvDownloadInterval

int

AggregationのCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

aggregationRawdataCsvDownloadInterval

int

AggregationのローデータCSVダウンロードのインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

showBothAggregationCsvDownloadButton

boolean

AggregationのCSVダウンロードを集計表の上下に表示するか。デフォルト値はfalseです。

dividingTableSideAtCrosstabCsvDownload

boolean

Aggregation(Crosstab)のCSVダウンロードで表側を分割して出力するか。デフォルト値はfalseです。

dividingTableHeadAtCrosstabCsvDownload

boolean

Aggregation(Crosstab)のCSVダウンロードで表頭を分割して出力するか。デフォルト値はfalseです。

outputItemLabelCrosstabCsvDownload

boolean

Aggregation(Crosstab)のCSVダウンロードで表頭/表側のアイテム名を表示するか。デフォルト値はfalseです。

entitylistingSearchLimit

int

EntityListingの検索Limit。デフォルト値は10です。

entitylistingCsvDownloadWithFooter

boolean

EntityListingのCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

entitylistingCsvDownloadFooter

String

EntityListingのCSVダウンロードのフッター文言。

aggregationCsvDownloadWithFooter

boolean

集計のCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

aggregationCsvDownloadFooter

String

集計のCSVダウンロードのフッター文言。

aggregationRawdataCsvDownloadWithFooter

boolean

集計のローデータCSVダウンロードでフッターを出力するか。デフォルト値はfalseです。

aggregationRawdataCsvDownloadFooter

String

集計のローデータのCSVダウンロードのフッター文言。

confirmUserTaskSubmit

boolean

ワークフローのタスク編集画面でタスク確認ダイアログを表示するか。デフォルト値はfalseです。

confirmUserTaskCancel

boolean

ワークフローのタスク編集画面でキャンセル確認ダイアログを表示するか。デフォルト値はfalseです。

BinaryDownloadLoggingTargetProperty

classはorg.iplass.gem.BinaryDownloadLoggingTargetPropertyを指定します。

バイナリダウンロード用ログの出力対象のプロパティです。以下の項目を設定可能です。

項目 説明

entityName

String

エンティティ名。

propertyName

String

プロパティ名。

ImageColorSetting

classはorg.iplass.gem.ImageColorSettingを指定します。

検索画面や詳細画面、メニュー等に設定するイメージカラーと、対応するCSSを設定します。 イメージカラーを追加する場合、対応するCSSを作成してください。

項目 説明

colorName

String

イメージカラー名。

cssSettings

CssSetting、複数指定可

スキンと対応するCSSファイルのパスの設定。

CssSetting

classはorg.iplass.gem.CssSettingを指定します。

スキンと対応するCSSファイルのパスを設定します。

項目 説明

skinName

String

スキン名。

cssPath

String

CSSファイルのパス。

Skin

classはorg.iplass.mtp.tenant.Skinを指定します。 以下の項目を設定可能です。

項目 説明

displayName

String

表示名。

skinName

String

スキン名。

pageSkinName

String

ページ全体用のスキン名。

menuSkinName

String

メニュー用のスキン名。

Theme

classはorg.iplass.mtp.tenant.Themeを指定します。 以下の項目を設定可能です。

項目 説明

displayName

String

表示名。

themeName

String

テーマ名。

EntityViewHelper

検索画面や詳細画面を表示する際のヘルパークラスを設定します。

classはorg.iplass.gem.EntityViewHelperの実装クラスを指定します。

標準で以下のEntityViewHelperを提供しています。

EntityViewHelperImpl

コミュニティエディション向けのEntityViewHeplerです。

classにorg.iplass.gem.EntityViewHelperImplを指定します。 設定可能な項目はありません。

EnterpriseEntityViewHelperImpl

エンタープライズエディション向けのEntityViewHelperです。

classにorg.iplass.gem.EnterpriseEntityViewHelperImplを指定します。 設定可能な項目はありません。

設定例
<service>
    <interface>org.iplass.gem.GemConfigService</interface>
    <class>org.iplass.gem.EnterpriseGemConfigService</class>

    <!-- CSVダウンロード件数上限値 -->
    <property name="csvDownloadMaxCount" value="65535" />

    <!-- CSVダウンロード文字コード -->
    <!--
    gem-service-config.xmlにUTF8が設定されています。
    追加したい場合は以下を参考にvalueに任意の文字コードを指定し有効にして下さい。

    <property name="csvDownloadCharacterCode" value="windows-31j" additional="true" />
    <property name="csvDownloadCharacterCode" value="EUC-JP" additional="true" />
     -->
    <property name="csvDownloadCharacterCode" value="UTF-8"/>

    <!-- CSVダウンロード常時ダブルクォート出力
        標準ではtrueに設定されています。ダブルクォートを出力したくない場合はfalseにしてください。
        (," 改行が含まれる場合は設定に関係なくダブルクォートを出力します)
     -->
    <property name="csvDownloadQuoteAll" value="true"/>

    <!-- CSVダウンロード参照項目バージョン出力 -->
    <property name="csvDownloadReferenceVersion" value="true"/>

    <!-- CSVアップロードコミット単位 -->
    <property name="csvUploadCommitCount" value="1000"/>

    <!-- CSVダウンロード時User名取得のための検索内部キャッシュサイズ -->
    <property name="searchResultCacheLimit" value="300" />

    <!-- 編集画面で保存時に確認ダイアログを表示するか
        デフォルトで非表示するに設定されています。表示にしたい場合はtrueを設定してください。
    -->
    <property name="confirmEditSave" value="false"/>

    <!-- 編集画面でキャンセル時に確認ダイアログを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="confirmEditCancel" value="true"/>

    <!-- 編集画面でキャンセル時にTopViewに戻るか
         デフォルト戻らない(詳細画面に戻る)に設定されています。TopViewに戻りたい場合はtrueを設定してください。
     -->
    <property name="topViewEditCancelBackToTop" value="false"/>

    <!-- 検索画面でリセットボタンを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="showSeachCondResetButton" value="true"/>

    <!-- 検索処理のインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="searchInterval" value="60000"/>

    <!-- CSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="csvDownloadInterval" value="60000"/>

    <!-- EntityListingの検索処理のインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="entitylistingSearchInterval" value="60000"/>

    <!-- EntityListingのCSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="entitylistingCsvDownloadInterval" value="60000"/>

    <!-- AggregationのCSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="aggregationCsvDownloadInterval" value="60000"/>

    <!-- AggregationのローデータCSVダウンロードのインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="aggregationRawdataCsvDownloadInterval" value="60000"/>

    <!-- AggregationのCSVダウンロードを集計表の上下に表示するか -->
    <property name="showBothAggregationCsvDownloadButton" value="false"/>

    <!-- Aggregation(Crosstab)のCSVダウンロードで表側を分割して出力するか -->
    <property name="dividingTableSideAtCrosstabCsvDownload" value="false"/>

    <!-- Aggregation(Crosstab)のCSVダウンロードで表頭を分割して出力するか -->
    <property name="dividingTableHeadAtCrosstabCsvDownload" value="false"/>

    <!-- Aggregation(Crosstab)のCSVダウンロードで表頭/表側のアイテム名を表示するか -->
    <property name="outputItemLabelCrosstabCsvDownload" value="false"/>

    <!-- 汎用検索のCSVダウンロードでフッターを出力するか -->
    <property name="csvDownloadWithFooter" value="false"/>

    <!-- 汎用検索のCSVダウンロードのフッター文言 -->
    <property name="csvDownloadFooter" value=""/>

    <!-- 検索処理で表示ラベルとして扱うプロパティを検索条件に利用するか -->
    <property name="useDisplayLabelItemInSearch" value="true"/>

    <!-- CSVダウンロード処理で表示ラベルとして扱うプロパティを出力するか -->
    <property name="useDisplayLabelItemInCsvDownload" value="true"/>

    <!-- EntityListingの検索Limit -->
    <property name="entitylistingSearchLimit" value="10"/>

    <!-- EntityListingのCSVダウンロードでフッターを出力するか -->
    <property name="entitylistingCsvDownloadWithFooter" value="false"/>

    <!-- EntityListingのCSVダウンロードのフッター文言 -->
    <property name="entitylistingCsvDownloadFooter" value=""/>

    <!-- 集計のCSVダウンロードでフッターを出力するか -->
    <property name="aggregationCsvDownloadWithFooter" value="false"/>

    <!-- 集計のCSVダウンロードのフッター文言 -->
    <property name="aggregationCsvDownloadFooter" value=""/>

    <!-- 集計のローデータCSVダウンロードでフッターを出力するか -->
    <property name="aggregationRawdataCsvDownloadWithFooter" value="false"/>

    <!-- 集計のローデータのCSVダウンロードのフッター文言 -->
    <property name="aggregationRawdataCsvDownloadFooter" value=""/>

    <!-- ワークフローのタスク編集画面でタスク確認ダイアログを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="confirmUserTaskSubmit" value="false"/>

    <!-- ワークフローのタスク編集画面でキャンセル確認ダイアログを表示するか
         デフォルトで表示するに設定されています。非表示にしたい場合はfalseを設定してください。
    -->
    <property name="confirmUserTaskCancel" value="false"/>

    <!-- CSVアップロード非同期設定 -->
    <!-- true(非同期)を設定する場合は、 RdbQueueServiceのuseQueueプロパティをtrueに設定してください。 -->
    <property name="csvUploadAsync" value="false"/>

    <!-- CSVアップロードステータスポーリングのインターバル、指定ミリ秒 -->
    <property name="csvUploadStatusPollingInterval" value="10000"/>

    <!-- プルダウンの「選択してください」を表示するか -->
    <property name="showPulldownPleaseSelectLabel" value="true" />

    <property name="binaryDownloadLoggingTargetProperty">
        <property name="entityName" value="mtp.maintenance.Package" />
        <property name="propertyName" value="archive" />
    </property>
    <property name="binaryDownloadLoggingTargetProperty">
        <property name="entityName" value="mtp.listing.SavedList" />
        <property name="propertyName" value="listedData" />
    </property>

    <!-- バイナリファイルアップロード受け入れ可能な MIME Type パターン。正規表現を指定する。 -->
    <!-- 設定例
    <property name="binaryUploadAcceptMimeTypesPattern" value="^(image/.*|application/pdf|text/csv)$" />
    -->

    <!-- 汎用画面、メニュー用のイメージカラー設定 -->
    <property name="imageColors">
        <property name="colorName" value="blue" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/blue.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/blue.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/blue.css" />
        </property>
    </property>
    <property name="imageColors">
        <property name="colorName" value="green" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/green.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/green.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/green.css" />
        </property>
    </property>
    <property name="imageColors">
        <property name="colorName" value="red" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/red.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/red.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/red.css" />
        </property>
    </property>
    <property name="imageColors">
        <property name="colorName" value="yellow" />
        <property name="cssSettings">
            <property name="skinName" value="flat" />
            <property name="cssPath" value="/styles/gem/skin/flat/imagecolor/yellow.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="horizontal" />
            <property name="cssPath" value="/styles/gem/skin/horizontal/imagecolor/yellow.css" />
        </property>
        <property name="cssSettings">
            <property name="skinName" value="vertical" />
            <property name="cssPath" value="/styles/gem/skin/vertical/imagecolor/yellow.css" />
        </property>
    </property>

    <!-- スキン定義 -->
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="flat" />
        <property name="displayName" value="フラット" />
        <property name="pageSkinName" value="flat" />
        <property name="menuSkinName" value="sub-popup" />
    </property>
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="vertical" />
        <property name="displayName" value="垂直メニュー" />
        <property name="pageSkinName" value="vertical" />
        <property name="menuSkinName" value="sub-popup" />
    </property>
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="horizontal" />
        <property name="displayName" value="水平メニュー" />
        <property name="pageSkinName" value="horizontal" />
        <property name="menuSkinName" value="sub-popup" />
    </property>
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="horizontal_droplist" />
        <property name="displayName" value="水平メニュー(ドロップリストメニュー)" />
        <property name="pageSkinName" value="horizontal" />
        <property name="menuSkinName" value="sub-droplist" />
    </property>

    <!-- テーマ定義 -->
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="black" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="red" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="green" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="blue" />
        <property name="displayName" value="" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightred" />
        <property name="displayName" value="明赤" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightgreen" />
        <property name="displayName" value="明緑" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightblue" />
        <property name="displayName" value="明青" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="orange" />
        <property name="displayName" value="" />
    </property>
    <property name="entityViewHelper" class="org.iplass.gem.EnterpriseEntityViewHelperImpl" />
</service>

3.29. InfinispanService

Infinispanを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.infinispan.InfinispanService

実装クラス名

org.iplass.mtp.impl.infinispan.InfinispanService

InfinispanServiceの設定

InfinispanServiceを設定します。

設定項目
項目 説明

configurationFile

String

Infinispanの設定ファイル。

設定例
<service>
    <interface>org.iplass.mtp.impl.infinispan.InfinispanService</interface>
        <property name="configurationFile" value="infinispan.xml" />
</service>

3.30. InterceptorService

コマンド実行時に呼び出されるインターセプターを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.command.InterceptorService

実装クラス名

org.iplass.mtp.impl.command.InterceptorService

InterceptorServiceの設定

コマンドを実行する機能単位で呼び出すインターセプターを設定します。

設定項目
項目 説明

invoker

CommandInterceptor、複数指定可

CommandInvoker経由の明示的な呼び出し時のインターセプター。

web

CommandInterceptor、複数指定可

Actionのインターセプター。

webApi

CommandInterceptor、複数指定可

WebApiのインターセプター。

soap

CommandInterceptor、複数指定可

SOAP通信のインターセプター。

CommandInterceptor

classはorg.iplass.mtp.command.interceptor.CommandInterceptorの実装クラスを指定します。

標準で、以下のCommandInterceptorを提供します。

InitialInterceptor

classはorg.iplass.mtp.impl.webapi.interceptors.InitialInterceptorを指定します。

webApi、soapで利用可能です。

WebApiリクエストの初期処理として言語とプレビュー時刻を設定するインターセプターです。設定変更可能な項目はありません。

AuthInterceptor(WebApi)

classはorg.iplass.mtp.impl.webapi.interceptors.AuthInterceptorを指定します。

webApiで利用可能です。

カスタムヘッダーによる認証処理を行うインターセプターです。設定変更可能な項目はありません。

AuthInterceptor(SOAP)

classはorg.iplass.mtp.impl.webapi.soap.interceptors.AuthInterceptorを指定します。

soapで利用可能です。

カスタムヘッダーによる認証処理を行うインターセプターです。設定変更可能な項目はありません。

OAuthScopeInterceptor

classはorg.iplass.mtp.impl.webapi.interceptors.OAuthScopeInterceptorを指定します。

webApiで利用可能です。

OAuth2.0のscopeのチェックを行います。 設定変更可能な項目はありません。

LoggingInterceptor

classはorg.iplass.mtp.impl.command.interceptors.LoggingInterceptorを指定します。

invoker、web、soapで利用可能です。

コマンドの実行結果をログ出力するインターセプターです。設定変更可能な項目は有りません。

LoggingInterceptor(WebApi)

classはorg.iplass.mtp.impl.webapi.interceptors.LoggingInterceptorを指定します。

webApiで利用可能です。

WebApiの実行結果をログ出力するインターセプターです。以下の項目を設定可能です。

項目 説明

webapiTrace

boolean

WepApiのログを出力するか。デフォルト値はtrueです。

logParamName

String、複数指定可

ログ出力するパラメータ名。

logAttributeName

String、複数指定可

ログ出力するRequestContextのattribute名。

noStackTrace

String、複数指定可

スタックトレースを出力しない例外クラス。 複数指定する場合はプロパティを複数設定するか例外クラスを半角コロン(:)で区切って設定します。

warnLogThresholdOfSqlExecutionCount

int

警告ログを出力するSQL実行回数の閾値。
単一リクエスト中に閾値を越える回数のSQLが発行された場合、WARNレベルでログ出力されます。
デフォルト値は-1(すべてINFOレベルで出力)です。

warnLogThresholdOfExecutionTimeMillis

long

警告ログを出力する実行時間の閾値(ミリ秒)。
リクエスト処理時間が閾値を越えた場合、WARNレベルでログ出力されます。
デフォルト値は-1(すべてINFOレベルで出力)です。

TokenInterceptor

classはorg.iplass.mtp.impl.web.interceptors.TokenInterceptorを指定します。

webで利用可能です。

Actionのリクエスト時にトークンのチェックを行うインターセプターです。設定変更可能な項目はありません。

TokenInterceptor(WebApi)

classはorg.iplass.mtp.impl.web.interceptors.TokenInterceptorを指定します。

webApiで利用可能です。

WebApiのリクエスト時にトークンのチェックを行うインターセプターです。設定変更可能な項目はありません。

UnavailableInterceptor

classはorg.iplass.mtp.impl.webapi.interceptors.UnavailableInterceptorを指定します。

webApi、soapで利用可能です。

テナント単位でメンテナンスモードの切り替えを行うインターセプターです。設定変更可能な項目はありません。

TransactionInterceptor

classはorg.iplass.mtp.impl.command.interceptors.TransactionInterceptorを指定します。

invoker、web、webApi、soapで利用可能です。

トランザクションの処理を行うインターセプターです。

WebApiMetricsInterceptor

classはorg.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiMetricsInterceptorを指定します。

WebAPIのレイテンシ・SQLの発行回数をメトリクスとして記録するインターセプターです。Micrometerモジュールを適用した場合にデフォルトで追加されます。以下の項目を設定可能です。

項目 説明

provider

WebApiMetricsTagsProvider

org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiMetricsTagsProviderを実装するクラス。メトリクスに付与するタグをカスタマイズしたい場合に指定可能です。デフォルトでは、org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiMetricsTagsProviderが使用されます。

設定例
<service>
    <interface>org.iplass.mtp.impl.command.InterceptorService</interface>
    <class>org.iplass.mtp.impl.command.InterceptorService</class>

    <property name="invoker" class="org.iplass.mtp.impl.command.interceptors.LoggingInterceptor" />
    <property name="invoker" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />

    <property name="web" class="org.iplass.mtp.impl.command.interceptors.LoggingInterceptor" />
    <property name="web" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />
    <property name="web" class="org.iplass.mtp.impl.web.interceptors.TokenInterceptor" />

    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.InitialInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.AuthInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.UnavailableInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.OAuthScopeInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.LoggingInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />
    <property name="webApi" class="org.iplass.mtp.impl.webapi.interceptors.TokenInterceptor" />

    <property name="soap" class="org.iplass.mtp.impl.webapi.interceptors.InitialInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.webapi.soap.interceptors.AuthInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.webapi.interceptors.UnavailableInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.command.interceptors.LoggingInterceptor" />
    <property name="soap" class="org.iplass.mtp.impl.command.interceptors.TransactionInterceptor" />

</service>

3.31. IPAddressHistoryStoreService

過去にアクセスされたIPアドレスの保持を行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.auth.authenticate.ipaddress.IPAddressHistoryStoreService

実装クラス名

org.iplass.mtp.impl.auth.authenticate.ipaddress.UserEntityIPAddressHistoryStoreService

UserEntityIPAddressHistoryStoreServiceの設定

過去にアクセスされたIPアドレスのUserEntityへの保持について設定します。

設定項目
項目 説明

storePropertyName

String

IPアドレスの保持に利用するUserEntityのプロパティ名。デフォルト値は ipAddressHistory です。

設定例
<service>
    <interface>org.iplass.mtp.impl.auth.authenticate.ipaddress.IPAddressHistoryStoreService</interface>
    <class>org.iplass.mtp.impl.auth.authenticate.ipaddress.UserEntityIPAddressHistoryStoreService</class>
    <property name="storePropertyName" value="ipAddressHistory" />
</service>

3.32. I18nService

国際化の設定を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.i18n.I18nService

実装クラス名

org.iplass.mtp.impl.i18n.I18nService

I18nServiceの設定

I18nServiceを設定します。

設定項目
項目 説明

enableLanguages

EnableLanguages、複数指定可

利用可能言語の設定。

defaultLocaleFormat

LocaleFormat

標準のロケール書式の設定。

localeFormat

LocaleFormat、複数指定可

各ロケールの書式の設定。

languageFonts

LanguageFonts、複数指定可

各言語のフォントの設定。

genericFontFamilyList

String、複数指定可

総称フォントファミリーとして解釈する文字列リスト。languageFontsの各fontsに、本設定と一致する文字列が存在した場合、そのフォントは総称フォントファミリーとして解釈する。

EnableLanguages

classはorg.iplass.mtp.impl.i18n.EnableLanguagesを指定します。

設定可能言語です。以下の項目を設定可能です。

項目 説明

languageKey

String

言語キー。

languageName

String

言語名。

otherLanguageKey

String、複数指定可

その他の言語キー。

LocaleFormat

classはorg.iplass.mtp.impl.i18n.LocaleFormatを指定します。

ロケール書式です。以下の項目を設定可能です。

項目 説明

locale

String、複数指定可

ロケール。

serverDateFormat

String

サーバ上でのDate型形式。

serverTimeFormat

String

サーバ上でのTime型形式。

browserInputDateFormat

String

ブラウザ上でのDate型入力形式。

browserInputTimeSecFormat

String

ブラウザ上でのTime型入力形式(秒)。

browserInputTimeMinFormat

String

ブラウザ上でのTime型入力形式(分)。

browserInputTimeHourFormat

String

ブラウザ上でのTime型入力形式(時)。

outputDateFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式。

outputDateWeekdayFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(曜日付)。

excelDateFormat

String

ExcelでのDate型形式。

excelTimeFormat

String

ExcelでのTime型形式。

outputTimeSecFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(秒)。

outputTimeMinFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(分)。

outputTimeHourFormat

String

Entity検索結果、CSV出力結果などのDate型出力形式(時)。

lastNameIsFirst

boolean

苗字を先頭にするか。

LanguageFonts

classはorg.iplass.mtp.impl.i18n.LanguageFontsを指定します。

言語のフォントです。以下の項目を設定可能です。

項目 説明

language

String

言語。

fonts

String、複数指定可

フォント。

設定例
<service>
    <interface>org.iplass.mtp.impl.i18n.I18nService</interface>
    <class>org.iplass.mtp.impl.i18n.I18nService</class>

    <!-- 設定可能言語 -->
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="ja" />
        <property name="languageName" value="日本語" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="en" />
        <property name="otherLanguageKey" value="en-US" />
        <property name="languageName" value="English" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="zh-CN" />
        <property name="otherLanguageKey" value="zh" />
        <property name="otherLanguageKey" value="zh-SG" />
        <property name="languageName" value="简体中文" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="zh-TW" />
        <property name="otherLanguageKey" value="zh-HK" />
        <property name="languageName" value="繁體中文" />
    </property>
    <property name="enableLanguages" class="org.iplass.mtp.impl.i18n.EnableLanguages">
        <property name="languageKey" value="th" />
        <property name="otherLanguageKey" value="th-TH" />
        <property name="languageName" value="ภาษาไทย" />
    </property>

    <!-- locale format -->
    <property name="defaultLocaleFormat" class="org.iplass.mtp.impl.i18n.LocaleFormat">
        <property name="locale" value="ja" />
        <property name="locale" value="ja_JP" />
        <property name="locale" value="zh" />
        <property name="locale" value="zh_CN" />
        <property name="locale" value="zh_TW" />
        <property name="locale" value="zh_HK" />

        <!--
            Formatに指定可能な書式
                yyyy : full year (four digit)
                MM   : day of year (two digit)
                dd   : day of month (two digit)
                MMM  : month name short (ex. Jan)
                MMMM : month name long (ex. January)
                HH   : hour (two digit)
                mm   : minute (two digit)
                ss   : second (two digit)
                SSS  : millisecond (three digit)

            ※MMM、MMMMはoutputXXXでのみ利用可能。browserInputDateFormatでは利用不可。
             またロケールがen、en_XXの場合のみ正常に動作します。

            ※Server系のフォーマットは内部制御があるため変更しないでください。
            ※Time系の入力フォーマットはRange制御があるため変更しないでください。
         -->

        <!-- Server側でDateの入力値として受け取る形式(変更不可) -->
        <property name="serverDateFormat" value="yyyyMMdd" />
        <!-- Server側でTimeの入力値として受け取る形式(変更不可) -->
        <property name="serverTimeFormat" value="HHmmssSSS" />

        <!-- ブラウザ上でのDateの入力形式(テナントで個別指定可能) -->
        <property name="browserInputDateFormat" value="yyyyMMdd" />

        <!-- ブラウザ上でのTimeの入力形式(TimeはRange制御があるので変更不可) -->
        <property name="browserInputTimeSecFormat" value="HH:mm:ss" />
        <property name="browserInputTimeMinFormat" value="HH:mm" />
        <property name="browserInputTimeHourFormat" value="HH" />

        <!-- Date型の出力形式(検索結果やCSVなど。テナントで個別指定可能) -->
        <property name="outputDateFormat" value="yyyy/MM/dd" />
        <property name="outputDateWeekdayFormat" value="yyyy/MM/dd EEEE" />
        <!-- Excelでの日付出力形式 -->
        <property name="excelDateFormat" value="yyyy/M/d" />
        <property name="excelTimeFormat" value="H:mm" />

        <!-- Time型の出力形式(検索結果やCSVなど。現状テナントで個別指定不可) -->
        <property name="outputTimeSecFormat" value="HH:mm:ss" />
        <property name="outputTimeMinFormat" value="HH:mm" />
        <property name="outputTimeHourFormat" value="HH" />

        <property name="lastNameIsFirst" value="true" />
    </property>
    <property name="localeFormat" class="org.iplass.mtp.impl.i18n.LocaleFormat">
        <property name="locale" value="en_US" />
        <property name="locale" value="en" />

        <property name="serverDateFormat" value="yyyyMMdd" />
        <property name="serverTimeFormat" value="HHmmssSSS" />

        <property name="browserInputDateFormat" value="MM/dd/yyyy" />
        <property name="browserInputTimeSecFormat" value="HH:mm:ss" />
        <property name="browserInputTimeMinFormat" value="HH:mm" />
        <property name="browserInputTimeHourFormat" value="HH" />

        <property name="outputDateFormat" value="MM/dd/yyyy" />
        <property name="outputDateWeekdayFormat" value="EEEE, MM/dd/yyyy" />
        <property name="excelDateFormat" value="M/d/yyyy" />
        <property name="excelTimeFormat" value="H:mm" />
        <property name="outputTimeSecFormat" value="HH:mm:ss" />
        <property name="outputTimeMinFormat" value="HH:mm" />
        <property name="outputTimeHourFormat" value="HH" />

        <property name="lastNameIsFirst" value="false" />
    </property>
    <property name="localeFormat" class="org.iplass.mtp.impl.i18n.LocaleFormat">
        <property name="locale" value="en_SG" />
        <property name="locale" value="th" />
        <property name="locale" value="th_TH" />

        <property name="serverDateFormat" value="yyyyMMdd" />
        <property name="serverTimeFormat" value="HHmmssSSS" />

        <property name="browserInputDateFormat" value="dd/MM/yyyy" />
        <property name="browserInputTimeSecFormat" value="HH:mm:ss" />
        <property name="browserInputTimeMinFormat" value="HH:mm" />
        <property name="browserInputTimeHourFormat" value="HH" />

        <property name="outputDateFormat" value="dd/MM/yyyy" />
        <property name="outputDateWeekdayFormat" value="EEEE dd/MM/yyyy" />
        <property name="excelDateFormat" value="d/M/yyyy" />
        <property name="excelTimeFormat" value="H:mm" />
        <property name="outputTimeSecFormat" value="HH:mm:ss" />
        <property name="outputTimeMinFormat" value="HH:mm" />
        <property name="outputTimeHourFormat" value="HH" />

        <property name="lastNameIsFirst" value="false" />
    </property>

    <property name="genericFontFamilyList" value="serif" />
    <property name="genericFontFamilyList" value="sans-serif" />
    <property name="genericFontFamilyList" value="monospace" />
    <property name="genericFontFamilyList" value="cursive" />
    <property name="genericFontFamilyList" value="fantasy" />
    <property name="genericFontFamilyList" value="system-ui" />
    <property name="genericFontFamilyList" value="ui-serif" />
    <property name="genericFontFamilyList" value="ui-sans-serif" >
    <property name="genericFontFamilyList" value="ui-monospace" >
    <property name="genericFontFamilyList" value="ui-rounded" />
    <property name="genericFontFamilyList" value="math" />
    <property name="genericFontFamilyList" value="emoji" />
    <property name="genericFontFamilyList" value="fangsong" />

    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="ja" />
        <property name="fonts" value="Meiryo" />
        <property name="fonts" value="MS PGothic" />
        <property name="fonts" value="Hiragino Kaku Gothic Pro" />
        <property name="fonts" value="ヒラギノ角ゴ Pro W3" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="en" />
        <property name="fonts" value="Segoe UI" />
        <property name="fonts" value="Helvetica Neue" />
        <property name="fonts" value="Arial" />
        <property name="fonts" value="Helvetica" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="zh-CN" />
        <property name="fonts" value="Microsoft Yahei" />
        <property name="fonts" value="PingHei" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="zh-TW" />
        <property name="fonts" value="Microsoft Yahei" />
        <property name="fonts" value="PingHei" />
        <property name="fonts" value="sans-serif" />
    </property>
    <property name="languageFonts" class="org.iplass.mtp.impl.i18n.LanguageFonts">
        <property name="language" value="th" />
        <property name="fonts" value="Leelawadee" />
        <property name="fonts" value="Tahoma" />
        <property name="fonts" value="sans-serif" />
    </property>
</service>

3.33. ListingService

保存リストの実行を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.listing.ListingService

実装クラス名

org.iplass.mtp.impl.listing.ListingService

ListingServiceの設定

ListingServiceを設定します。

設定項目
項目 説明

automaticConversionToRootFolderMode

boolean

3.0.15未満からの移行用。Rootフォルダを利用するモードに自動的に変換する場合にtrueを設定。 デフォルト値は false です。

true にした場合、保存リスト機能の初回アクセス時にRootフォルダの生成、保存リストの更新を実行します。

3.0.14まではRootに対するフォルダは明示的に作成していませんでした(nullとして対応)が、 保存リストの検索処理の高速化を目的として、3.0.15からRootフォルダを利用するように変更しました。 3.0.14以前を利用して、既にフォルダや保存リストが登録されている場合は、Rootフォルダを利用しないモードで動作しますが、 3.0.15以降と同様に動作させる場合は、このフラグを true に設定してください。
一度、Rootフォルダに対応した後(SavedListFolderエンティティにRootフォルダが作成されているかを確認)は、 false に戻しても平気です。

serializedClassResolver

SerializedClassResolver

保存リストをデシリアライズする際のクラスのリゾルバです。復元処理をカスタマイズしたい場合に利用可能です。

SerializedClassResolver

classはorg.iplass.mtp.impl.listing.SerializedClassResolverの実装クラスを指定します。

SerializedClassResolverを実装するクラスでは、 Class<?> resolveClass(String serializedClassName) メソッドを実装し、クラス名から解決されるClassインスタンスを返却するようにします。

設定例
<service>
    <interface>org.iplass.mtp.impl.listing.ListingService</interface>

    <!-- 3.0.15未満からの移行用。RootFolderを利用するモードに自動的に変換する場合にtrue -->
    <property name="automaticConversionToRootFolderMode" value="false"/>

</service>

3.34. LobStoreService

LOBデータの永続化を行うサービスです。

インタフェース名

org.iplass.mtp.impl.lob.LobStoreService

実装クラス名

org.iplass.mtp.impl.lob.LobStoreService

LobStoreServiceの設定

LobStoreServiceを設定します。

設定項目
項目 説明

binaryStore

LobStore

バイナリデータのLobStore。

longTextStore

LobStore

LongTextのLobStore。

defaultLobStoreName

String

デフォルトとするLobストアの名前。デフォルト値は default です。

manageLobSizeOnRdb

boolean

LobサイズをRdb(lob_store)で管理するか。デフォルト値は false (管理しない)です。

temporaryKeepDay

int

テンポラリデータの保存日数。クリーナによりここで指定された日数よりも前のデータが削除されます。デフォルト値は 1 です。

invalidKeepDay

int

無効(非参照)データの保存日数。クリーナによりここで指定された日数よりも前のデータが削除されます。デフォルト値は 0 です。

cleanCommitLimit

int

クリーナの削除処理のコミット単位。デフォルト値は 100 です。

LobStore

classはorg.iplass.mtp.impl.lob.lobstore.LobStoreの実装クラスを指定します。

標準で以下のLobStoreを提供します。

RdbLobStore

classはorg.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStoreを指定します。

RDBに保存するLobStoreです。 以下の項目を設定可能です。

項目 説明

lobValidator

LobValidator

Lobに対するチェック処理。

FileLobStore

classはorg.iplass.mtp.impl.lob.lobstore.file.FileLobStoreを指定します。

ファイルに保存するLobStoreです。 以下の項目を設定可能です。

項目 説明

rootDir

String

保存先のルートディレクトリ。

overwriteFile

boolean

ファイルの上書きを行うか。デフォルト値はfalse(上書きしない)です。

lobValidator

LobValidator

Lobに対するチェック処理。

S3LobStore

classはorg.iplass.mtp.impl.aws.lobstore.s3.S3LobStoreを指定します。

S3に保存するLobStoreです。 以下の項目を設定可能です。

項目 説明

region

String

S3のリージョン

endpoint

String

S3のendpoint

bucketName

String

S3のバケット名

encryption

S3Encryption

S3オブジェクトを暗号化する場合に指定

overwriteFile

boolean

既にS3オブジェクトが存在した場合に上書きを行うか否か。
デフォルト値はfalse(上書きしない)です。

useTransferManager

boolean

TransferManagerを利用するか否か。デフォルト値はfalseです。

transferManagerConfiguration

TransferManagerConfiguration

TransferManagerの設定

transferManagerThreadPoolSize

int

TransferManagerで利用するスレッドプールのサイズ。 -1 が設定された場合はAWSSDKのデフォルト値によってスレッドプールが作成されます。デフォルト値は -1 です。

lobValidator

LobValidator

Lobに対するチェック処理。

requiredTagMap

String、Map形式

S3オブジェクトにおいて、必要なタグの値をチェックする場合にMap形式で指定します。keyとしてタグ名、valueとしてタグ値を設定します。

retryTagCheckIntervalMillis

long

タグチェックのリトライ間隔(ミリ秒)。

retryTagCheckCount

int

タグチェックのリトライ回数。

TransferManagerConfiguration

classはcom.amazonaws.services.s3.transfer.TransferManagerConfigurationです。TransferManager関連の設定が可能です。

S3Encryption

classはorg.iplass.mtp.impl.aws.lobstore.s3.S3Encryptionの実装クラスを指定します。

標準で、以下のS3Encryptionを提供しています。

SseS3Encryption

classはorg.iplass.mtp.impl.aws.lobstore.s3.SseS3Encryptionを設定します。

SSE-S3方式で暗号化します。設定変更可能な項目は有りません。

SseKmsEncryption

classはorg.iplass.mtp.impl.aws.lobstore.s3.SseKmsEncryptionを設定します。

SSE-KMS方式で暗号化します。 以下の項目を設定可能です。

項目 説明

awsKmsKeyId

String

AWS Key Management Service (KMS)S3のKey Id

MetricsS3LobStore

classはorg.iplass.mtp.impl.micrometer.metrics.aws.lobstore.s3.MetricsS3LobStoreを指定します。

Micrometerによるメトリクス収集機能を追加したS3LobStoreです。 S3LobStoreと同じ項目を設定可能です。

AddableMultiLobStore

classはorg.iplass.mtp.impl.lob.lobstore.multi.AddableMultiLobStoreを指定します。

複数のLobStoreを合わせて単一のLobStoreと設定することが可能なLobStoreです。 以下の項目を設定可能です。

項目 説明

lobStore

LobStore、複数指定可

LobStoreの設定。

lobValidator

LobValidator

Lobに対するチェック処理。

LobValidator

classにorg.iplass.mtp.impl.lob.lobstore.LobValidatorの実装クラスを設定します。

標準で、以下のLobValidatorを提供しています。

LogLobValidator

classはorg.iplass.mtp.impl.lob.lobstore.LogLobValidatorを設定します。

単純にログを出力のみを行います。設定変更可能な項目は有りません。

ProcessLobValidator

classはorg.iplass.mtp.impl.lob.lobstore.ProcessLobValidatorを設定します。

外部プロセスを起動します。 以下の項目を設定可能です。

項目 説明

command

String、複数指定可

外部プロセスとパラメータを指定します。

checksumAlgorithm

String

checksumのアルゴリズムを指定します。 Adler-32/CRC-32/MD5/SHA-1/SHA-256のいずれかを指定してください。

設定例
<service>
    <interface>org.iplass.mtp.impl.lob.LobStoreService</interface>
    <property name="lobDao" class="org.iplass.mtp.impl.lob.EncryptLobDao" />

    <property name="defaultLobStoreName" value="defaultStore" />
    <property name="defaultStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
    </property>
    <!--
    <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
        <property name="rootDir" value="D:\tmp\fileLobStore" />
        <property name="overwriteFile" value="false" />
    </property>
    <property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
    </property>
     -->

    <!--
        複数のLobStoreを合わせて単一のLobStoreと設定することが可能。
        新規追加は先頭に定義されているlobStoreに対して行われる。
        参照はすべてのlobStoreにから検索する。
        削除もすべてのlobStoreに対して実行される。
     -->
    <!--
    <property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.multi.AddableMultiLobStore">
        <property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="D:\tmp\fls2" />
        </property>
        <property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
            <property name="rootDir" value="D:\tmp\fls1" />
        </property>
        <property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore" />
    </property>
     -->

     <!--
        LobサイズをRdb(lob_store)で管理するかを指定する。
        ver1.5.2でサイズ管理制御のためにlob_storeテーブルのレイアウトを変更。
        既存システムでlob_storeテーブルが変更できない場合は、falseを指定することで回避可能。 -->
    <property name="manageLobSizeOnRdb" value="false" />
</service>

3.35. LoggingService

ログ全般に関する設定を行うサービスです。

インタフェース名

org.iplass.mtp.impl.logging.LoggingService

実装クラス名

ログにLogbackを利用するLoggingService
org.iplass.mtp.impl.logging.logback.LogbackLoggingService

LoggingServiceの設定

ログ出力に関する設定項目の設定をします。 当サービスの機能により、テナント毎にログ出力の条件を動的に切り替えることが可能となります。 この機能を有効化するためには合わせてLogbackの設定(logback.xml)にて、 org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter を有効化する必要があります。 当該機能が有効化された場合、AdminConsole等を介してログ出力条件を動的に切り替えることが可能となります。

設定項目
項目 説明

maxAgeSecondsOfLogCondition

long

ログ出力条件の有効期限に設定可能な最大の生存期間(秒)。 デフォルト値は-1(無期限)です。

設定例
<service>
    <interface>org.iplass.mtp.impl.logging.LoggingService</interface>
    <class>org.iplass.mtp.impl.logging.logback.LogbackLoggingService</class>
    <property name="maxAgeSecondsOfLogCondition" value="86400" />
</service>

3.36. MailService

メールテンプレートの定義(メタデータ)の管理と、メール送信を行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.mail.MailService

実装クラス名

JavaMailを利用したメール送信
org.iplass.mtp.impl.mail.MailServiceImpl
Amazon SESを利用したメール送信
org.iplass.mtp.impl.mail.AWSMailService
SendGridを利用したメール送信
org.iplass.mtp.impl.sendgrid.SendGridMailServiceImpl

MailServiceImplの設定

標準のメール送信(JavaMail)を利用する場合、MailServiceImplを設定します。
JavaMailで定義される標準のプロパティ、各プロバイダ実装のプロパティ、およびiPLAssで拡張したプロパティを設定可能です。

設定項目
項目 説明

mail.smtp.host

String、必須

SMTPサーバのホスト名。

mail.smtp.port

int

SMTPサーバのポート番号。デフォルト値は25です。

mail.smtp.connectiontimeout

int

SMTPコネクションを確立する際のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.smtp.timeout

int

SMTP通信時のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.pop3.connectiontimeout

int

POP3コネクションを確立する際のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.pop3.timeout

int

POP3通信時のタイムアウト(ミリ秒)。 デフォルト値は60000(1分)です。

mail.*

-

その他JavaMailで定義される標準のプロパティ、各プロバイダ実装のプロパティを設定可能です。

mail.host
mail.smtp.from
mail.smtp.auth
mail.transport.protocol
など

mail.smtp.popbeforesmtp

boolean

POP before SMTPにより認証する場合trueを設定します。デフォルト値はfalseです。
iPLAssにて拡張されたプロパティです。

mail.pop3.auth.id

String

POP before SMTP認証する際のユーザーのIDです。
この設定はmail.smtp.popbeforesmtpがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.pop3.auth.password

String

POP before SMTP認証する際のユーザーのパスワードです。
この設定はmail.smtp.popbeforesmtpがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.smtp.auth.id

String

SMTP認証する際のユーザーIDです。
この設定はmail.smtp.authがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.smtp.auth.password

String

SMTP認証する際のパスワードです。
この設定はmail.smtp.authがtrueの場合に有効です。
iPLAssにて拡張されたプロパティです。

mail.charset

String

メールのデフォルトのcharsetです。
例えば utf-8 を指定します。
iPLAssにて拡張されたプロパティです。

mail.encoding

String

メールのデフォルトのencodingです。
例えば base64 を指定します。
iPLAssにて拡張されたプロパティです。

debug

boolean

デバッグを有効にした場合、標準出力にトレースを出力します。

listener

SendMailListener、複数指定可

メール送信時のListener。

retryIntervalMillis

long

メール送信失敗時のリトライ間隔(ミリ秒)。

retryCount

int

メール送信失敗時のリトライ回数。

smimeHandler

SmimeHandler

S/MIME利用時のハンドラです。

SendMailListener

classはorg.iplass.mtp.mail.SendMailListenerの実装クラスを指定します。

標準で以下のSendMailListenerを提供します。

LoggingSendMailListener

classはorg.iplass.mtp.mail.listeners.LoggingSendMailListenerを指定します。

送信メールのログ出力を行うSendMailListenerです。 設定変更可能な項目はありません。

MetricsSendMailListener

classはorg.iplass.mtp.impl.micrometer.metrics.mail.MetricsSendMailListenerを指定します。

Micrometerによるメトリクス収集機能を追加したSendMailListenerです。 設定変更可能な項目はありません。

SmimeHandler

MailServiceImplを利用する場合、標準でS/MIMEによる電子署名と暗号化を行うorg.iplass.mtp.impl.mail.smime.SmimeHandlerを提供します。 以下の設定項目が可能です。

項目

説明

cmsAlgorithmName

String

CMS(暗号メッセージ構文)での暗号アルゴリズム名です。デフォルト値は AES128_CBC です。

signatureAlgorithmMap

SignatureAlgorithmMap

電子署名アルゴリズムのマッピング。

certStore

SmimeCertStore

S/MIMEで利用する証明書と秘密鍵を格納しているストアクラスです。

SignatureAlgorithmMap

電子署名アルゴリズムのマッピングを設定します。 以下の項目が設定できます。

項目 説明

name

String

電子署名アルゴリズムのキー。

value

String

電子署名アルゴリズム。

デフォルトの設定値

name

value

RSA

SHA256withRSA

DSA

SHA256withDSA

EC

SHA256withECDSA

SmimeCertStore

classはorg.iplass.mtp.impl.mail.smime.SmimeCertStoreの実装クラスを指定します。

標準でjava.security.KeyStoreベースのシンプルな実装クラスorg.iplass.mtp.impl.mail.smime.SimpleSmimeCertStoreを提供します。 KeyStoreに格納されている証明書はクライアントの証明書も含めて、信頼されたものとして扱います。 実行時には有効期間のチェックのみ行い、証明書チェーンの検証は行いません。

項目

説明

keyStoreType

String

KeyStoreのタイプ。デフォルト値は PKCS12 です。

keyStoreProvider

String

KeyStoreのプロバイダ名。未設定の場合、最優先のProviderから順に、登録済みのセキュリティプロバイダのリストから、指定されたKeyStoreのタイプをサポートする最初のプロバイダを利用します。

keyStoreFilePath

String

署名作成および暗号化の為のエントリが格納されるKeyStoreのファイルパス。

keyStorePassword

String

KeyStoreのパスワード。

keyPasswordMap

KeyPasswordMap

エントリに関連した秘密鍵を復元する為のパスワードマッピング。

keyStoreReloadIntervalMinutes

String

KeyStoreのリロード間隔(分)。デフォルト値は Long.MAX_VALUE です。

KeyPasswordMap

エントリに関連した鍵を復元する為のパスワードマッピングを設定します。 以下の項目が設定できます。

項目 説明

name

String

エントリの別名。(送信者または受信者のメールアドレス)

value

String

エントリに関連した秘密鍵を復元する為のパスワード。

設定例
<service>
    <interface>org.iplass.mtp.impl.mail.MailService</interface>
    <class>org.iplass.mtp.impl.mail.MailServiceImpl</class>

    <!-- SMTP設定  -->
    <!-- SMTPサーバホスト -->
    <property name="mail.smtp.host" value="XXXXXXXX"/>
    <!-- SMTPサーバポート  通常:25 / サブミッションポート:587 / SSL:465 -->
    <property name="mail.smtp.port" value="25"/>
    <!-- タイムアウト設定 -->
    <property name="mail.smtp.connectiontimeout" value="60000"/>
    <property name="mail.smtp.timeout" value="60000"/>

    <!--
        mail.smtp.hostプロパティはmail.hostプロパティに優先して認識されるため、2つの値が同一ならば、
        mail.smtp.hostプロパティを設定するだけでもメール送信は可能です。
        しかし、mail.hostプロパティは内部的にMessage-ID ヘッダを生成するのに利用されます。
        mail.hostプロパティを明示的に指定していない場合、Message-IDヘッダが正しく生成できない可能性があります。
     -->
    <property name="mail.host" value="XXXXXXXX"/>

    <!-- デフォルトCharset -->
    <property name="mail.charset" value="utf-8"/>

    <property name="mail.encoding" value="base64"/>

    <!-- S/MIME設定 -->
    <!-- S/MIMEによる署名および暗号化を利用します。 -->
    <property name="smimeHandler" class="org.iplass.mtp.impl.mail.smime.SmimeHandler">
        <property name="cmsAlgorithmName" value="AES128_CBC" />
        <property name="signatureAlgorithmMap">
            <property name="RSA" value="SHA256withRSA" />
            <property name="DSA" value="SHA256withDSA" />
            <property name="EC" value="SHA256withECDSA" />
        </property>
        <property name="certStore" class="org.iplass.mtp.impl.mail.smime.SimpleSmimeCertStore" >
            <property name="keyStoreType" value="yourOwnKeyStoreType" />
            <property name="keyStoreProvider" value="yourOwnKeyStoreProvider" />
            <property name="keyStoreFilePath" value="yourOwnKeyStoreFilePath" />
            <property name="keyStorePassword" value="yourOwnKeyStorePassword" />
            <property name="keyPasswordMap">
                <property name="test1@contract.dentsusoken.com" value="yourOwnKeyPassword1" />
                <property name="test2@contract.dentsusoken.com" value="yourOwnKeyPassword2" />
            </property>
            <property name="keyStoreReloadIntervalMinutes" value="60" />
        </property>
    </property>

    <!-- ■ for develop only (additional="true) ■ -->
    <!-- 送信メールをデバッグ出力する場合、以下を有効にしてください。 -->
    <!--
    <property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
     -->
</service>

AWSMailServiceの設定

Amazon SESを利用する場合、AWSMailServiceを設定します。
AWSMailServiceを利用する場合、AWSSettingにてAWSの認証設定が行われている必要があります。ただし、注意点としてAWSSettingのclientConfigurationは適用できません。

設定項目
項目 説明

mail.charset

String

メールのデフォルトのcharsetです。
例えば utf-8 を指定します。

mail.encoding

String

メールのデフォルトのencodingです。
例えば base64 を指定します。

mail.aws.host

String

SESのendpointを指定可能です。
未指定の場合はデフォルトのendpointが利用されます。

debug

boolean

デバッグを有効にした場合、標準出力にトレースを出力します。

listener

SendMailListener、複数指定可

メール送信時のListener。

retryIntervalMillis

long

メール送信失敗時のリトライ間隔(ミリ秒)。

retryCount

int

メール送信失敗時のリトライ回数。

SendMailListener

MailServiceImplのSendMailListenerと同様です。

設定例

MailServiceImplと同様です。

SendGridMailServiceImplの設定

SendGridを利用する場合、SendGridMailServiceImplを設定します。

設定項目
項目 説明

checkBounce

boolean

送信前にバウンスリスト、ブロックリストチェックを行うか。デフォルト値はtrueです。

checkBouncePattern

String

バウンスリスト、ブロックリストチェックを行う対象とするメールアドレス。正規表現の形式で指定します。

httpClientConfig

HttpClientConfig

HTTPクライアントの設定。

httpTransport

HttpTransport

WebApiへのHTTPリクエストの設定。

mailApiClient

MailClient

メールクライアントの設定。

deleteBouncePattern

String

SendGridのバウンス、ブロックリストにアドレスが載った際にリストから削除対象とするメールアドレス。正規表現の形式で指定します。

bounce

BounceClient

バウンスクライアント。

block

BlockClient

ブロッククライアント。

listener

SendMailListener、複数指定可

メール送信時のListener。

retryIntervalMillis

long

送信失敗時のリトライ間隔(ミリ秒)。

retryCount

int

送信失敗時のリトライ回数。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。

以下の項目を設定可能です。

項目 説明

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)(ミリ秒)。デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

proxyHost

String

プロキシサーバのホスト。

proxyPort

int

プロキシサーバのポート番号。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

HttpTransport

classはorg.iplass.mtp.impl.sendgrid.apiclient.HttpTransportImplを指定します。

以下の項目を設定可能です。

項目 説明

apiUser

String、必須

SendGridのユーザーID、もしくは apikey 固定値(認証時にパスワードではなくAPI Keyを利用する場合)

apiKey

String、必須

SendGridのパスワード、もしくはAPI Key。

webApiRoot

String、必須

SendGridのAPIのURL。

MailClient

classはorg.iplass.mtp.impl.sendgrid.apiclient.MailClientImplを指定します。

以下の項目を設定可能です。

項目 説明

charset

String

メールの文字コード。

BounceClient

classはorg.iplass.mtp.impl.sendgrid.apiclient.BounceClientImplを指定します。

BounceClientImplは設定変更可能な項目はありません。

BlockClient

classはorg.iplass.mtp.impl.sendgrid.apiclient.BlockClientImplを指定します。

BlockClientImplは設定変更可能な項目はありません。

SendMailListener

MailServiceImplのSendMailListenerと同様です。

設定例
<service>
    <interface>org.iplass.mtp.impl.mail.MailService</interface>
    <class>org.iplass.mtp.impl.sendgrid.SendGridMailServiceImpl</class>
    <!-- 送信前にバウンスリスト、ブロックリストチェックを行わない場合、checkBounceをfalseに設定 -->
    <!--
    <property name="checkBounce" value="false" />
    -->
    <!-- バウンスリスト、ブロックリストのチェック対象とするメールアドレス。正規表現で指定。 -->
    <property name="checkBouncePattern" value=".*@ldap.dentsusoken.com|.*@contract.dentsusoken.com" />
    <property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
        <property name="connectionTimeout" value="30000" />
        <property name="soTimeout" value="30000" />
        <!-- ■ for develop only ■ -->
        <!--
        <property name="proxyHost" value="proxyhost.dentsusoken.com" />
        <property name="proxyPort" value="8080" />
         -->
    </property>
    <property name="httpTransport" class="org.iplass.mtp.impl.sendgrid.apiclient.HttpTransportImpl">
        <!-- SendGridの認証用キー -->
        <property name="apiUser" value="yourOwnApiUser" />
        <property name="apiKey" value="yourOwnApiKey" />
        <!-- SendGridエンドポイント -->
        <property name="webApiRoot" value="https://api.sendgrid.com/api" />
    </property>

    <property name="mailApiClient" class="org.iplass.mtp.impl.sendgrid.apiclient.MailClientImpl">
        <!-- メールの文字コード -->
        <property name="charset" value="UTF-8" />
    </property>

    <!-- SendGridのバウンス、ブロックリストにアドレスが載った際、リストから削除対象とするメールアドレス。正規表現で指定。 -->
    <property name="deleteBouncePattern" value=".*@ldap.dentsusoken.com|.*@contract.dentsusoken.com" />

    <property name="bounce" class="org.iplass.mtp.impl.sendgrid.apiclient.BounceClientImpl" />
    <property name="block" class="org.iplass.mtp.impl.sendgrid.apiclient.BlockClientImpl" />

    <!-- ■ for develop only (additional="true") ■ -->
    <!--
    <property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
     -->
</service>

3.37. MdcConfigService

モバイル版汎用画面全般の動作の設定を行うサービスです。

インタフェース名

org.iplass.mtp.mdc.MdcConfigService

実装クラス名

org.iplass.mtp.mdc.MdcConfigService

MdcConfigServiceの設定

設定項目
項目 説明

formatNumberWithComma

boolean

詳細表示画面で数値プロパティの値をカンマでフォーマットするか。デフォルト値はtrueです。

searchResultDispRowCount

int

検索結果画面で表示する検索結果の件数。デフォルト値は10です。

searchInterval

int

検索処理のインターバル。0を設定した場合は無期限となります。デフォルト値は60000(1分)です。

recycleBinMaxCount

int

ゴミ箱の表示件数上限値。未指定の場合のデフォルト値は100です。-1を指定した場合は無制限となります。

deleteAllCommandBatchSize

int

一括削除のコミットバッチサイズ件数。未指定の場合のデフォルト値は100です。一括削除コミットタイプがDIVISIONの場合適用されます。

themes

Theme、複数指定可

テーマ。

themeColorSchemes

ThemeColorScheme、Map形式

テーマ配色。keyにテーマ名を指定し、Map形式で各テーマの配色を設定します。

displayBreakpoint

DisplayBreakpoint

ディスプレイブレイクポイント。各デバイスサイズの幅を設定します。

permitRolesToMdc

String、複数指定可

MdcAuthでのMdc許可ロール。 デフォルト値は MdcUserAppAdmin です。

permitRolesToNoView

String、複数指定可

MdcAuthでのEntityViewが未定義の場合の許可ロール。 デフォルト値は AppAdmin です。

binaryDownloadLoggingTargetProperty

BinaryDownloadLoggingTargetProperty、複数指定可

バイナリダウンロード用ログの出力対象のプロパティ。

binaryUploadAcceptMimeTypesPattern

String

エンティティのバイナリプロパティでアップロード可能なファイルのMIME Typeパターンを指定します。設定値は正規表現パターンを指定します。
設定が無い場合はアップロード時のファイルの MIME Type の確認は実施しません。

設定例

  • CSVファイルのアップロード許可 ^(text/csv)$

  • PDFと画像のアップロード許可 ^(application/pdf|image/.*)$

検証対象となる MIME Type の決定方法については、WebFrontendService uploadFileTypeDetector, FileTypeDetector を参照してください。

Theme

classはorg.iplass.mtp.mdc.tenant.Themeを指定します。 以下の項目を設定可能です。

項目 説明

themeName

String

テーマ名。

displayName

String

表示名。

ThemeColorScheme

classはorg.iplass.mtp.mdc.tenant.ThemeColorSchemeを指定します。 以下の項目を設定可能です。

項目 説明

primary

String

プライマリカラー

secondary

String

セカンダリカラー

neutral

String

ニュートラルカラー。デフォルト値は #D4D4D4 です。

success

String

成功カラー。デフォルト値は #4CAF50 です。

info

String

情報カラー。デフォルト値は #2196F3 です。

warning

String

警告カラー。デフォルト値は #FF7D07 です。

error

String

エラーカラー。デフォルト値は #FF5252 です。

background

String

バックグラウンドカラー。デフォルト値は #F7F7F7 です。

surface

String

サーフェスカラー。デフォルト値は #FFFFFF です。

DisplayBreakpoint

classはorg.iplass.mtp.mdc.DisplayBreakpointを指定します。以下の項目を設定可能です。
WebAPI呼び出し時、ディスプレイブレイクポイントを特定するためのリクエストヘッダー(X-Mdc-Display-Breakpoint)を送信します。表示判定スクリプトなどで利用可能です。

項目 説明

mobileBreakpoint

String

モバイルブレイクポイント。モバイルと判断する閾値の項目名を設定します。

thresholds

BreakpointThresholds

閾値。

BreakpointThresholds

classはorg.iplass.mtp.mdc.BreakpointThresholdsを指定します。 以下の項目を設定可能です。

項目 説明

xs

int

xsの閾値(px)。

sm

int

smの閾値(px)。

md

int

mdの閾値(px)。

lg

int

lgの閾値(px)。

xl

int

xlの閾値(px)。

BinaryDownloadLoggingTargetProperty

classはorg.iplass.mtp.mdc.BinaryDownloadLoggingTargetPropertyを指定します。

バイナリダウンロード用ログの出力対象のプロパティです。以下の項目を設定可能です。

項目 説明

entityName

String

エンティティ名。

propertyName

String

プロパティ名。

設定例
<service>
    <interface>org.iplass.mtp.mdc.MdcConfigService</interface>

    <!-- 詳細画面で数値プロパティの値をカンマでフォーマットするか -->
    <property name="formatNumberWithComma" value="true" />

    <!-- 検索画面で表示する検索結果の件数 -->
    <property name="searchResultDispRowCount" value="10"/>

    <!-- 検索処理のインターバル、無期限(0)/指定ミリ秒(1以上) -->
    <property name="searchInterval" value="60000"/>

    <!-- ゴミ箱の表示件数上限値 (-1は無制限) -->
    <property name="recycleBinMaxCount" value="100" />

    <!-- 一括削除のコミット件数 -->
    <property name="deleteAllCommandBatchSize" value="100" />

    <!-- テーマ定義 -->
    <property name="themes" class="org.iplass.mtp.mdc.tenant.Theme">
        <property name="themeName" value="green" />
        <property name="displayName" value="Green" />
    </property>
    <property name="themes" class="org.iplass.mtp.mdc.tenant.Theme">
        <property name="themeName" value="red" />
        <property name="displayName" value="Red" />
    </property>
    <property name="themes" class="org.iplass.mtp.mdc.tenant.Theme">
        <property name="themeName" value="blue" />
        <property name="displayName" value="Blue" />
    </property>
    <property name="themes" class="org.iplass.mtp.mdc.tenant.Theme">
        <property name="themeName" value="orange" />
        <property name="displayName" value="Orange" />
    </property>

    <!-- テーマのカラー配色定義 -->
    <property name="themeColorSchemes">
        <property name="green" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#4CAF50" />
            <property name="secondary" value="#0D909B" />
        </property>
        <property name="red" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#F44336" />
            <property name="secondary" value="#0D909B" />
        </property>
        <property name="blue" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#2196F3" />
            <property name="secondary" value="#0D909B" />
        </property>
        <property name="orange" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#FF5722" />
            <property name="secondary" value="#0D909B" />
        </property>
    </property>

    <!-- ディスプレイ設定  -->
    <property name="displayBreakpoint" class="org.iplass.mtp.mdc.DisplayBreakpoint">
        <property name="mobileBreakpoint" value="md" />
        <property name="thresholds" class="org.iplass.mtp.mdc.BreakpointThresholds" >
            <property name="xs" value="0" />
            <property name="sm" value="600" />
            <property name="md" value="960" />
            <property name="lg" value="1264" />
            <property name="xl" value="1904" />
        </property>
    </property>

    <!-- MdcAuth Mdc許可ロール -->
    <property name="permitRolesToMdc" value="MdcUser" />
    <property name="permitRolesToMdc" value="AppAdmin" />

    <!-- MdcAuth EntityViewが未定義の場合の許可ロール -->
    <property name="permitRolesToNoView" value="AppAdmin" />

    <!-- Binaryダウンロード時のログ出力設定 -->
    <property name="binaryDownloadLoggingTargetProperty">
        <property name="entityName" value="mtp.maintenance.Package" />
        <property name="propertyName" value="archive" />
    </property>

    <!-- バイナリファイルアップロード受け入れ可能な MIME Type パターン。正規表現を指定する。 -->
    <!-- 設定例
    <property name="binaryUploadAcceptMimeTypesPattern" value="^(image/.*|application/pdf|text/csv)$" />
    -->
</service>

3.38. MdcDetailViewService

モバイル版の詳細画面の設定を行うサービスです。

インタフェース名

org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService

実装クラス名

org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService

MdcDetailViewServiceの設定

MdcDetailViewServiceを設定します。

設定項目
項目 説明

detailViewGenerator

MdcDetailViewHandlerGenerator

詳細画面の画面定義の自動生成設定。

loadEntityController

LoadEntityController

Entityのロード処理。

saveEntityController

SaveEntityController

Entityの保存処理。

copyEntityController

CopyEntityController

Entityのコピー処理。

MdcDetailViewHandlerGenerator

classはorg.iplass.mtp.mdc.view.entityview.detail.definition.MdcDetailViewHandlerGeneratorの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewHandlerGeneratorImplを提供しています。 以下の項目を指定可能です。

項目 説明

showSystemSection

boolean

自動生成時にシステムSectionを出力する。

systemSectionProperties

SectionProperty、複数指定可

システムSectionプロパティ。 基本項目であるnameとdescriptionとバージョン管理項目(startDate、endDate)は対象外。

systemSectionDisplayPosition

SectionDisplayPosition

システムSectionの表示位置。 SectionDisplayPositionのenum値を指定。 次のいずれかを指定します。

TOP

詳細画面の先頭に表示します。

BOTTOM

詳細画面の末尾に表示します。

デフォルト値は TOP です。

excludeOidWhenCustomOid

boolean

OIDをカスタマイズしている場合にOIDを非表示。

useUserPropertyEditor

boolean

createBy、updateBy、lockedByにUserPropertyEditorを利用。 UserPropertyEditorを利用する場合、OIDではなくUserのnameが表示されます。

SectionProperty

システムプロパティ毎の表示可否に関する設定です。 以下の項目を設定可能です。

項目 説明

propertyName

String

プロパティ名

displayView

boolean

詳細画面で表示するか

displayCreate

boolean

新規、コピー画面で表示するか

displayUpdate

boolean

編集画面で表示するか

LoadEntityController

classはorg.iplass.mtp.mdc.view.entityview.detail.load.LoadEntityControllerの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.detail.LoadEntityControllerImplを提供しています。 設定可能な項目はありません。

SaveEntityController

classはorg.iplass.mtp.mdc.view.entityview.detail.save.SaveEntityControllerの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.detail.SaveEntityControllerImplを提供しています。 設定可能な項目はありません。

CopyEntityController

classはorg.iplass.mtp.mdc.view.entityview.detail.copy.CopyEntityControllerの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.detail.CopyEntityControllerImplを提供しています。 以下の項目を指定可能です。

項目 説明

shallowCopyLobData

boolean

Lobデータをシャローコピーするか。 true の場合、実体のコピーは行わず、コピー元と同じデータを参照します。 false の場合、実体のコピーを行い、コピー後のデータを参照します。

設定例
<service>
    <interface>org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService</interface>
    <!-- Auto Generator -->
    <property name="detailViewGenerator" class="org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewHandlerGeneratorImpl">
        <!-- システムSectionを出力 -->
        <property name="showSystemSection" value="false" />
        <!-- システムSectionに出力するプロパティ -->
        <property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
            <property name="propertyName" value="oid" />
            <property name="displayView" value="false" />
            <property name="displayCreate" value="false" />
            <property name="displayUpdate" value="false" />
        </property>
        <property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
            <property name="propertyName" value="state" />
            <property name="displayView" value="false" />
            <property name="displayCreate" value="false" />
            <property name="displayUpdate" value="false" />
        </property>
        <property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
            <property name="propertyName" value="createDate" />
            <property name="displayView" value="false" />
            <property name="displayCreate" value="false" />
            <property name="displayUpdate" value="false" />
        </property>
        <property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
            <property name="propertyName" value="createBy" />
            <property name="displayView" value="false" />
            <property name="displayCreate" value="false" />
            <property name="displayUpdate" value="false" />
        </property>
        <property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
            <property name="propertyName" value="updateDate" />
            <property name="displayView" value="false" />
            <property name="displayCreate" value="false" />
            <property name="displayUpdate" value="false" />
        </property>
        <property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
            <property name="propertyName" value="updateBy" />
            <property name="displayView" value="false" />
            <property name="displayCreate" value="false" />
            <property name="displayUpdate" value="false" />
        </property>
        <property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
            <property name="propertyName" value="lockedBy" />
            <property name="displayView" value="false" />
            <property name="displayCreate" value="false" />
            <property name="displayUpdate" value="false" />
        </property>
        <!-- システムSectionの表示位置 TOP or BOTTOM -->
        <property name="systemSectionDisplayPosition" value="BOTTOM" />
        <!-- OIDをカスタマイズしている場合にOIDを非表示 -->
        <property name="excludeOidWhenCustomOid" value="true" />
        <!-- createBy、updateBy、lockedByにUserPropertyEditorを利用 -->
        <property name="useUserPropertyEditor" value="true" />
    </property>

    <!-- Load Entity Controller -->
    <property name="loadEntityController" class="org.iplass.mtp.impl.mdc.view.entityview.detail.LoadEntityControllerImpl" />

    <!-- Save Entity Controller -->
    <property name="saveEntityController" class="org.iplass.mtp.impl.mdc.view.entityview.detail.SaveEntityControllerImpl" />

    <!-- Copy Entity Controller -->
    <property name="copyEntityController" class="org.iplass.mtp.impl.mdc.view.entityview.detail.CopyEntityControllerImpl">
        <!-- Lobデータをシャローコピーするか -->
        <property name="shallowCopyLobData" value="false" />
    </property>
</service>

3.39. MdcSearchViewService

モバイル版の詳細画面の設定を行うサービスです。

インタフェース名

org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService

実装クラス名

org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService

MdcSearchViewServiceの設定

MdcSearchViewServiceを設定します。

設定項目
項目 説明

searchViewGenerator

MdcSearchViewHandlerGenerator

検索画面の画面定義の自動生成設定。

searchController

SearchController

検索処理。

searchSelectListController

SearchSelectListController

選択処理検索処理。

deleteListController

DeleteListController

Entityの一括削除処理。

trashController

TrashController

ごみ箱操作。

MdcSearchViewHandlerGenerator

classはorg.iplass.mtp.mdc.view.entityview.search.definition.MdcSearchViewHandlerGeneratorを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewHandlerGeneratorImplを提供しています。 以下の項目を指定可能です。

項目 説明

showSystemProperty

boolean

システムプロパティを出力。

systemProperties

SectionProperty, 複数指定可能

システムプロパティ。 基本項目であるnameとバージョン管理項目(startDate、endDate)は対象外。

systemPropertyDisplayPosition

SystemPropertyDisplayPosition

システムプロパティの表示位置。 SystemPropertyDisplayPositionのenum値を指定。 次のいずれかを指定します。

TOP

検索条件の先頭に表示します。

BOTTOM

検索条件の末尾に表示します。

デフォルト値は TOP です。

excludeOidWhenCustomOid

boolean

OIDをカスタマイズしている場合にOIDを非表示。

useUserPropertyEditor

boolean

createBy、updateBy、lockedByにUserPropertyEditorを利用。 UserPropertyEditorを利用する場合、OIDではなくUserのnameが表示されます。

SectionProperty

システムプロパティ毎の表示可否に関する設定です。 以下の項目を設定可能です。

項目 説明

propertyName

String

プロパティ名。

displayCondition

boolean

検索条件で表示するか。

displayResult

boolean

検索結果で表示するか。

SearchController

classはorg.iplass.mtp.mdc.view.entityview.search.search.SearchControllerの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.search.SearchControllerImplを提供しています。 設定可能な項目はありません。

SearchSelectListController

classはorg.iplass.mtp.mdc.view.entityview.search.select.SearchSelectListControllerの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.search.SearchSelectListControllerImplを提供しています。 設定可能な項目はありません。

DeleteListController

classはorg.iplass.mtp.mdc.view.entityview.search.delete.DeleteListControllerの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.search.DeleteListControllerImplを提供しています。 設定可能な項目はありません。

TrashController

classはorg.iplass.mtp.mdc.view.entityview.trash.TrashControllerの実装クラスを指定します。

標準でorg.iplass.mtp.impl.mdc.view.entityview.search.TrashControllerImplを提供しています。 設定可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService</interface>
    <!-- Auto Generator -->
    <property name="searchViewGenerator" class="org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewHandlerGeneratorImpl">
        <!-- システムプロパティを出力 -->
        <property name="showSystemProperty" value="false" />
        <!-- 出力するシステムプロパティ -->
        <property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
            <property name="propertyName" value="oid" />
            <property name="displayCondition" value="false" />
            <property name="displayResult" value="false" />
        </property>
        <property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
            <property name="propertyName" value="state" />
            <property name="displayCondition" value="false" />
            <property name="displayResult" value="false" />
        </property>
        <property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
            <property name="propertyName" value="createDate" />
            <property name="displayCondition" value="false" />
            <property name="displayResult" value="false" />
        </property>
        <property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
            <property name="propertyName" value="createBy" />
            <property name="displayCondition" value="false" />
            <property name="displayResult" value="false" />
        </property>
        <property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
            <property name="propertyName" value="updateDate" />
            <property name="displayCondition" value="false" />
            <property name="displayResult" value="false" />
        </property>
        <property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
            <property name="propertyName" value="updateBy" />
            <property name="displayCondition" value="false" />
            <property name="displayResult" value="false" />
        </property>
        <property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
            <property name="propertyName" value="lockedBy" />
            <property name="displayCondition" value="false" />
            <property name="displayResult" value="false" />
        </property>
        <!-- システムプロパティの表示位置 TOP or BOTTOM -->
        <property name="systemPropertyDisplayPosition" value="BOTTOM" />
        <!-- OIDをカスタマイズしている場合にOIDを非表示 -->
        <property name="excludeOidWhenCustomOid" value="true" />
        <!-- createBy、updateBy、lockedByにUserPropertyEditorを利用 -->
        <property name="useUserPropertyEditor" value="true" />
    </property>
    <!-- Search Controller -->
    <property name="searchController" class="org.iplass.mtp.impl.mdc.view.entityview.search.SearchControllerImpl" />
    <!-- Search Select List Controller -->
    <property name="searchSelectListController" class="org.iplass.mtp.impl.mdc.view.entityview.search.SearchSelectListControllerImpl" />
    <!-- Delete List Controller -->
    <property name="deleteListController" class="org.iplass.mtp.impl.mdc.view.entityview.search.DeleteListControllerImpl" />
    <!-- Trash Controller -->
    <property name="trashController" class="org.iplass.mtp.impl.mdc.view.entityview.search.TrashControllerImpl" />
</service>

3.40. MessageService

リソースバンドルを管理するためのサービスです。

インタフェース名

org.iplass.mtp.impl.message.MessageService

実装クラス名

org.iplass.mtp.impl.message.MessageService

MessageServiceの設定

MessageServiceを設定します。

設定項目
項目 説明

resourceBundle

ResourceBundleConfig、複数指定可

ResourceBundleConfigの設定。

ResourceBundleConfig

classはorg.iplass.mtp.impl.message.ResourceBundleConfigを指定します。

標準でorg.iplass.mtp.impl.query.QuerySyntaxRegisterを提供しています。 以下の項目を設定可能です。

項目 説明

baseBundleNamePattern

String

バンドル名のパターン。

formats

String、複数指定可

ファイルのフォーマット。mtp.message を指定した場合はMessage定義をリソースバンドルとして扱います。

fallbackToSystemLocale

boolean

リソースバンドルを検索する際にシステムロケールをフォールバックするか。

設定例

<service>
    <interface>org.iplass.mtp.impl.message.MessageService</interface>
    <class>org.iplass.mtp.impl.message.MessageService</class>
    <property name="resourceBundle">
        <property name="baseBundleNamePattern" value="^org/iplass/.*$" />
        <property name="formats" value="java.class" />
        <property name="formats" value="java.properties" />
        <property name="fallbackToSystemLocale" value="false" />
    </property>
    <property name="resourceBundle">
        <property name="formats" value="mtp.message" />
        <property name="formats" value="java.class" />
        <property name="formats" value="java.properties" />
        <property name="fallbackToSystemLocale" value="false" />
    </property>
</service>

3.41. MetaDataRepository

メタデータの管理を行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.metadata.MetaDataRepository

実装クラス名

org.iplass.mtp.impl.metadata.MetaDataRepository

MetaDataRepositoryの設定

メタデータの管理方法を設定します。

設定項目
項目 説明

resourcePath

String、複数指定可

メタデータをXMLで定義したリソースファイルのパス。

filePath

String、複数指定可

メタデータをXMLで定義したファイルのパス。

annotatedClass

String、複数指定可

メタデータをアノテーションで定義したJavaクラス。 MetaDataSeeAlso、CommandClass、AsyncCommand、AsyncCommands、ActionMapping、ActionMappings、Template、Templates、WebApi、WebApisの各アノテーションが対象です。

tenantLocalStore

MetaDataStore

テナントのローカルメタデータを管理するためのMetaDataStore。

sharedStore

MetaDataStore

複数のテナントで共有するメタデータを管理するためのMetaDataStore。

MetaDataStore

各種メタデータを管理するための仕組みを提供します。

classはorg.iplass.mtp.impl.metadata.MetaDataStoreの実装クラスを指定します。

標準で以下のMetaDataStoreを提供します。

AnnotationMetaDataStore

MetaDataRepositoryのannotatedClassで指定されたJavaクラスのアノテーションからメタデータを読み込みます。

JavaクラスのアノテーションがMetaDataSeeAlsoの場合、MetaDataSeeAlsoに指定されたJavaクラスのアノテーションを読み込みます。 その他のアノテーション場合、annotatableMetaDataFactoryに指定されたクラスからアノテーションに対応するメタデータを作成します。

読み込み専用で、メタデータの登録/更新/削除は出来ません。

classにorg.iplass.mtp.impl.metadata.annotation.AnnotationMetaDataStoreを指定します。

項目 説明

annotatableMetaDataFactory

AnnotatableMetaDataFactory、複数指定可

アノテーションを読み込むためのクラス。

XmlResourceMetaDataStore

MetaDataRepositoryのresourcePathで指定されたクラスパス内に存在するXMLファイルからメタデータを読み込みます。 同様にfilePathで指定されたXMLファイルからXMLファイル絡めたデータを読み込みます。

読み込み専用で、メタデータの登録/更新/削除は出来ません。

classにorg.iplass.mtp.impl.metadata.xmlresource.XmlResourceMetaDataStoreを指定します。 設定変更可能な項目はありません。

RdbMetaDataStore

データベースを利用してメタデータを管理します。 MetaDataRepositoryのtenantLocalStoreでデフォルト設定になっており、各テナントで追加/編集したメタデータはデータベースで管理されます。

classにorg.iplass.mtp.impl.metadata.rdb.RdbMetaDataStoreを指定します。 設定変更可能な項目はありません。

CompositeMetaDataStore

メタデータを種類毎にMetaDataStoreを切り替えて管理します。

ブランクプロジェクトのservice-configにコメント化された状態で定義されています。 メタデータのバージョン管理をソース管理サーバで行う場合はコメント化を解除してください。 一部のメタデータを除いて、ローカルファイルとして管理できるようになります。

classにorg.iplass.mtp.impl.metadata.composite.CompositeMetaDataStoreを指定します。

項目 説明

defaultStoreClass

String

デフォルトのMetaDataStoreクラスのクラス名。 pathMappingで指定されたメタデータ以外のメタデータを管理するstoreになります。

pathMapping

MetaDataStorePathMapping、複数指定可

defaultStoreClassとは別のMetaDataStoreで管理するメタデータ。

store

MetaDataStore、複数指定可

defaultStoreClass及びpathMappingのstoreに指定しているクラス。

XmlFileMetaDataStore

XMLファイルベースでメタデータを管理します。

相対パスを指定する場合、EclipseのTomcat起動構成の引数タブで、作業ディレクトリをプロジェクトのルートディレクトリにしてください。

${workspace_loc:mtp-blank}

classにorg.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStoreを指定します。

項目 説明

rootPath

String

メタデータの保存先のルートパス。

fileStorePath

String

テナントメタデータの保存先。

groovySourceStorePath

String

UtilityClassのGroovyソースファイルの保存先。 未指定の場合はfileStorePathに保存されます。

localTenantId

int

管理対象のテナントID。

suffix

String

メタデータファイルの拡張子。デフォルト値は「.xml」です。

VersioningXmlFileMetaDataStore

XMLファイルベースでメタデータを管理します。 メタデータはバージョンを付与し、世代管理を行います。

classにorg.iplass.mtp.impl.metadata.xmlfile.VersioningXmlFileMetaDataStoreを指定します。

項目 説明

fileStorePath

String

テナントメタデータの保存先。

versionFormat

String

メタデータファイル名に付与されるバージョンのフォーマット。 未指定の場合 000 形式になります。

suffix

String

メタデータファイルの拡張子。デフォルト値は「.xml」です。

TypeConversionMetaDataStore

古いモジュールなどで提供されていたメタデータを現在のモジュールに変換し、利用できるようにするための機構です。

classにorg.iplass.mtp.impl.metadata.typeconversion.TypeConversionMetaDataStoreを指定します。

項目 説明

store

MetaDataStore

変換対象のメタデータを管理しているMetaDataStore。

converters

TypeConverter 、複数指定可

メタデータの型変換を行うコンバータ。

AnnotatableMetaDataFactory

アノテーションからメタデータを作成します。

classにorg.iplass.mtp.impl.metadata.annotation.AnnotatableMetaDataFactoryの実装クラスを指定します。

標準で以下のAnnotatableMetaDataFactoryを提供します。

MetaCommandClassFactory

CommandからCommandClassアノテーションを読み込みます。

classにorg.iplass.mtp.impl.command.MetaCommandClassFactoryを指定します。 設定変更可能な項目はありません。

MetaAsyncCommandFactory

CommandからAsyncCommandアノテーションを読み込みます。

classにorg.iplass.mtp.impl.command.async.MetaAsyncCommandFactoryを指定します。 設定変更可能な項目はありません。

MetaAsyncCommandsFactory

CommandからAsyncCommandsアノテーションを読み込みます。

classにorg.iplass.mtp.impl.command.async.MetaAsyncCommandsFactoryを指定します。 設定変更可能な項目はありません。

MetaActionMappingFactory

CommandからActionMappingアノテーションを読み込みます。

classにorg.iplass.mtp.impl.web.actionmapping.MetaActionMappingFactoryを指定します。 設定変更可能な項目はありません。

MetaActionMappingsFactory

CommandからActionMappingsアノテーションを読み込みます。

classにorg.iplass.mtp.impl.web.actionmapping.MetaActionMappingsFactoryを指定します。 設定変更可能な項目はありません。

MetaTemplateFactory

CommandからTemplateアノテーションを読み込みます。

org.iplass.mtp.impl.web.template.MetaTemplateFactoryを指定します。 設定変更可能な項目はありません。

MetaTemplatesFactory

CommandからTemplatesアノテーションを読み込みます。

org.iplass.mtp.impl.web.template.MetaTemplatesFactoryを指定します。 設定変更可能な項目はありません。

MetaWebApiFactory

CommandからWebApiアノテーションを読み込みます。

classにorg.iplass.mtp.impl.webapi.MetaWebApiFactoryを指定します。 設定変更可能な項目はありません。

MetaWebApisFactory

CommandからWebApisアノテーションを読み込みます。

classにorg.iplass.mtp.impl.webapi.MetaWebApisFactoryを指定します。 設定変更可能な項目はありません。

MetaDataStorePathMapping

CompositeMetaDataStoreでdefaultStoreClass以外のMetaDataStoreを利用する場合に利用します。 pathPrefixで指定したメタデータとstoreで指定したMetaDataStoreをマッピングします。

classにorg.iplass.mtp.impl.metadata.composite.MetaDataStorePathMappingを指定します。

項目 説明

pathPrefix

String

メタデータのパスのプレフィックス。

store

String

pathPrefixで指定したメタデータを管理するstoreのクラス名。

TypeConverter

新旧メタデータの変換処理を実装するためのインターフェースです。

classにorg.iplass.mtp.impl.metadata.typeconversion.TypeConverterの実装クラスを指定してください。

設定例
<service>
    <interface>org.iplass.mtp.impl.metadata.MetaDataRepository</interface>

    <!-- ■ your app metadata xml file name (additional="true) ■ -->
    <!--
    <property name="resourcePath" value="/xxx-metadata.xml" additional="true" />
     -->

    <!-- ■ your app command list class (additional="true) ■ -->
    <!--
    <property name="annotatedClass" value="xxx.command.CommandList" additional="true" />
     -->

    <!-- ■ your tenantLocalStore ■ -->
    <!--
        テナントメタデータの保存先を指定します。 UtilityClassのGroovyソースファイルは別の保存先を指定できます。
        相対パスを指定する場合、EclipseのTomcat起動構成で作業ディレクトリをプロジェクトのルートディレクトリにしてください。
        (例: ${workspace_loc:mtp-blank})
    -->
    <!--
    <property name="tenantLocalStore" class="org.iplass.mtp.impl.metadata.composite.CompositeMetaDataStore" >
        <property name="pathMapping" class="org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMapping">
            <property name="pathPrefix" value="/entity/"/>
            <property name="store" value="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore"/>
        </property>
        <property name="pathMapping" class="org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMapping">
            <property name="pathPrefix" value="/staticresource/"/>
            <property name="store" value="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore"/>
        </property>

        <property name="store" class="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore" />
        <property name="store" class="org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore" >
            <property name="fileStorePath" value="src/main/tenantLocalStore/" />
            <property name="groovySourceStorePath" value="src/main/groovy/" />
            <property name="localTenantId" value="XXX"/>
        </property>
        <property name="defaultStoreClass" value="org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore"/>
    </property>
     -->

    <!-- WebAPI(旧メタデータ)をWebApi(新メタデータ)として利用します。 -->
    <!--
    <property name="tenantLocalStore" class="org.iplass.mtp.impl.metadata.typeconversion.TypeConversionMetaDataStore">
        <property name="store" class="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore" />
        <property name="converters" class="org.iplass.mtp.impl.webapi.classic.metadata.MetaWebAPITypeConverter" />
        <property name="converters" class="org.iplass.mtp.impl.webapi.classic.metadata.MetaEntityWebApiDefinitionTypeConverter" />
    </property>
    -->
</service>

3.42. MicrometerService

メトリクス収集、モニタリングシステムへの連携を行うためのサービスです。Micrometerを利用したモジュールを標準提供します。
収集可能なメトリクスの詳細は、開発者ガイドのサポートするメトリクス を参照してください。

インタフェース名

org.iplass.mtp.impl.micrometer.MicrometerService

実装クラス名

org.iplass.mtp.impl.micrometer.MicrometerService

MicrometerServiceの設定

MicrometerServiceを設定します。

設定項目
項目 説明

enableEntityMetrics

boolean

EntityのCRUD操作のレイテンシ、処理回数をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、EntityServiceの interceptor にMicrometerモジュールのEntityEventMetricsInterceptorを追加する必要があります(デフォルトで追加されます)。

entityConfig

TimerConfig

EntityのCRUD操作のレイテンシメトリクスに対するヒストグラム・パーセンタイルの設定です。

enableActionLatencyMetrics

boolean

Actionのレイテンシ、呼び出し回数をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、ActionMappingServiceの interceptor にMicrometerモジュールのActionMetricsInterceptorを追加する必要があります(デフォルトで追加されます)。

actionConfig

TimerConfig

Actionのレイテンシのメトリクスに対するヒストグラム・パーセンタイルの設定です。

enableWebApiLatencyMetrics

boolean

WebAPIのレイテンシをメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、InterceptorServiceの webApi、soap にMicrometerモジュールのWebApiMetricsInterceptorを追加する必要があります(デフォルトで追加されます)。

webApiConfig

TimerConfig

WebAPIのレイテンシのメトリクスに対するヒストグラム・パーセンタイルの設定です。

enableSqlExecutionMetrics

boolean

Action、WebAPIにおけるSQL発行回数をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、ActionMappingServiceの interceptor にMicrometerモジュールのActionMetricsInterceptorを、InterceptorServiceの webApi、soap にMicrometerモジュールのWebApiMetricsInterceptorを追加する必要があります(デフォルトで追加されます)。

sqlConfig

DistributionSummaryConfig

SQL発行回数のメトリクスに対するヒストグラム・パーセンタイルの設定です。

enableHttpClientMetrics

boolean

HttpClientにおける各Httpリクエストのリクエスト時間と回数、Httpコネクションプールの統計をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、対象のHttpClientConfigの httpClientBuilderFactory にMicrometerモジュールのMicrometerHttpClientBuilderFactoryを指定する必要があります。

enableCacheStoreMetrics

boolean

CacheStoreのサイズ、ヒット回数/ミス回数(デフォルトではQueryキャッシュ、ActionContentキャッシュのみ)をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、MicrometerモジュールのMetricsCacheStoreFactorywrappedStore に対象のCacheStoreを指定する必要があります(デフォルトで基盤内部で定義されたデフォルトCacheStoreのメトリクス収集を有効化しています)。

enableAuthenticationMetrics

boolean

認証試行の成功・失敗回数をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、AuthLoggerServiceの loggers にMicrometerモジュールのAuthenticationEventMetricsが含まれている必要があります(デフォルトで、EnterpriseSlf4jAuthLoggerと共に有効化しています)。

enableAsyncMetrics

boolean

非同期処理の成功・失敗回数、処理時間をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、RdbQueueServiceの workerFactory にMicrometerモジュールのMetricsWorkerFactoryが含まれている必要があります。

enableS3Metrics

boolean

AWS S3のリクエスト時間と回数をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、LobStoreServiceの binaryStore にMicrometerモジュールのMetricsS3LobStoreが含まれている必要があります。

enableMailMetrics

boolean

メール送信の成功・失敗回数、処理時間をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、MailServiceの listener にMicrometerモジュールのMetricsSendMailListenerが含まれている必要があります。

enablePushMetrics

boolean

プッシュ送信の成功・失敗回数、処理時間をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、PushNotificationServiceの listener にMicrometerモジュールのMetricsPushNotificationListenerが含まれている必要があります。

enableSmsMetrics

boolean

SMS送信の成功・失敗回数、処理時間をメトリクスとして記録するかを指定します。デフォルト値はtrueです。
実際にメトリクスを収集するには、SmsServiceの listener にMicrometerモジュールのMetricsSendSmsMailListenerが含まれている必要があります。

meterBinder

MeterBinder、複数指定可

1つまたは複数のメトリクスを登録するBinderクラス。

commonTags

String、Map形式

全てのメトリクスに共通して付与するタグ。Map形式で指定可能です。

actionPathResolver

PathResolver、複数指定可

Actionのメトリクスに uri タグ、 uri_method タグの値として紐づけるPathを解決するためのResolverクラス。

webApiPathResolver

PathResolver、複数指定可

WebAPIのメトリクスに uri タグ、 uri_method タグの値として紐づけるPathを解決するためのResolverクラス。

customTagActionPathResolver

PathResolver、Map形式

カスタムでActionのメトリクスにタグ名とその値を解決するPathResolverクラスをMap形式で指定することができます。

customTagWebApiPathResolver

PathResolver、Map形式

カスタムでWebAPIのメトリクスにタグ名とその値を解決するPathResolverクラスをMap形式で指定することができます。

customizerClass

MeterRegistryCustomizer

メトリクスの設定を独自にカスタマイズするロジックを記述したい場合に指定可能です。

meterRegistryFactory

MeterRegistryFactory

メトリクスを管理・保持するMeterRegistryを生成するFactoryクラス。

TimerConfig

classは、org.iplass.mtp.impl.micrometer.metrics.TimerConfigを指定します。

イベントのレイテンシや頻度を記録するメトリクスに対するヒストグラム・パーセンタイルの設定です。
以下の項目を設定可能です。各項目の詳細は、Histograms and percentilesを参照してください。

項目 説明

publishPercentiles

double、複数指定可

アプリケーション側で計算して公開するパーセンタイル値の設定。

publishPercentileHistogram

boolean

trueの場合、パーセンタイル近似値を計算するのに適したヒストグラムを公開する。minimumExpectedValueとmaximumExpectedValueで設定された範囲内のメトリクスのみを対象とする。

maximumExpectedValue

double

ヒストグラムの対象となるバケット数を制御するために利用される範囲の最大値。

minimumExpectedValue

double

ヒストグラムの対象となるバケット数を制御するために利用される範囲の最小値。

serviceLevelObjectives

long、複数指定可

SLOで定義されたバケットで累積ヒストグラムを公開する。

DistributionSummaryConfig

classは、org.iplass.mtp.impl.micrometer.metrics.DistributionSummaryConfigを指定します。

イベントの分布を追跡するためのメトリクスに対するヒストグラム・パーセンタイルの設定です。
以下の項目を設定可能です。各項目の詳細は、Histograms and percentilesを参照してください。

項目 説明

publishPercentiles

double、複数指定可

パーセンタイル値。指定したパーセンタイル値をアプリケーション側で計算して公開する。

publishPercentileHistogram

boolean

trueの場合、パーセンタイル近似値を計算するのに適したヒストグラムを公開する。minimumExpectedValueとmaximumExpectedValueで設定された範囲内のメトリクスのみを対象とする。

maximumExpectedValue

double

ヒストグラムの対象となるバケット数を制御するために利用される範囲の最大値。

minimumExpectedValue

double

ヒストグラムの対象となるバケット数を制御するために利用される範囲の最小値。

serviceLevelObjectives

double、複数指定可

SLOで定義されたバケットで累積ヒストグラムを公開する。

EntityEventMetricsInterceptor

classは、org.iplass.mtp.impl.micrometer.metrics.entity.EntityEventMetricsInterceptorを指定します。

Entity操作のレイテンシ・実行回数をメトリクスとして記録するインターセプターです。Micrometerモジュールを適用した場合にデフォルトで追加されます。以下の項目を設定可能です。

項目 説明

provider

EntityEventMetricsTagsProvider

org.iplass.mtp.impl.micrometer.metrics.entity.EntityEventMetricsTagsProviderを実装するクラス。メトリクスに付与するタグをカスタマイズしたい場合に指定可能です。デフォルトでは、org.iplass.mtp.impl.micrometer.metrics.entity.DefaultEntityEventMetricsTagsProviderが使用されます。

MicrometerHttpClientBuilderFactory

classは、org.iplass.mtp.impl.micrometer.metrics.httpclient.MicrometerHttpClientBuilderFactoryを指定します。

対象のHttpClientにおける各Httpリクエストのリクエスト時間と回数、Httpコネクションプールの統計をメトリクスとして記録するようにカスタマイズしたHttpClientBuilderFactoryです。
Micrometerモジュールを依存関係に追加した場合に設定可能です。設定可能な項目はありません。

MeterBinder

classは、io.micrometer.core.instrument.binder.MeterBinderの実装クラスを指定します(複数指定可能)。

デフォルトでは、Micrometerのcoreモジュールに含まれる以下のMeterBinderを指定しています。設定可能な項目はありません。

  • io.micrometer.core.instrument.binder.jvm.JvmGcMetrics

  • io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics

  • io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics

  • io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics

  • io.micrometer.core.instrument.binder.logging.LogbackMetrics

  • io.micrometer.core.instrument.binder.system.ProcessorMetrics

  • io.micrometer.core.instrument.binder.system.UptimeMetrics

  • io.micrometer.core.instrument.binder.system.FileDescriptorMetrics

また、標準で以下のMeterBinderを提供します。

TomcatMeterBinder

classは、org.iplass.mtp.impl.micrometer.metrics.tomcat.TomcatMeterBinderを指定します。

Tomcatのスレッドやセッション、リクエスト総数などのメトリクスを登録するMeterBinderです。設定可能な項目はありません。

TomcatDbcp2MeterBinder

classは、org.iplass.mtp.impl.micrometer.metrics.jdbc.tomcatdbcp2.TomcatDbcp2MeterBinderを指定します。

Tomcat dbcp2(org.apache.tomcat.dbcp.dbcp2)のコネクションプールに関するメトリクスを登録するMeterBinderです。以下の項目を設定可能です。

項目 説明

poolName

String

コネクションプール名。デフォルト値は"mtpPool"です。

CommonsDbcp2MeterBinder

classは、org.iplass.mtp.impl.micrometer.metrics.jdbc.commonsdbcp2.CommonsDbcp2MeterBinderを指定します。

Commons dbcp2(org.apache.commons.dbcp2)のコネクションプールに関するメトリクスを登録するMeterBinderです。以下の項目を設定可能です。

項目 説明

poolName

String

コネクションプール名。デフォルト値は"mtpPool"です。

HikariCPMeterBinder

classは、org.iplass.mtp.impl.micrometer.metrics.jdbc.hikaricp.HikariCPMeterBinderを指定します。

HikariCPのコネクションプールに関するメトリクスを登録するMeterBinderです。設定可能な項目はありません。

PathResolver

classは、org.iplass.mtp.impl.micrometer.metrics.web.PathResolverの実装クラスを指定します(複数指定可能)。

ActionとWebAPIのメトリクスにURIタグとして紐づけるPathを解決するためのResolverクラスです。RequestContextからPathを構築するロジックを記述します。

actionPathResolver(webApiPathResolver)に定義される順番でPathResolver#resolveを順に呼び出し、null以外が返ってきた時点でその返却結果をURIタグに紐づけます。最後のPathResolver#resolveの呼び出し時にその返却結果がnullだった場合は、デフォルトとして、Action名(WebAPI名)のみをURIタグに紐づけます(SubPathは含まれません)。

また、カスタムでcustomTagActionPathResolver(customTagWebApiPathResolver)に定義される順番でPathResolver#resolveを順に呼び出し、null以外が返ってきた時点でその返却結果を指定されたタグに紐づけることができます。

標準で以下のPathResolverを定義しています。

DefaultActionPathResolver

classは、org.iplass.mtp.impl.micrometer.metrics.web.action.DefaultActionPathResolverを指定します。

GEM標準ActionのPathを解決するResolverクラスです。パラメータマッピングに定義名が指定されている場合、"Action名+定義名"を返却します。設定可能な項目はありません。

DefaultWebApiPathResolver

classは、org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiPathResolverを指定します。

GEM標準WebAPI、Entity CRUD APIのPathを解決するResolverクラスです。設定可能な項目はありません。

  • GEM標準WebAPIについては、パラメータマッピングに定義名が指定されている場合、"WebAPI名+定義名"を返却します。

  • Entity CRUD APIについては、SubPathが存在する場合、"WebAPI名+SubPathの最初のパス"を返却します。

ActionHierarchicalPathResolver

classは、org.iplass.mtp.impl.micrometer.metrics.web.action.ActionHierarchicalPathResolverを指定します。

GEM標準ActionのPathにおいて、階層の深さが指定されたPathを解決するResolverクラスです。階層指定する深さを指定します。
例えば、uriがgem/generic/search/view/test、depthが2の場合、値にはgem/genericが入ります。
以下の項目を設定可能です。

項目 説明

depth

int

階層指定する深さ。1以上の値を指定します。

WebApiHierarchicalPathResolver

classは、org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiHierarchicalPathResolverを指定します。

GEM標準WebAPI、Entity CRUD APIのPathにおいて、階層の深さが指定されたPathを解決するResolverクラスです。階層指定する深さを指定します。
例えば、uriがgem/workflow/getUserTaskListParts、depthが2の場合、値にはgem/workflowが入ります。
以下の項目を設定可能です。

項目 説明

depth

int

階層指定する深さ。1以上の値を指定します。

MeterRegistryCustomizer

classは、org.iplass.mtp.impl.micrometer.MeterRegistryCustomizerの独自実装クラスを指定してください。

org.iplass.mtp.impl.micrometer.MeterRegistryCustomizerの実装クラスにて、メトリクスの設定を独自にカスタマイズするロジックを記述します。

MeterRegistryFactory

classは、org.iplass.mtp.impl.micrometer.registry.MeterRegistryFactoryの実装クラスを指定します。

標準で、以下のMeterRegistryFactoryを提供します。

ElasticMeterRegistryFactory

classは、org.iplass.mtp.impl.micrometer.registry.elastic.ElasticMeterRegistryFactoryを指定します。

Elasticsearchに対応したio.micrometer.elastic.ElasticMeterRegistryのFactoryクラスです。このクラスを指定する場合は、 io.micrometer:micrometer-registry-elastic を実行時の依存関係に追加してください。以下の項目を設定可能です。

項目 説明

configMap

String、Map形式

ElasticMeterRegistryの設定パラメータです。主要な設定項目は以下の通りです。

  • host : Elasticsearchのホスト

  • index : メトリクスの格納先インデックス(デフォルト値は、"micrometer-metrics"です。)

  • step : メトリクスの送信間隔(デフォルト値は、"1m"です。)

設定可能な全ての項目の詳細は、ElasticConfigのJavaDocを参照してください。

httpSender

HttpSender

Httpリクエストの送信方式を制御するクラスです。

HttpSender

classは、io.micrometer.core.ipc.http.HttpSenderの実装クラスを指定します。

標準では、以下のHttpSenderを提供します。指定しない場合は、HttpUrlConnectionSenderが使用されます。

AWSHttpSender

classは、org.iplass.mtp.impl.aws.micrometer.AWSHttpSenderを指定します。

Amazon OpenSearch Serviceに対応したHttpSenderの実装クラスです。AWSSettingでアクセスキー、シークレットキー、AWSClient側の設定が可能です。以下の項目を設定可能です。

項目 説明

serviceName

String

サービス名。デフォルト値は"es"です。
Amazon OpenSearch Serviceを利用する場合は、デフォルト値を変更しないでください。

region

String

Amazon OpenSearch Serviceのリージョン。

HttpUrlConnectionSender

classは、io.micrometer.core.ipc.http.HttpUrlConnectionSenderです。

デフォルトで使用されるHttpSenderの実装クラスです。 configMap にMap形式でパラメータを指定してください。設定可能な項目は以下の通りです。

項目 説明

connectTimeoutMs

String

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は1000(1秒)です。

readTimeoutMs

String

レスポンス読み取り完了時間のタイムアウト(ミリ秒)。デフォルト値は10000(10秒)です。

proxyHost

String

proxyを利用する場合のHost名。

proxyPort

int

proxyを利用する場合のport。

JmxMeterRegistryFactory

classは、org.iplass.mtp.impl.micrometer.registry.jms.JmxMeterRegistryFactoryを指定します。

JMXに対応したio.micrometer.jmx.JmxMeterRegistryのFactoryクラスです。このクラスを指定する場合は、 io.micrometer:micrometer-registry-jmx を実行時の依存関係に追加してください。以下の項目を設定可能です。

項目 説明

configMap

String、Map形式

JmxMeterRegistryの設定パラメータです。主要な設定項目は以下の通りです。

  • domain : メトリクスを公開するJMXドメイン(デフォルト値は、"metrics"です。)

設定可能な全ての項目の詳細は、JmxConfigのJavaDocを参照してください。

tagsAsPrefix

String、複数指定可能

全てのメトリクスに共通して付与する接頭辞を指定します。

PrometheusMeterRegistryFactory

classは、org.iplass.mtp.impl.micrometer.registry.prometheus.PrometheusMeterRegistryFactoryを指定します。

Prometheusに対応したio.micrometer.prometheus.PrometheusMeterRegistryのFactoryクラスです。このクラスを指定する場合は、 io.micrometer:micrometer-registry-prometheus を実行時の依存関係に追加してください。以下の項目を設定可能です。

項目 説明

configMap

String、Map形式

PrometheusMeterRegistryの設定パラメータです。主要な設定項目は以下の通りです。

  • step : 最大値や平均などの統計を計算する際に使用するステップ間隔。統計情報を最大限活用するためには、ステップ間隔をPrometheusのスクレイプ間隔に近づけるように設定してください。(デフォルトは、1分です。)

設定可能な全ての項目の詳細は、、PrometheusConfigのJavaDocを参照してください。

CloudWatchMeterRegistryFactory

classは、org.iplass.mtp.impl.aws.micrometer.registry.cloudwatch.CloudWatchMeterRegistryFactoryを指定します。

Amazon CloudWatchに対応したio.micrometer.cloudwatch.CloudWatchMeterRegistryのFactoryクラスです。AWSモジュールを依存関係に追加した場合に指定可能です。このクラスを指定する場合は、 io.micrometer:micrometer-registry-cloudwatch を実行時の依存関係に追加してください。
AWSSettingでアクセスキー、シークレットキー、AWSClient側の設定が可能です。以下の項目を設定可能です。

項目 説明

configMap

String、Map形式

CloudWatchMeterRegistryの設定パラメータです。主要な設定項目は以下の通りです。

  • region : CloudWatchのリージョン

  • namespace : 送信したカスタムメトリクスを保持する名前空間(デフォルト値は、"micrometer-namespace"です。)

  • step : メトリクスの送信間隔(デフォルト値は、"1m"です。)

設定可能な全ての項目の詳細は、CloudWatchConfigのJavaDocを参照してください。

NewRelicMeterRegistryFactory

classは、org.iplass.mtp.impl.micrometer.registry.newrelic.NewRelicMeterRegistryFactoryを指定します。

New Relicに対応したcom.newrelic.telemetry.micrometer.NewRelicRegistryのFactoryクラスです。このクラスを指定する場合は、 com.newrelic.telemetry:micrometer-registry-new-relic を実行時の依存関係に追加してください。
以下の項目を設定可能です。

項目 説明

configMap

String、Map形式

NewRelicRegistryの設定パラメータです。主要な設定項目は以下の通りです。

  • apiKey : APIキー

  • serviceName : サービス名

  • step : メトリクスの送信間隔(デフォルト値は、"1m"です。)

設定可能な全ての項目の詳細は、NewRelicRegistryConfigのJavaDocを参照してください。

httpSender

HttpSender

Httpリクエストの送信方式を制御するクラスです。

LoggingMeterRegistryFactory

classは、org.iplass.mtp.impl.micrometer.registry.logging.LoggingMeterRegistryFactoryを指定します。

ログ出力に対応したio.micrometer.core.instrument.logging.LoggingMeterRegistryのFactoryクラスです。ログ出力するため、logback.xmlにロガー名をio.micrometer.core.instrument.logging.LoggingMeterRegistry、ログレベルをINFOで指定してください。
以下の項目を設定可能です。

項目 説明

configMap

String、Map形式

LoggingMeterRegistryの設定パラメータです。主要な設定項目は以下の通りです。

  • step : メトリクスの送信間隔(デフォルト値は、"1m"です。)

設定可能な全ての項目の詳細は、LoggingRegistryConfigのJavaDocを参照してください。

設定例
<service>
    <interface>org.iplass.mtp.impl.micrometer.MicrometerService</interface>

    <!-- ■ Custom Metrics Settings ■ -->
    <!-- Entity CRUD操作のレイテンシ -->
    <property name="enableEntityMetrics" value="true" />
    <property name="entityConfig" class="org.iplass.mtp.impl.micrometer.metrics.TimerConfig">
        <!--
        <property name="publishPercentiles" value="0.5" />
        <property name="publishPercentiles" value="0.9" />
        <property name="publishPercentiles" value="0.99" />
        -->
    </property>

    <!-- Actionのレイテンシ -->
    <property name="enableActionLatencyMetrics" value="true" />
    <property name="actionConfig" class="org.iplass.mtp.impl.micrometer.metrics.TimerConfig">
        <!--
        <property name="publishPercentiles" value="0.5" />
        <property name="publishPercentiles" value="0.9" />
        <property name="publishPercentiles" value="0.99" />
        -->
    </property>

    <!-- WebAPIのレイテンシ -->
    <property name="enableWebApiLatencyMetrics" value="true" />
    <property name="webApiConfig" class="org.iplass.mtp.impl.micrometer.metrics.TimerConfig">
        <!--
        <property name="publishPercentiles" value="0.5" />
        <property name="publishPercentiles" value="0.9" />
        <property name="publishPercentiles" value="0.99" />
        -->
    </property>

    <!-- Action、WebAPIのSQL発行回数 -->
    <property name="enableSqlExecutionMetrics" value="true" />
    <property name="sqlConfig" class="org.iplass.mtp.impl.micrometer.metrics.DistributionSummaryConfig">
        <!--
        <property name="publishPercentiles" value="0.5" />
        <property name="publishPercentiles" value="0.9" />
        <property name="publishPercentiles" value="0.99" />
        -->
    </property>

    <!-- HttpClientのリクエスト発行回数、レイテンシ、ConnectionManagerメトリクス -->
    <property name="enableHttpClientMetrics" value="true" />

    <!-- CacheStoreのサイズ、ヒット/ミス回数 -->
    <property name="enableCacheStoreMetrics" value="true" />

    <!-- 認証試行の成功・失敗回数 -->
    <property name="enableAuthenticationMetrics" value="true" />

    <!-- 非同期処理の成功・失敗回数、処理時間 -->
    <property name="enableAsyncMetrics" value="true" />

    <!-- S3の処理時間とリクエスト回数 -->
    <property name="enableS3Metrics" value="true" />

    <!-- メールの成功・失敗回数、処理時間 -->
    <property name="enableMailMetrics" value="true" />

    <!-- プッシュ通知の成功・失敗回数、処理時間 -->
    <property name="enablePushMetrics" value="true" />

    <!-- SMSの成功・失敗回数、処理時間 -->
    <property name="enableSmsMetrics" value="true" />

    <!-- ■ MeterBinder Settings ■ -->
    <!-- jvm -->
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.JvmGcMetrics" />
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics" />
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics" />
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics" />

    <!-- logging -->
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.logging.LogbackMetrics" />

    <!-- system -->
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.system.UptimeMetrics" />
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.system.ProcessorMetrics" />
    <property name="meterBinder" class="io.micrometer.core.instrument.binder.system.FileDescriptorMetrics" />

    <!-- tomcat -->
    <!--
    <property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.tomcat.TomcatMeterBinder" />
    -->

    <!-- Tomcat dbcp2 (tomcat default) -->
    <!--
    <property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.jdbc.tomcatdbcp2.TomcatDbcp2MeterBinder">
        <property name="poolName" value="mtpPool" />
    </property>
    -->

    <!-- commons dbcp 2 -->
    <!--
    <property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.jdbc.commonsdbcp2.CommonsDbcp2MeterBinder">
        <property name="poolName" value="mtpPool" />
    </property>
    -->

    <!-- hikari cp -->
    <!--
    <property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.jdbc.hikaricp.HikariCPMeterBinder" />
    -->


    <!-- ■ CommonTags Settings ■ -->
    <!--
    <property name="commonTags" >
        <property name="tagKey1" value="tagValue1" />
        <property name="tagKey2" value="tagValue2" />
        <property name="tagKey3" value="tagValue3" />
    </property>
     -->

     <!-- ■ PathResolver Settings ■ -->
    <property name="actionPathResolver" class="org.iplass.mtp.impl.micrometer.metrics.web.action.DefaultActionPathResolver" />
    <property name="webApiPathResolver" class="org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiPathResolver" />

    <!-- ■ Custom PathResolver Settings ■ -->
    <!--
    <property name="customTagActionPathResolver">
        <property name="customHierarchicalUri1" class="org.iplass.mtp.impl.micrometer.metrics.web.action.ActionHierarchicalPathResolver">
            <property name="depth" value="1" />
        </property>
    </property>

    <property name="customTagWebApiPathResolver">
        <property name="customHierarchicalUri1" class="org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiHierarchicalPathResolver">
            <property name="depth" value="1" />
        </property>
    </property>
    -->

     <!-- ■ Customizer Settings ■ -->
    <!--
    <property name="customizerClass" value="yourCustomizerClassName" />
     -->

    <!-- ■ MeterRegistry Settings ■ -->
    <!--
        利用するモニタリングシステムを有効にし、必要に応じてプロパティを追加/変更してください。
    -->
    <!-- for Elastic -->
    <!--
    <property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.elastic.ElasticMeterRegistryFactory">
    -->
        <!-- ■ Amazon OpenSearch Serviceを利用する場合は、コメントアウトを外し、プロパティを変更してください。■ -->
        <!--
        <property name="httpSender" class="org.iplass.mtp.impl.aws.micrometer.AWSHttpSender">
            <property name="serviceName" value="es" />
            <property name="region" value="yourESRegion" />
        </property>
        -->
    <!--
        <property name="configMap" >
            <property name="host" value="yourElasticHost" />
            <property name="step" value="1m" />
            <property name="index" value="micrometer-metrics" />
            <property name="connectTimeoutMs" value="2000" />
        </property>
    </property>
    -->

    <!-- for Jmx -->
    <!--
    <property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.jmx.JmxMeterRegistryFactory">
        <property name="configMap" >
            <property name="domain" value="metrics" />
        </property>
        <property name="tagsAsPrefix" value="prefix1" />
    </property>
     -->

    <!-- for Prometheus -->
    <!--
    <property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.prometheus.PrometheusMeterRegistryFactory">
        <property name="configMap" >
        </property>
    </property>
    -->

    <!-- for CloudWatch -->
    <!--
    <property name="meterRegistryFactory" class="org.iplass.mtp.impl.aws.micrometer.registry.cloudwatch.CloudWatchMeterRegistryFactory">
        <property name="configMap" >
            <property name="step" value="1m" />
            <property name="region" value="yourRegion" />
            <property name="namespace" value="micrometer-namespace" />
        </property>
    </property>
    -->

    <!-- for New Relic -->
    <!--
    <property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.newrelic.NewRelicMeterRegistryFactory">
        <property name="configMap" >
            <property name="step" value="1m" />
            <property name="apiKey" value="yourApiKey" />
        </property>
    </property>
    -->

    <!-- for Logging -->
    <!--
    <property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.logging.LoggingMeterRegistryFactory">
        <property name="configMap" >
            <property name="step" value="1m" />
        </property>
    </property>
    -->
</service>

3.43. OAuthAuthorizationService

OAuth2.0 Authorization ServerおよびOpenID Connect Providerの機能を管理するためのサービスです。

インタフェース名

org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService

実装クラス名

org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService

OAuthAuthorizationServiceの設定

OAuthAuthorizationServiceを設定します。

設定項目
項目 説明

paramStateRequired

boolean

Authorization Request時にstateパラメータを必須とするか否かを設定します。
デフォルト値はtrueです。

paramNonceRequired

boolean

Authorization Request時にnonceパラメータを必須とするか否かを設定します。
デフォルト値はfalseです。

forcePKCE

boolean

Public Clientに対してPKCE (Proof Key for Code Exchange by OAuth Public Clients) を必須とするか否かを設定します。
デフォルト値はtrueです。

forceS256ForCodeChallengeMethod

boolean

PKCEのCodeChallengeMethodにS256を強制するか否かを設定します。
デフォルト値はtrueです。

defaultConsentTemplateName

String

OAuthのscopeのデフォルトの承認画面のテンプレート名を指定します。

authorizationCodeStore

AuthorizationCodeStore

AuthorizationCodeStoreの設定。

accessTokenStore

OAuthAccessTokenStore

OAuthAccessTokenStoreの設定。

jwtProcessor

JwtProcessor

JwtProcessorの設定。

jwtKeyStore

JwtKeyStore

JwtKeyStoreの設定。

subjectIdHashAlgorithm

String

resource ownerのsubject idをClientへ公開する際に、ハッシュする場合のアルゴリズムを指定します。

subjectIdHashAlgorithm

String

subject idをハッシュする際のソルト値を指定します。

idTokenLifetimeSeconds

long

ID Tokenを発行する場合の有効期限(秒)を指定します。
未指定の場合のデフォルト値は3600です。

AuthorizationCodeStore

classはorg.iplass.mtp.impl.auth.oauth.code.AuthorizationCodeStoreの実装クラスを指定します。

標準で、以下のAuthorizationCodeStoreを提供します。

CacheAuthorizationCodeStore

classはorg.iplass.mtp.impl.auth.oauth.code.CacheAuthorizationCodeStoreを指定します。

CacheStoreで認証コードを管理します。 以下の項目を設定可能です。

項目 説明

secureRandomGeneratorName

String

SecureRandomService に定義される認証コード文字列の生成器を指定します。 未設定の場合、 oauthAuthorizationCodeGenerator のSecureRandomGeneratorが利用されます。

cacheStoreName

String

CacheService に定義されるCacheStore(CacheStoreFactory)の名前を指定します。 未指定の場合のデフォルト値は mtp.oauth.codeStore です。

クラスタ環境においては、CacheStoreFactoryはRedisCacheStoreFactoryなど複数のAPサーバから同一のキャッシュを参照可能なCacheStoreFactoryを利用してください。

timeToLive

long

認証コードの有効期限(ミリ秒)を指定します。 未指定の場合のデフォルト値は 180000 (3分)です。

OAuthAccessTokenStore

classはorg.iplass.mtp.impl.auth.oauth.token.OAuthAccessTokenStoreの実装クラスを指定します。

標準で、以下のOAuthAccessTokenStoreを提供します。

OpaqueOAuthAccessTokenStore

classはorg.iplass.mtp.impl.auth.oauth.token.opaque.OpaqueOAuthAccessTokenStoreを指定します。 AcessTokenの形式としてはOpaque(Handle)形式となります。 AcessTokenはAuthTokenStoreを利用して保存されます。

OpaqueOAuthAccessTokenStoreの場合、 AcessTokenはClient × ResourceOwner単位に一つ発行されます。

以下の項目を設定可能です。

項目 説明

authTokenType

String

AccessTokenHandlerに定義されるtypeを指定します。 未指定の場合のデフォルト値は OAT です。 AccessTokenHandlerについては、 AuthTokenService の説明を参照ください。

seriesHashAlgorithm

String

AccessTokenを一意に特定する際に利用するキーを生成する際のハッシュアルゴリズムを設定します。 未指定の場合のデフォルト値は SHA-256 です。

seriesHashSalt

String

AccessTokenを一意に特定する際に利用するキーを生成する際のハッシュに利用するSaltです。 環境毎に異なるランダムな文字列を指定することを推奨します。

tokenCreationStrategy

TokenCreationStrategy

AccessTokenの生成方法を示すTokenCreationStrategyを設定します。

RemoteOAuthAccessTokenStore

classはorg.iplass.mtp.impl.auth.oauth.token.remote.RemoteOAuthAccessTokenStoreを指定します。

バックエンドでOAuth 2.0 Token Introspection (RFC7662)を呼び出すTokenStoreの実装です。 当該設定が適用されたiPLAssのインスタンスはResource Serverとして動作します。 リモートに起動しているAuthorization ServerからAccessTokenを取得し検証します。

RemoteOAuthAccessTokenStoreは読み取り専用です。 Authorization Serverの機能は実装されませんので、AccessTokenを更新するメソッドを呼び出した場合、ランタイム例外がスローされます。

以下の項目を設定可能です。

項目 説明

introspectionEndpointUrl

String

Introspection EndpointのURLを指定します。 Authorization ServerもiPLAssである場合で、マルチテナントアプリケーションの場合、テナント単位にEndpointが異なります。 その場合、 ${tenantName} の変数名でtenant名をURLへ埋め込むことが可能です。

例: https://localhost:8080/mtp/${tenantName}/api/oauth/introspect

authenticationMethod

ClientAuthenticationMethod

Introspection EndpointのClient(Resource Server)認証方式を指定します。 次のいずれかを指定します。

CLIENT_SECRET_BASIC

BASIC認証によりClient認証します

CLIENT_SECRET_POST

POSTパラメータ(client_id, client_secret)にてClinent認証します

NONE

Client認証用のパラメータを付与しません

未指定の場合のデフォルト値は CLIENT_SECRET_BASIC です。

resourceServerId

String

Authorization Serverから発行されるResource ServerのIDを指定します。

resourceServerSecret

String

Authorization Serverから発行されるResource ServerのSecretを指定します。

tenantValidationType

TenantValidationType

テナントの検証方式を指定します。 次のいずれかを指定します。

NONE

Authorization ServerがiPLAssではない場合、もしくはテナントの検証が必要ない場合

ID

Authorization ServerもiPLAssである場合、Introspection EndpointのレスポンスからテナントIDを取得し、ResourceServerのテナントと一致しているかを検証します。Authorization ServerとResource Serverで同一のDB、テナント情報を共有する場合の利用を想定しています。
テナントIDはレスポンスに tenant_id というパラメータ名で格納されている必要があります。

NAME

Authorization ServerもiPLAssである場合、Introspection Endpointのレスポンスからテナント名を取得し、ResourceServerのテナント名と一致しているかを検証します。Authorization ServerとResource ServerでDB、テナント情報を分離する場合(別マイクロサービスとして一式分離する場合)、テナントIDの一致は難しいため、テナント名の一致で同一テナントとみなします。
テナント名はレスポンスに tenant_name というパラメータ名で格納されている必要があります。

未指定の場合のデフォルト値は NAME です。

reloadUser

boolean

AccessTokenに紐づくユーザー情報の取得方法を制御します。

trueの場合

レスポンスの sub の値をoidとみなし、Resource Server上からUserエンティティを検索します。Userが存在しない場合、許可しません。

falseの場合

レスポンスからユーザー情報を取得します。
レスポンスに resource_owner でUserエンティティのJSON表現が格納されていた場合、それを利用します。
resource_owner に格納されていなかった場合、 sub の値をoid、accountIdとし、 username の値をnameとしてユーザー情報とします。

未指定の場合のデフォルト値は false です。

httpClientConfig

HttpClientConfig

WebApi呼び出し時のHTTPコネクションに関する設定。

exponentialBackoff

ExponentialBackoff

ExponentialBackoffクラスのプロパティにてリトライ処理する際の 指数バックオフ の設定。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。 以下の項目を設定可能です。

項目 説明

proxyHost

String

proxyを利用する場合のHost名。

proxyPort

int

proxyを利用する場合のport。

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)をミリ秒で指定します。デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

ExponentialBackoff

classはorg.iplass.mtp.impl.http.ExponentialBackoffを指定します。 以下の項目を設定可能です。

項目 説明

retryIntervalMillis

int

リトライ間隔をミリ秒で指定します。デフォルト値は500です。

randomizationFactor

double

リトライ時のランダム要素。 0.5の場合、retryIntervalMillisに指定した値が上下25%の範囲で変動します。デフォルト値は0.5です。

multiplier

double

リトライ時のリトライ間隔の指数要素。 1.5の、retryIntervalMillisが500の場合、2回目のリトライは750ms、3回目のリトライは1125msのリトライ間隔で行われます。デフォルト値は1.5です。

maxIntervalMillis

int

最大リトライ間隔です。 デフォルト値は60000(1分)です。

maxElapsedTimeMillis

int

最大のリトライ実行時間。 この時間の間にリトライ処理が成功しなかった場合は、リトライ処理を完了し、アプリケーション側にその時点までの結果を返却します。 デフォルト値は300000(5分)です。

TokenCreationStrategy

classはorg.iplass.mtp.impl.auth.oauth.token.opaque.TokenCreationStrategyの実装クラスを指定します。

標準で、以下のTokenCreationStrategyを提供します。

NewTokenCreationStrategy

classはorg.iplass.mtp.impl.auth.oauth.token.opaque.NewTokenCreationStrategyを指定します。

AccessToken取得要求の都度新しいAccessTokenを生成します。 新しいAccessTokenが生成された場合、当該Client、ResourceOwner向けに以前に発行されたAccessTokenは無効となります。

SameTokenCreationStrategy

classはorg.iplass.mtp.impl.auth.oauth.token.opaque.SameTokenCreationStrategyを指定します。

AccessToken取得要求された場合、当該Client、ResourceOwner向けに発行された既存の有効なAccessTokenがある場合、同一のものを返却します。 既存のAccessTokenを返却するため、そのAccessTokenの有効期間は取得時点においては短い場合もあります。

例えば、ユーザーが複数の端末を所持しており、且つそれらが同一Clientとして定義されている場合などにおいて、有効なAccessTokenを奪い合う状況を回避できます。

以下の項目を設定可能です。

項目 説明

retryCount

int

AccessTokenの発行処理に失敗した場合のリトライ回数を設定可能です。 未指定の場合のデフォルト値は0(リトライしない)です。

retryIntervalMillis

long

リトライする際のリトライ間隔(ミリ秒)を指定します。 未指定の場合のデフォルト値は0です。

JwtProcessor

classはorg.iplass.mtp.impl.auth.oauth.jwt.JwtProcessorの実装クラスを指定します。

JWT(Json Web Token)の生成処理の設定を行います。 標準で、以下のJwtProcessorを提供します。

JjwtProcesor

classはorg.iplass.mtp.impl.auth.oauth.jwt.JjwtProcesorを指定します。

JWTの生成処理にライブラリJJWT(Java JWT)を利用します。 以下の項目を設定可能です。

項目 説明

useRsaSsaPss

boolean

RSAベースの署名アルゴリズムに、RSASSA-PKCS1-v1_5ではなくRSASSA-PSSを利用する場合にtrueを指定します。 未指定の場合のデフォルト値はfalseです。

署名に利用する暗号鍵のアルゴリズムにより、次のようにJWTの署名方式が決定されます。

鍵アルゴリズム 鍵長 useRsaSsaPss JWT署名方式

RSA

4096以上

false

RS512

RSA

3072以上且つ4096未満

false

RS384

RSA

2048以上且つ3072未満

false

RS256

EC

521以上

*

ES512

EC

384以上且つ521未満

*

ES384

EC

256以上且つ384未満

*

ES256

RSA

4096以上

true

PS512

RSA

3072以上且つ4096未満

true

PS384

RSA

2048以上且つ3072未満

true

PS256

JwtKeyStore

classはorg.iplass.mtp.impl.auth.oauth.jwt.JwtKeyStoreの実装クラスを指定します。

JWTへの署名は、iPLAssでは公開鍵暗号方式ベースの署名をサポートします。 その際に利用する鍵ペア(公開鍵/秘密鍵)を管理します。 標準で、以下のJwtKeyStoreを提供します。

SimpleJwtKeyStore

classはorg.iplass.mtp.impl.auth.oauth.jwt.SimpleJwtKeyStoreを指定します。

Java Key StoreベースのJwtKeyStoreの実装です。 次の特徴を持ちます。

  • KeyStoreのaliasがkid(Key ID)となる

  • KeyStoreに格納される公開鍵証明書の有効期間を用いて鍵の有効期間を管理する

以下の項目を設定可能です。

項目 説明

keyStoreType

String

KeyStoreのタイプ。デフォルト値は PKCS12 です 。

keyStoreProvider

String

KeyStoreのプロバイダ。未指定の場合は、標準のプロバイダが利用されます。

keyStoreFilePath

String

KeyStoreのリソースパス(classpath配下)もしくはファイルパス(OS上のファイルとして)。

keyStorePassword

String

KeyStoreのパスワード。

keyPasswordMap

Map形式

keyPasswordを個別のKey毎に異なるものを付与する場合、nameにalias名、valueにパスワードを指定する形で定義します。 keyPasswordMapを指定しない場合、keyPasswordにはkeyStorePasswordの値が利用されます。

keyStoreReloadIntervalMinutes

int

KeyStoreをリロードする間隔(分)を設定します。 未設定の場合、リロードしません。

rollOverType

JwtKeyRolloverType

鍵のロールオーバー方式を設定します。 デフォルト値は OLDER です。

rollOverDaysBeforeExpire

long

rollOverTypeが BEFORE_N_DAYS の場合に、切り替える日数。

JwtKeyRolloverType

鍵の有効期間が迫った場合のロールオーバー方式を指定します。 複数の(新旧の)鍵がKeyStore内にある場合、どちらを利用するかを判断する方式です。 鍵の有効期間は公開鍵証明書の有効期間で判断します。

OLDER

有効期間が切れるまで、有効期間が短い(NotAfterが古い)証明書の鍵を利用

NEWER

有効期間内である証明書のうち、より有効期間が長い(NotAfterが新しい)証明書の鍵を利用

BEFORE_N_DAYS

有効期間が切れるrollOverDaysBeforeExpire日前に切り替える

設定例 (Authorization ServerとResource Serverが同一インスタンス)
<service>
    <interface>org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService</interface>
    <property name="defaultConsentTemplateName" value="oauth/Consent" />
    <property name="authorizationCodeStore" class="org.iplass.mtp.impl.auth.oauth.code.CacheAuthorizationCodeStore">
        <property name="timeToLive" value="180000" />
    </property>
    <property name="accessTokenStore" class="org.iplass.mtp.impl.auth.oauth.token.opaque.OpaqueOAuthAccessTokenStore">
        <property name="seriesHashAlgorithm" value="SHA-256" />
        <property name="seriesHashSalt" value="[salt for each environment]" />
        <property name="tokenCreationStrategy" class="org.iplass.mtp.impl.auth.oauth.token.opaque.NewTokenCreationStrategy" />
    </property>
    <property name="jwtProcessor" class="org.iplass.mtp.impl.auth.oauth.jwt.JjwtProcesor" />
    <property name="jwtKeyStore" class="org.iplass.mtp.impl.auth.oauth.jwt.SimpleJwtKeyStore">
        <property name="keyStoreFilePath" value="/conf/jwtKeyStore.jks" />
        <property name="keyStorePassword" value="[your jks store password]" />
        <property name="keyStoreReloadIntervalMinutes" value="1440" />
        <property name="rollOverType" value="BEFORE_N_DAYS" />
        <property name="rollOverDaysBeforeExpire" value="5" />
    </property>
    <property name="subjectIdHashAlgorithm" value="SHA-256" />
    <property name="subjectIdHashSalt" value="[yourOwnSalt]" />
</service>
設定例 (Resource Server)
<service>
    <interface>org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService</interface>
    <property name="accessTokenStore" class="org.iplass.mtp.impl.auth.oauth.token.remote.RemoteOAuthAccessTokenStore" inherit="false">
        <property name="introspectionEndpointUrl" value="http://localhost:8080/mtp/${tenantName}/api/oauth/introspect"/>
        <property name="resourceServerId" value="sampleRS"/>
        <property name="resourceServerSecret" value="AK08O9RvVzmTWrrSidS..."/>
        <property name="reloadUser" value="false"/>

        <property name="httpClientConfig">
            <property name="poolingMaxTotal" value="30"/>
        </property>
        <property name="exponentialBackoff">
            <property name="maxElapsedTimeMillis" value="60000"/>
        </property>
    </property>
</service>

3.44. ODataService

ODataサービスの動作を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.webapi.odata.ODataService

実装クラス名

org.iplass.mtp.impl.webapi.odata.ODataServiceImpl

ODataServiceの設定

ODataServiceを設定します。

設定項目
項目 説明

queryPaging

int

ODataのQuery操作時のデフォルトのページングサイズ。

設定例
<service>
    <interface>org.iplass.mtp.impl.webapi.odata.ODataService</interface>
    <class>org.iplass.mtp.impl.webapi.odata.ODataServiceImpl</class>
    <property name="queryPaging" value="20" />
</service>

3.45. OidCounter

oidの採番を行うサービスです。 採番を行うCounterServiceを利用します。 RDBのシーケンス採番機能の有無で設定を変える必要があります。 シーケンス機能が有る場合(デフォルト設定)は RdbSequenceCounterService を、 無い場合(MySQL)は CachableRdbTableCounterService を利用します。

インタフェース名

org.iplass.mtp.impl.counter.CounterService

実装クラス名

シーケンス機能が有る
org.iplass.mtp.impl.counter.RdbSequenceCounterService
シーケンス機能が無い
org.iplass.mtp.impl.counter.CachableRdbTableCounterService

RdbSequenceCounterService

RdbSequenceCounterServiceを設定します。

設定項目
項目 説明

sequenceNameMap

SequenceNameMap、複数指定可

採番を行う単位と採番テーブルのマッピング。

SequenceNameMap

採番を行う単位と採番テーブルのマッピングを設定します。 以下の項目が設定できます。

項目 説明

name

String

採番を行う単位の名前。

value

String

RDBのシーケンス名。

CachableRdbTableCounterServiceの設定

CachableRdbTableCounterServiceを設定します。

設定項目
項目 説明

separateTransaction

boolean

採番時にトランザクションを分けるか。デフォルト値はfalseです。

retryCount

int

採番失敗時にリトライする回数。デフォルト値は3です。

counterTypeName

String

採番タイプの名前。デフォルト値は defaultCounter です

cacheSize

int

キャッシュサイズ。デフォルト値は20です。

設定例
<!-- デフォルト設定 -->
<service name="OidCounter">
    <interface>org.iplass.mtp.impl.counter.CounterService</interface>
    <class>org.iplass.mtp.impl.counter.RdbSequenceCounterService</class>
    <property name="sequenceNameMap">
        <property name="oid" value="SEQ_OBJ_ID" />
        <property name="rbid" value="SEQ_RB_ID" />
        <property name="lobid" value="SEQ_LOB_ID" />
        <property name="logid" value="SEQ_LOG_ID" />
    </property>
</service>

<!-- MySQL -->
<service name="OidCounter">
    <interface>org.iplass.mtp.impl.counter.CounterService</interface>
    <class>org.iplass.mtp.impl.counter.CachableRdbTableCounterService</class>
    <property name="counterTypeName" value="OidCounter" />
    <property name="cacheSize" value="20" />
    <property name="retryCount" value="3" />
</service>

3.46. OnetimeCodeGeneratorService

二段階認証のワンタイム認証コードを生成するサービスです。

インタフェース名

org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService

実装クラス名

org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService

OnetimeCodeGeneratorServiceの設定

ワンタイム認証コードの生成について設定します。

設定項目
項目 説明

generator

OnetimeCodeGenerator、複数指定可

ワンタイム認証コードの生成器の設定。

OnetimeCodeGenerator

classはorg.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorの実装クラスを指定します。

標準で、外部送信するワンタイム認証コードを生成するorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandOnetimeCodeGeneratorを提供します。 OutOfBandOnetimeCodeGeneratorの設定可能な項目は以下になります。

OutOfBandOnetimeCodeGenerator

外部送信するワンタイム認証コードを生成するワンタイム認証コード生成器です。 以下の項目を設定可能です。

項目 説明

name

String

ワンタイム認証コード生成器の名前。

maxFailureCount

int

最大認証失敗回数。デフォルト値は5です。

lifetimeSeconds

long

ワンタイム認証コードの有効時間。デフォルト値は180(3分)です。

store

OnetimeCodeStore

ワンタイム認証コードの保持方式。

sender

OutOfBandSender

ワンタイム認証コードの外部送信方式。

strategy

GenerateStrategy

ワンタイム認証コードの生成方式。

OnetimeCodeStore

classはorg.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeStoreの実装クラスを指定します。

標準で、ワンタイム認証コードをセッションに格納するorg.iplass.mtp.impl.auth.authenticate.onetime.SessionOntimeCodeStoreを提供します。 SessionOntimeCodeStoreは設定変更可能な項目はありません。

OutOfBandSender

classはorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandSenderの実装クラスを指定します。

標準で、ワンタイム認証コードをメール送信するorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSenderと、 SMS送信するorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSenderを提供します。

MailOutOfBandSender

classはorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSenderを指定します。

以下の項目を設定可能です。

項目 説明

mailTemplate

String

ワンタイム認証コードを送信するメールのテンプレート。

fromAddress

String

送信元メールアドレス。 テナントのメール送信設定で設定されているFromアドレスとは別のメールアドレスを使用する場合に設定します。

SmsOutOfBandSender

classはorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSenderを指定します。

以下の項目を設定可能です。

項目 説明

smsTemplate

String

ワンタイム認証コードを送信するSMSのテンプレート。

fromPhoneNumber

String

送信元電話番号。SmsServiceで設定されているdefaultFromとは別の電話番号を使用する場合に設定します。

GenerateStrategy

classはorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.GenerateStrategyの実装クラスを指定します。

標準で、数値のワンタイム認証コードを生成するorg.iplass.mtp.impl.auth.authenticate.onetime.outofband.NumberGenerateStrategyを提供します。 NumberGenerateStrategyは以下の項目を設定可能です。

項目 説明

numberOfDigits

int

数値の桁数。デフォルト値は6です。

設定例
<service>
    <interface>org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService</interface>
    <property name="generator"
       class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandOnetimeCodeGenerator">
        <property name="name" value="outOfBandByMail" />
        <property name="maxFailureCount" value="5" />
        <property name="lifetimeSeconds" value="180" />
        <property name="store"
            class="org.iplass.mtp.impl.auth.authenticate.onetime.SessionOntimeCodeStore" />
        <property name="sender"
            class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSender">
            <property name="mailTemplate" value="mtp/auth/onetime/SendCode" />
            <!-- if use another "from address" instead of tenant default "from address".
            <property name="fromAddress" value="noreply@xxx.dentsusoken.com" />
             -->
        </property>
        <property name="strategy"
            class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.NumberGenerateStrategy">
            <property name="numberOfDigits" value="6" />
        </property>
    </property>
    <property name="generator"
        class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandOnetimeCodeGenerator">
        <property name="name" value="outOfBandBySms" />
        <property name="maxFailureCount" value="5" />
        <property name="lifetimeSeconds" value="180" />
        <property name="store"
            class="org.iplass.mtp.impl.auth.authenticate.onetime.SessionOntimeCodeStore" />
        <property name="sender"
            class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSender">
            <property name="smsTemplate" value="mtp/auth/onetime/SendCodeSms" />
            <!-- if use another "from phone number" instead of SMSService's defaultFrom.
            <property name="fromPhoneNumber" value="+1234..." />
             -->
        </property>
        <property name="strategy"
            class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.NumberGenerateStrategy">
            <property name="numberOfDigits" value="6" />
        </property>
    </property>
</service>

3.47. OpenIdConnectService

OpenID Connect Relying Partyの機能を管理するためのサービスです。

インタフェース名

org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService

実装クラス名

org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService

OpenIdConnectServiceの設定

OpenIdConnectServiceを設定します。

設定項目
項目 説明

allowedClockSkewMinutes

int

許容されるクロックスキュー時間。デフォルト値は0(分)です。

jwksCacheLifetimeMinutes

int

jwksのキャッシュ時間。デフォルト値は360(分)です。

clientSecretType

String

Client Secretの種別。デフォルト値は OIDCCS です。

httpClientConfig

HttpClientConfig

HTTPクライアントの設定。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。

以下の項目を設定可能です。

項目 説明

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)(ミリ秒)。デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

proxyHost

String

プロキシサーバのホスト。

proxyPort

int

プロキシサーバのポート番号。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

設定例
<service>
    <interface>org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService</interface>
        <property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
            <property name="proxyHost" value="proxyhost.dentsusoken.com"/>
            <property name="proxyPort" value="8080"/>
        </property>
</service>

3.48. OutOfBandVerificationService

メールやSMSを利用して検証を行うためのサービスです。

インタフェース名

org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService

実装クラス名

org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService

OutOfBandVerificationServiceの設定

OutOfBandVerificationServiceを設定します。

設定項目
項目 説明

verifier

OutOfBandVerifier、複数指定可

アウトオブバンドを利用した検証の設定。

OutOfBandVerifier

アウトオブバンドを利用した検証の設定です。

classはorg.iplass.wam.impl.outofbandverify.OutOfBandVerifierを指定します。 以下の項目を設定可能です。

項目 説明

name

String

アウトオブバンドの名前。

outOfBand

OutOfBand

アウトオブバンドの設定。

strategy

VerifyStrategy

検証機能の設定。

store

VerificationStore

検証対象の保持設定。

OutOfBand

classはorg.iplass.wam.impl.outofbandverify.outofband.OutOfBandの実装クラスを指定します。

標準で以下のOutOfBandを提供しています。

MailOutOfBand

メール送信のためのOutOfBandです。

classはorg.iplass.wam.impl.outofbandverify.outofband.MailOutOfBandを指定します。 設定可能な項目はありません。

SMSOutOfBand

SMS送信のためのOutOfBandです。

classはorg.iplass.wam.impl.outofbandverify.outofband.SMSOutOfBandを指定します。 設定可能な項目はありません。

VerifyStrategy

classはorg.iplass.wam.impl.outofbandverify.strategy.VerifyStrategyの実装クラスを指定します。

標準で以下のVerifyStrategyを提供しています。

ActivationURLVerifyStrategy

アクティベーションURLによる検証を行います。

classはorg.iplass.wam.impl.outofbandverify.strategy.ActivationURLVerifyStrategyを指定します。 設定可能な項目はありません。

OnetimeCodeVerifyStrategy

ワンタイムコードによる検証を行います。

classはorg.iplass.wam.impl.outofbandverify.strategy.OnetimeCodeVerifyStrategyを指定します。 以下の項目を設定可能です。

項目 説明

numberOfDigits

int

ワンタイムコードの桁数。デフォルト値は6。

VerificationStore

classはorg.iplass.wam.impl.outofbandverify.store.VerificationStoreの実装クラスを指定します。

標準で以下のVerificationStoreを提供しています。

CacheVerificationStore

検証対象をキャッシュに保存します。

classはorg.iplass.wam.impl.outofbandverify.store.CacheVerificationStoreを指定します。 設定可能な項目はありません。

EntityVerificationStore

検証対象をEntityに保存します。

classはorg.iplass.wam.impl.outofbandverify.store.EntityVerificationStoreを指定します。 設定可能な項目はありません。

SessionVerificationStore

検証対象をユーザーのSessionに保存します。

classはorg.iplass.wam.impl.outofbandverify.store.SessionVerificationStoreを指定します。 設定可能な項目はありません。

設定例
<service>
    <interface>org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService</interface>
    <property name="verifier" class="org.iplass.wam.impl.outofbandverify.OutOfBandVerifier">
        <property name="name" value="email"/>
        <property name="outOfBand" class="org.iplass.wam.impl.outofbandverify.outofband.MailOutOfBand"/>
        <property name="strategy" class="org.iplass.wam.impl.outofbandverify.strategy.ActivationURLVerifyStrategy"/>
        <property name="store" class="org.iplass.wam.impl.outofbandverify.store.EntityVerificationStore"/>
    </property>
    <property name="verifier" class="org.iplass.wam.impl.outofbandverify.OutOfBandVerifier">
        <property name="name" value="mobileMail"/>
        <property name="outOfBand" class="org.iplass.wam.impl.outofbandverify.outofband.MailOutOfBand"/>
        <property name="strategy" class="org.iplass.wam.impl.outofbandverify.strategy.OnetimeCodeVerifyStrategy"/>
        <property name="store" class="org.iplass.wam.impl.outofbandverify.store.SessionVerificationStore"/>
    </property>
    <property name="verifier" class="org.iplass.wam.impl.outofbandverify.OutOfBandVerifier">
        <property name="name" value="sms"/>
        <property name="outOfBand" class="org.iplass.wam.impl.outofbandverify.outofband.SMSOutOfBand"/>
        <property name="strategy" class="org.iplass.wam.impl.outofbandverify.strategy.OnetimeCodeVerifyStrategy"/>
        <property name="store" class="org.iplass.wam.impl.outofbandverify.store.SessionVerificationStore"/>
    </property>
</service>

3.49. PropertyService

プロパティを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.entity.property.PropertyService

実装クラス名

org.iplass.mtp.impl.entity.property.PropertyService

PropertyServiceの設定

PropertyServiceを設定します。

設定項目
項目 説明

longTextInlineStoreMaxLength

int

LongText型の文字列をLobStoreに保存せず、DataStoreのレコード内部で保持する場合の最大サイズ(文字列長)。デフォルト値は1024です。文字列の先頭から設定された最大サイズ分がレコード内部に保持されます。 StoreServiceの StorageSpaceMap に定義されるvarcharColumnLengthがlongTextInlineStoreMaxLengthより小さい場合は、StorageSpaceMapの設定が優先されます。

remainInlineText

boolean

LongText型の文字列を検索用にDataStoreレコード内部で保持するか。デフォルト値はfalseです。ただし、レコード内部に保持可能な文字列長を超える部分は検索対象にはなりません。

設定例
<service>
    <interface>org.iplass.mtp.impl.entity.property.PropertyService</interface>

    <!-- if longtext property value length is over this byte, offstorage to LOB -->
    <property name="longTextInlineStoreMaxLength" value="1024" />
    <!-- To enable search long text property, this flag set to true. note:Search text limit is longTextInlineStoreMaxLength. And storage space more consume. -->
    <property name="remainInlineText" value="false" />
</service>

3.50. PropertyEncryptionService

プロパティ単位の暗号化を行うサービスです。

インタフェース名

org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService

実装クラス名

org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService

PropertyEncryptionServiceの設定

PropertyEncryptionServiceを設定します。

設定項目
項目 説明

encryptionSettings

EncryptionSetting、複数指定可

暗号化の方式。 標準で提供するクラス、もしくはEncryptionSettingインタフェースを実装するカスタムのEncryptionSetting。 異なるversionのencryptionSettingsを複数定義することにより、暗号化ロジックのロールオーバーが可能です。 新規に保存される値は最後に定義されたencryptionSettingsを利用して暗号化されます。

cachePrivateKeyInMemory

boolean

シークレットキーをメモリにキャッシュするか。デフォルト値はfalseです。

logEncryptProperty

boolean

暗号化したプロパティを暗号化前の値でログ出力するか。デフォルト値はtrueです。

encryptValueLogExpression

String

暗号化した際に出力される文字列。デフォルト値は "***" です。

EncryptionSetting

暗号化の方式を定義します。

classはorg.iplass.mtp.impl.properties.extend.crypt.EncryptionSettingの実装クラスを指定します。

標準で以下のEncryptionSettingを提供します。

PBKDF2EncryptionSetting

PBKDF2(Password-Based Key Drivation Function 2)を用いた暗号化を行います。

classにorg.iplass.mtp.impl.properties.extend.crypt.PBKDF2EncryptionSettingを指定します。

項目 説明

version

String

暗号化アルゴリズム設定のバージョン。 複数のencryptionSettings定義でそれぞれ一意な番号を指定する。

keyFactoryAlgorithm

String

鍵生成アルゴリズム。 デフォルト値は PBKDF2WithHmacSHA256

keySalt

String

鍵生成時のSalt。 未指定の場合はシステムのデフォルト値を利用。

keyStretch

int

鍵生成時のストレッチ回数。 デフォルト値は2048。

cipherAlgorithm

String

ブロック暗号化のアルゴリズム。 デフォルト値は AES

keyLength

int

鍵長。デフォルト値は128。

keyPassword

String

鍵生成の元となるパスワード文字列。

KeyStoreEncryptionSetting

KeyStoreファイルを用いた暗号化を行います。

classにorg.iplass.mtp.impl.properties.extend.crypt.KeyStoreEncryptionSettingを指定します。

項目 説明

version

String

暗号化アルゴリズム設定のバージョン。 複数のencryptionSettings定義でそれぞれ一意な番号を指定する。

cipherAlgorithm

String

ブロック暗号化のアルゴリズム。 デフォルト値は AES

keyLength

int

鍵長。デフォルト値は128。

keyStoreType

String

秘密鍵を保存するkeyStoreのタイプ。 デフォルト値は JCEKS

keyStoreFilePath

String

keyStoreファイルのファイルパス。

keyStorePassword

String

keyStoreのパスワード。

keyAlias

String

keyStore内に格納されている秘密鍵のエイリアス名。

keyPassword

String

keyStore内に格納されている秘密鍵取得のためのパスワード。

設定例
<service>
    <interface>org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService</interface>
    <property name="encryptionSettings" class="org.iplass.mtp.impl.properties.extend.crypt.PBKDF2EncryptionSetting">
        <property name="version" value="1" />
        <property name="keyPassword" value="yourOwnPass" />
    </property>
    <property name="encryptionSettings" class="org.iplass.mtp.impl.properties.extend.crypt.KeyStoreEncryptionSetting">
        <property name="version" value="2" />
        <property name="keyStoreFilePath" value="yourOwnKeyStoreFilePass" />
        <property name="keyStorePassword" value="yourOwnKeyStorePassword" />
        <property name="keyAlias" value="yourOwnKeyAliasName" />
        <property name="keyPassword" value="yourOwnKeyPassword" />
    </property>
    <!--
        By default the secret key is cached in memory.
        For enhanced security,
        set cachePrivateKeyInMemory to false if you do not want to cache secret keys in memory.
     -->
    <property name="cachePrivateKeyInMemory" value="true" />
</service>

keyPassword、keyStorePasswordは秘匿情報なので、取り扱いに注意してください。 設定ファイルのアクセス権を厳重にする、または設定ファイルの難読化を施すなどの対策をしてください。

3.51. PushNotificationService

プッシュ通知テンプレートの定義(メタデータ)の管理と、モバイル端末へのプッシュ通知を行うためのサービスです。 プッシュ通知サービスの実装としてFirebase Cloud Messaging(FCM)を利用したモジュールを標準提供します。

インタフェース名

org.iplass.mtp.impl.pushnotification.PushNotificationService

実装クラス名

org.iplass.mtp.impl.pushnotification.fcm.FCMPushNotificationService

FCMPushNotificationServiceの設定

FCMを利用する場合、FCMPushNotificationServiceを設定します。

設定項目
項目 説明

authorizationKey

String、必須

FCMで発行される認証のためのサーバキー。

enableRetry

boolean

FCM呼び出しに失敗しリトライ可能なエラーであった場合、リトライするかどうか。 未指定の場合のデフォルト値はtrueです。

exponentialBackoff

ExponentialBackoff

ExponentialBackoffクラスのプロパティにてリトライ処理する際の 指数バックオフ の設定。

registrationIdHandler

RegistrationIdHandler

registrationIdが存在しなかった場合や正規のRegistrationIdが存在するとFCMから通知された場合、その通知を処理するためのRegistrationIdHandlerの実装クラス。 未指定の場合は何も処理しません。

httpClientConfig

HttpClientConfig

WebApi呼び出し時のHTTPコネクションに関する設定。

listener

PushNotificationListener、複数指定可

PushNotificationを送信した際のListener。

dryRun

boolean

FCM呼び出し時、このパラメータがtrueに設定されている場合、FCMは実際にメッセージを送信せず、リクエストをテストすることができます。未指定の場合のデフォルト値はfalseです。

endpoint

String

FCM呼び出しを行うエンドポイントのURL。未指定の場合のデフォルト値は https://fcm.googleapis.com/fcm/send です。

ExponentialBackoff

classはorg.iplass.mtp.impl.http.ExponentialBackoffを指定します。 以下の項目を設定可能です。

項目 説明

retryIntervalMillis

int

リトライ間隔をミリ秒で指定します。デフォルト値は500です。

randomizationFactor

double

リトライ時のランダム要素。 0.5の場合、retryIntervalMillisに指定した値が上下25%の範囲で変動します。デフォルト値は0.5です。

multiplier

double

リトライ時のリトライ間隔の指数要素。 1.5の、retryIntervalMillisが500の場合、2回目のリトライは750ms、3回目のリトライは1125msのリトライ間隔で行われます。デフォルト値は1.5です。

maxIntervalMillis

int

最大リトライ間隔です。 デフォルト値は60000(1分)です。

maxElapsedTimeMillis

int

最大のリトライ実行時間。 この時間の間にリトライ処理が成功しなかった場合は、リトライ処理を完了し、アプリケーション側にその時点までの結果を返却します。 デフォルト値は300000(5分)です。

RegistrationIdHandler

classはorg.iplass.mtp.pushnotification.fcm.RegistrationIdHandlerの実装クラスを指定します。

標準で、単純にログ出力を行うorg.iplass.mtp.impl.pushnotification.fcm.LoggingRegistrationIdHandlerを提供します。 LoggingRegistrationIdHandlerは設定変更可能な項目はありません。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。 以下の項目を設定可能です。

項目 説明

proxyHost

String

proxyを利用する場合のHost名。

proxyPort

int

proxyを利用する場合のport。

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)をミリ秒で指定します。デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

PushNotificationListener

classはorg.iplass.mtp.pushnotification.PushNotificationListenerの実装クラスを指定します。

標準で以下のPushNotificationListenerを提供します。

MetricsPushNotificationListener

classはorg.iplass.mtp.impl.micrometer.metrics.pushnotification.MetricsPushNotificationListenerを指定します。

Micrometerによるメトリクス収集機能を追加したPushNotificationListenerです。 設定変更可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.pushnotification.PushNotificationService</interface>
    <class>org.iplass.mtp.impl.pushnotification.fcm.FCMPushNotificationService</class>
    <property name="authorizationKey" value="AA...." />
    <property name="enableRetry" value="true" />
    <property name="exponentialBackoff"
            class="org.iplass.mtp.impl.http.ExponentialBackoff">
        <property name="retryIntervalMillis" value="500" />
        <property name="randomizationFactor" value="0.5" />
        <property name="multiplier" value="1.5" />
        <property name="maxIntervalMillis" value="60000" />
        <property name="maxElapsedTimeMillis" value="300000" />
    </property>
    <property name="registrationIdHandler"
            class="org.iplass.mtp.impl.pushnotification.fcm.LoggingRegistrationIdHandler" />
    <property name="httpClientConfig"
            class="org.iplass.mtp.impl.http.HttpClientConfig">
        <property name="proxyHost" value="xxxxxx.dentsusoken.com" />
        <property name="proxyPort" value="8080" />
    </property>
    <property name="listener"
            class="org.iplass.mtp.sample.SampleCustomListener1" />
    <property name="listener"
            class="org.iplass.mtp.sample.SampleCustomListener2">
        <property name="customConfigVal" value="test" />
    </property>
</service>

3.52. QueryService

EQLの外部ヒント句を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.query.QueryService

実装クラス名

org.iplass.mtp.impl.query.QueryService

QueryServiceの設定

QueryServiceを設定します。

設定項目
項目 説明

externalHintFile

String

ヒント句の外だし機能を利用する場合、ヒント句を設定するプロパティファイルのパス(もしくはclasspath上のリソースパス)。

externalHints

HintComment、複数指定可

nameに外部ヒント名、valueにヒント句。

externalHintFileにプロパティファイルのパスを設定した場合、キー名と対応するヒント句を指定します。

hint1=native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_3)')
hint2=native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_1)')
:
:

EQLにて外部ヒントを利用するには、EQL文で@hint(keyName)を指定することで、プロパティファイルやexternalHintsで指定したヒント句を読み込めます。

EQL例

以下のようにEQL文の中に@hintを指定します。

select /*+ @hint(hint1) */ propA, propB, refX.name from HogeEntity where refX.propFuga='piyo'

内部では@hintの内容が展開され、以下のようになります。

select /*+ native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_3)') */ propA, propB, refX.name from HogeEntity where refX.propFuga='piyo'

また、org.iplass.mtp.entity.query.hint.Hint#externalHint(String key)メソッドを呼び出すことで、Hint句をJavaインスタンスとして取得できます。

設定例
<service>
    <interface>org.iplass.mtp.impl.query.QueryService</interface>
        <!--
            if use external hint, set propertyFile path(file path or classpath's resource path) or add inline.
         -->
         <!--
        <property name="externalHintFile" value="/externalHint.properties" />

        <property name="externalHints">
            <property name="hint1" value="native(...)" />
            <property name="hint2" value="index(...)" />
        </property>
          -->
</service>

3.53. RdbAdapterService

各種RDBとのインターフェースとなるRdbAdapterを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.rdb.adapter.RdbAdapterService

実装クラス名

org.iplass.mtp.impl.rdb.adapter.RdbAdapterService

RdbAdapterServiceの設定

RdbAdapterを設定します。

設定項目
項目 説明

adapter

RdbAdapter

標準のRdbAdapterの設定。

"adapter"以外の任意の文字列

RdbAdapter、複数指定可

RdbAdapterの設定。

RdbAdapter

classはorg.iplass.mtp.impl.rdb.adapter.RdbAdapterの実装クラスを指定します。

標準で

  • Oracleを利用するorg.iplass.mtp.impl.rdb.oracle.OracleRdbAdapter

  • MySQLを利用するorg.iplass.mtp.impl.rdb.mysql.MysqlRdbAdapter

  • PostgreSQLを利用するorg.iplass.mtp.impl.rdb.postgresql.PostgreSQLRdbAdapter

  • SQL Serverを利用するorg.iplass.mtp.impl.rdb.sqlserver.SqlServerRdbAdapter

を提供します。各々のRdbAdapterの設定可能な項目は以下になります。

OracleRdbAdapter

Oracleを利用するRdbAdapterです。 以下の項目を設定可能です。

項目 説明

lockTimeout

int

行レベルロックが解放されるまでのタイムアウト(秒)。0が設定された場合はロックの解放を待ちません(FOR UPDATE NOWAIT)。マイナスの値が設定された場合はロックが解放されるまで待機します。デフォルト値は0です。

timestampFunction

String

タイムスタンプを取得するFunction。デフォルト値は CURRENT_TIMESTAMP(3) です。

addMonthsFunction

String

月を加算するFunction。デフォルト値は ADD_MONTHS です。

monthsBetweenFunction

String

2つの日付の差を取得するFunction。デフォルト値は MONTHS_BETWEEN です。

isUseSubQueryForIndexJoin

boolean

相関副問い合わせを使ってIndexテーブルを利用した結合を行うか。デフォルト値はtrueです。

optimizerHint

String

オプティマイザ・ヒント。デフォルト値は FIRST_ROWS(100) です。

enableInPartitioning

boolean

IN演算子の1000件制限を緩和する変換処理を行うか。デフォルト値はfalseです。 緩和する変換処理とは、IN(1,2,…​)を1000件単位で(IN(1,2,…​) OR IN(1001, 1002,…​))とORで分割することです。

escapeFullwidthWildcard

boolean

全角文字 _ をエスケープ処理するか。デフォルト値はfalseです。 利用するバージョンが11gR2patch2以前の場合はワイルドカードとして扱われるためtrueを設定してください。

enableBindHint

boolean

bindヒント句を有効にするか。デフォルト値はtrueです。

alwaysBind

boolean

EQLをSQLに変換する際に常にバインド変数化するか。デフォルト値はtrueです。

thresholdCountOfUsePrepareStatement

int

複数の更新(追加)を一括で処理する際の、PrepareStatementを利用するかを判断するための閾値。デフォルト値は50です。

batchSize

int

バッチ更新を利用する際の推奨バッチサイズ。デフォルト値は100です。

maxFetchSize

int

フェッチする際の最大サイズ。デフォルト値は100です。

defaultFetchSize

int

フェッチする際のデフォルトサイズ。デフォルト値は0です。 0が指定された場合の実際のフェッチサイズはJDBCドライバに依存します。

defaultQueryTimeout

int

クエリ実行時のタイムアウト(秒)。0が指定された場合はタイムアウトしません。デフォルト値は0です。

useFetchFirstClause

boolean

Oracle 12cから利用可能なFETCH FIRST句を使うか。デフォルト値はtrueです。

rdbTimeZone

String

RDBのタイムゾーンがiPLAssが動作するJVMのものと異なる場合、RDBのタイムゾーンを指定します。

maxViewNameLength

int

ビュー名の最大長。デフォルト値は128です。

listaggDefaultSeparator

String

LISTAGG集約関数利用時のデフォルトのセパレータです。デフォルト値は , です。

bindDateAsString

boolean

Date型をPrepareStatementでバインドする際にjava.sql.Date型で直接バインドせず、TO_DATE関数経由でString型でバインドするか否かを設定します。デフォルトはtrueです。

Date型のままバインドした際、サマータイム切替日に意図せず時刻が設定されてしまう事象に対する制御項目です。Oracle JDBCドライバのシステムプロパティ oracle.jdbc.DateZeroTime=true を設定する場合bindDateAsStringの値はfalseで構いません。
MysqlRdbAdapter

MySQLを利用するRdbAdapterです。 以下の項目を設定可能です。

項目 説明

useFractionalSecondsOnTimestamp

boolean

タイムスタンプにミリ秒含めるか。デフォルト値はtrueです。

supportOptimizerHint

boolean

オプティマイザヒントをサポートするか。デフォルト値はtrueです。

optimizeCountQuery

boolean

件数カウントクエリーを最適化するかどうか。デフォルト値はtrueです。

localTemporaryTableManageOutsideTransaction

boolean

ローカル一時テーブルをトランザクションの外で管理するかを指定します。デフォルト値はfalseです。

localTemporaryTableCreatedByDataSource

boolean

ローカル一時テーブルがデータソースで作成されるかを指定します。デフォルト値はfalseです。

timestampMethod

String

タイムスタンプ取得関数。デフォルト値は NOW(3) です。

enableBindHint

boolean

bindヒント句を有効にするか。デフォルト値はfalseです。

batchSize

int

バッチ更新を利用する際の推奨バッチサイズ。デフォルト値は100です。

thresholdCountOfUsePrepareStatement

int

複数の更新(追加)を一括で処理する際の、PrepareStatementを利用するかを判断するための閾値。デフォルト値は-1です。

maxFetchSize

int

フェッチする際の最大サイズ。デフォルト値は100です。

defaultFetchSize

int

フェッチする際のデフォルトサイズ。デフォルト値は-1(明示的にセットしない)です。 0が指定された場合の実際のフェッチサイズはJDBCドライバに依存します。

defaultQueryTimeout

int

クエリ実行時のタイムアウト(秒)。0が指定された場合はタイムアウトしません。デフォルト値は0です。

supportWindowFunction

boolean

Window関数をサポートするか。デフォルト値はtrueです。Window関数をサポートしないバージョン5.7以前のMySQLを利用の場合はfalseを設定してください。

rdbTimeZone

String

RDBのタイムゾーンがiPLAssが動作するJVMのものと異なる場合、RDBのタイムゾーンを指定します。

maxViewNameLength

int

ビュー名の最大長。デフォルト値は64です。

listaggDefaultSeparator

String

LISTAGG集約関数利用時のデフォルトのセパレータです。デフォルト値は , です。

needMultiTableTrick

boolean

UPDATE/DELETE文発行時、条件にサブクエリが利用される場合のパフォーマンス改善対策を実施するか否か。デフォルトはfalseです。

MySQL8.0.20以前を利用する場合は有効化すること推奨します。
PostgreSQLRdbAdapter

PostgresSQLを利用するRdbAdapterです。 以下の項目を設定可能です。

項目 説明

supportOptimizerHint

boolean

オプティマイズヒントをサポートするか。デフォルト値はfalseです。

timestampFunction

String

タイムスタンプを取得するFunction。デフォルト値は CURRENT_TIMESTAMP(3) です。

escapeBackslash

boolean

バックスラッシュをエスケープするか。デフォルト値はfalseです。

enableBindHint

boolean

bindヒント句を有効にするか。デフォルト値はfalseです。

batchSize

int

バッチ更新を利用する際の推奨バッチサイズ。デフォルト値は100です。

maxFetchSize

int

フェッチする際の最大サイズ。デフォルト値は100です。

defaultFetchSize

int

フェッチする際のデフォルトサイズ。デフォルト値は10です。 0が指定された場合の実際のフェッチサイズはJDBCドライバに依存します。

defaultQueryTimeout

int

クエリ実行時のタイムアウト(秒)。0が指定された場合はタイムアウトしません。デフォルト値は0です。

lockTimeout

int

ロック時のタイムアウト(秒)。0が指定された場合はタイムアウトしません。デフォルト値は0です。

rdbTimeZone

String

RDBのタイムゾーンがiPLAssが動作するJVMのものと異なる場合、RDBのタイムゾーンを指定します。

maxViewNameLength

int

ビュー名の最大長。デフォルト値は63です。

listaggDefaultSeparator

String

LISTAGG集約関数利用時のデフォルトのセパレータです。デフォルト値は , です。

useStandardListaggFunction

boolean

SQL2016標準ベースのLISTAGG集約関数表現を利用するか否かを設定します。 falseの場合はSTRING_AGGを利用します。 デフォルト値はfalseです。

SQLServerRdbAdapter

SQL Serverを利用するRdbAdapterです。 以下の項目を設定可能です。

項目 説明

timestampFunction

String

タイムスタンプを取得するFunction。デフォルト値は GETDATE() です。

addMonthsFunction

String

月を加算するFunction。デフォルト値は DATEADD です。

monthsBetweenFunction

String

2つの日付の差を取得するFunction。デフォルト値は DATEDIFF です。

isUseSubQueryForIndexJoin

boolean

相関副問い合わせを使ってIndexテーブルを利用した結合を行うか。デフォルト値はtrueです。

enableBindHint

boolean

bindヒント句を有効にするか。デフォルト値はfalseです。

alwaysBind

boolean

EQLをSQLに変換する際に常にバインド変数化するか。デフォルトはfalseです。 SQL Serverではプロシージャが持つことのできるパラメーター数の最大が2,100個のためtrueに設定する場合はこの最大数を超えないようにしてください。

batchSize

int

バッチ更新を利用する際の推奨バッチサイズ。デフォルト値は100です。

thresholdCountOfUsePrepareStatement

int

複数の更新(追加)を一括で処理する際の、PrepareStatementを利用するかを判断するための閾値。デフォルト値は50です。

maxFetchSize

int

フェッチする際の最大サイズ。デフォルト値は100です。

defaultFetchSize

int

フェッチする際のデフォルトサイズ。デフォルト値は0です。 0が指定された場合の実際のフェッチサイズはJDBCドライバに依存します。

defaultQueryTimeout

int

クエリ実行時のタイムアウト(秒)。0が指定された場合はタイムアウトしません。デフォルト値は0です。

lockTimeout

int

行レベルロックが解放されるまでのタイムアウト(秒)。0が設定された場合はロックの解放を待ちません(NOWAIT)。 マイナスの値が設定された場合はロックが解放されるまで待機します。デフォルト値は0です。

optimizerHint

String

オプティマイザ・ヒント。デフォルト値は FAST 100 です。

rdbTimeZone

String

RDBのタイムゾーンがiPLAssが動作するJVMのものと異なる場合、RDBのタイムゾーンを指定します。

timeZoneMap

Map形式

javaのTime Zone IDとSQL Server上でのTime Zone IDのマッピングを定義します。nameにJavaのTime Zone ID、valueにSQL ServerのTime Zone IDを指定する形で定義します。

maxViewNameLength

int

ビュー名の最大長。デフォルト値は128です。

listaggDefaultSeparator

String

LISTAGG集約関数利用時のデフォルトのセパレータです。デフォルト値は , です。

設定例
<service>
    <interface>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interface>

    <!--
        for oracle
        ::configable property::
            lockTimeout :
                (seconds), 0=for update no wait, -1=for update
            enableInPartitioning :
                enables IN clause's limitation avoidance (do partition IN clause by 1000 items unit).
            escapeFullwidthWildcard :
                when use oracle11gR2patch2(11.2.0.2.0) or before, set true this property
            optimizerHint :
                default hint clause of SQL generated by EQL.
            useFetchFirstClause :
                use FETCH FIRST clause rather than use ROWNUM (on oracle 12c).
    -->
    <property name="adapter" class="org.iplass.mtp.impl.rdb.oracle.OracleRdbAdapter" inherit="false">
        <property name="lockTimeout" value="0" />
        <property name="enableInPartitioning" value="false" />
        <property name="escapeFullwidthWildcard" value="false" />
        <property name="optimizerHint" value="FIRST_ROWS(100)" />
        <property name="alwaysBind" value="true" />
        <property name="thresholdCountOfUsePrepareStatement" value="50" />
        <property name="batchSize" value="100" />
        <property name="defaultQueryTimeout" value="0" />
        <property name="useFetchFirstClause" value="false" />
    </property>

    <!--
        for mysql
        ::configable property::
            supportOptimizerHint :
                mysql5.7から利用可能なOptimizer Hintsを利用する場合trueを設定
    -->
    <property name="adapter" class="org.iplass.mtp.impl.rdb.mysql.MysqlRdbAdaptor" inherit="false">
        <property name="defaultQueryTimeout" value="0" />
        <property name="supportOptimizerHint" value="false" />
    </property>

    <!-- for postgresql -->
    <property name="postgresql"
        class="org.iplass.mtp.impl.rdb.postgresql.PostgreSQLRdbAdapter" inherit="false" />

    <!--
        for sqlserver
        ::configable property::
            lockTimeout :
                (seconds), 0=for update no wait, -1=for update
            optimizerHint :
                default hint clause of SQL generated by EQL.
    -->
    <property name="adapter" class="org.iplass.mtp.impl.rdb.sqlserver.SqlServerRdbAdapter" inherit="false">
        <property name="alwaysBind" value="false" />
        <property name="defaultQueryTimeout" value="0" />
        <property name="lockTimeout" value="0" />
        <property name="optimizerHint" value="FAST 100" />
        <property name="rdbTimeZone" value="Asia/Tokyo" />
        <property name="timeZoneMap">
            <property name="Asia/Tokyo" value="Tokyo Standard Time" />
            <property name="America/Los_Angeles" value="Pacific Standard Time" />
            :
            :
        </property>
    </property>
</service>

3.54. RdbQueueService

RDBを利用したキューのサービスです。

インタフェース名

org.iplass.mtp.impl.async.rdb.RdbQueueService

実装クラス名

org.iplass.mtp.impl.async.rdb.RdbQueueService

RdbQueueServiceの設定

RdbQueueServiceを設定します。

設定項目
項目 説明

useQueue

boolean

キューを使用するか。デフォルトはfalseです。

queue

QueueConfig

非同期処理を実行するためのキュー。 標準で以下のキューが定義されています。

default

非同期タスク側でキューを指定しない場合に利用されるキュー

csvupload

汎用画面のCSVアップロードで利用するキュー

cleanupHistoryOnInit

boolean

サービス初期化時に履歴を削除するか。デフォルトはfalseです。

historyHoldDay

int

履歴を削除する際に何日分の履歴を残すか。デフォルトは1です。

workerFactory

WorkerFactory

カスタムでWorkerを生成するFactoryクラスを設定します。未指定の場合は、org.iplass.mtp.impl.async.rdb.DefaultWorkerFactoryが設定されます。

QueueConfig

classはorg.iplass.mtp.impl.async.rdb.QueueConfigを指定します。

項目 説明

id

int

一意なID。 0、1は既に定義されているのでそれ以外を設定してください。

name

String

キューの名前。 非同期タスクがキューを選択する際に表示されます。

resultRemainingTime

long

タスクを履歴に移動する時間(ミリ秒)。現在から設定した時間より以前のタスクが移動の対象になります。デフォルト値は86400000(1日)です。

strictSequence

boolean

タスクにGroupingKeyが設定され、strictSequenceがtrueの場合、タスクIDはグループ毎にシーケンシャルに設定されます。

selectWorkerOnSubmit

boolean

GroupingKeyが未設定のタスクにワーカーを割り振るか。デフォルト値はfalseです。

worker

WorkerConfig

キューを処理するワーカー。

WorkerConfig

classはorg.iplass.mtp.impl.async.rdb.WorkerConfigを指定します。

項目 説明

pollingInterval

long

キューをポーリングする間隔(ミリ秒)。デフォルト値は30000です。

actualWorkerSize

int

キューを並列で処理する実ワーカーの数。デフォルト値は1です。

virtualWorkerSize

int

キューに割り当てる仮想ワーカーの数。デフォルト値は16です。virtualWorkerSizeはシステム内において同一のキュー定義には同じ値を設定します。それぞれの仮想ワーカーは実ワーカーに割り当てられます。

executionTimeout

long

処理のタイムアウト時間(ミリ秒)。デフォルト値は180000です。

restartDelay

long

タスクのリトライ間隔(ミリ秒)。デフォルト値は30000です。

maxRetryCount

int

タスクのリトライ回数。デフォルトは100です。

wakeupOnSubmit

boolean

タスクがサブミットされた後、即座に次のタスクを起動するか。デフォルト値はtrueです。 現状 local をtrueにした場合のみ有効です。

trace

boolean

ログを出力するか。デフォルト値はtrueです。

local

boolean

キューに格納されたタスクをローカルで処理するか、リモートで分散処理するか。デフォルト値はtrueです。

分散処理する場合(local=false)

次の形式のシステムプロパティにて、このノードが実行するワーカーIDを明示的に指定します。ワーカIDは0からactualWorkerSizeに指定される値未満の番号までの連番です。

mtp.async.rdb.workers=[queueName]:[id]:[id],…​

例:
mtp.async.rdb.workers=default:0:2,csvupload:0:2:4

このノードではdefaultキューのワーカーID0と2、csvuploadキューのワーカーID0、2、4に割り当てられたタスクを実行します。

newProcessPerTask

boolean

ワーカーを新しい別プロセスで実行するか否か。デフォルト値はfalseです。

javaCommand

String

ワーカーを別プロセスで起動する場合の、Javaを起動するためのコマンド。

vmArgs

String、複数指定可

javaCommand に渡すVM引数。

redirectFile

String

プロセスの標準出力先、標準エラー出力先となるファイル。

WorkerFactory

classはorg.iplass.mtp.impl.async.rdb.WorkerFactoryの実装クラスを指定します。

標準で、以下のWorkerFactoryを提供します。

DefaultWorkerFactory

classはorg.iplass.mtp.impl.async.rdb.DefaultWorkerFactoryを指定します。
デフォルトのWorkerFactoryです。設定変更可能な項目はありません。

MetricsWorkerFactory

classはorg.iplass.mtp.impl.micrometer.metrics.async.MetricsWorkerFactoryを指定します。
メトリクス収集用のWorkerFactoryです。非同期処理の成功/失敗、タイムアウト数、処理時間をメトリクスとして収集するWorkerを生成します。 また、同一プロセス内で実行されたWorkerのメトリクスを収集します。
Micrometerモジュールを依存関係に追加した場合に設定可能です。設定変更可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.async.rdb.RdbQueueService</interface>
    <!-- if use async rdb service set to true -->
    <property name="useQueue" value="true" />

    <property name="queue" class="org.iplass.mtp.impl.async.rdb.QueueConfig" additional="true">
        <property name="id" value="2" />
        <property name="name" value="customQueue" />
        <property name="worker" class="org.iplass.mtp.impl.async.rdb.WorkerConfig">
            <property name="pollingInterval" value="60000" />
            <property name="actualWorkerSize" value="1" />
        </property>
    </property>

    <property name="queue" class="org.iplass.mtp.impl.async.rdb.QueueConfig" additional="true">
        <property name="id" value="3" />
        <property name="name" value="customProcessWorkerQueue" />
        <property name="worker" class="org.iplass.mtp.impl.async.rdb.WorkerConfig">
            <property name="pollingInterval" value="60000" />
            <property name="actualWorkerSize" value="1" />
            <property name="newProcessPerTask" value="true" />
            <property name="javaCommand" value="java" />
            <property name="vmArgs" value="-cp" />
            <property name="vmArgs" value="/build/classes/:/build/lib/*" />
            <property name="vmArgs" value="-Dmtp.config=/worker-service-config.xml" />
        </property>
    </property>
</service>

3.55. RedisService

Redisを管理するサービスです。

インタフェース名

org.iplass.mtp.impl.redis.RedisService

実装クラス名

org.iplass.mtp.impl.redis.RedisService

RedisServiceの設定

RedisServiceを設定します。

設定項目
項目 説明

redisServers

RedisServer、複数指定可

Redisサーバの設定。

RedisServer

以下の項目が設定可能です。

項目 説明

serverName

String

RedisServerの識別子となるサーバ名。

host

String

Redisサーバのホスト。

port

int

Redisサーバのポート番号。デフォルト値は6379です。

timeout

long

接続タイムアウト。

database

int

データベース番号。

userName

String

ユーザー名。

password

String

パスワード。

ssl

boolean

SSL通信を行う場合はtrueを設定します。デフォルト値はfalseです。

設定例
<service>
    <interface>org.iplass.mtp.impl.redis.RedisService</interface>

    <property name="redisServers">
        <property name="serverName" value="RedisServer-1" />
        <property name="host" value="192.168.0.1" />
        <property name="port" value="6379" />
    </property>
    <property name="redisServers">
        <property name="serverName" value="RedisServer-2" />
        <property name="host" value="192.168.0.2" />
        <property name="port" value="6379" />
    </property>
</service>

3.56. RelativeRangeService

集計機能やEntityListingの日付の検索条件で、相対範囲を独自に追加するためのサービスです。

インタフェース名

org.iplass.mtp.impl.view.relativerange.RelativeRangeService

実装クラス名

org.iplass.mtp.impl.view.relativerange.RelativeRangeService

RelativeRangeServiceの設定

RelativeRangeServiceを設定します。

設定項目
項目 説明

relativeRanges

RelativeRange、複数指定可

カスタム相対範囲の設定。

RelativeRange

classはorg.iplass.mtp.view.relativerange.RelativeRangeを指定します。

カスタム相対範囲です。以下の項目を設定可能です。

項目 説明

relativeRangeName

String

カスタム相対範囲名。

displayLabel

String

表示ラベル。

localizedDisplayLabel

LocalizedDisplayLabel、複数指定可

言語毎の表示ラベルの設定。

converter

String

変換ロジッククラス。 org.iplass.mtp.view.relativerange.RelativeRangeConverter インターフェースを実装したクラスの名前を指定してください。

LocalizedDisplayLabel

classはorg.iplass.mtp.view.relativerange.LocalizedDisplayLabelを指定します。

言語毎の表示ラベルです。以下の項目を設定可能です。

項目 説明

locale

String

ロケール。

displayLabel

String

表示ラベル。

設定例
<service>
    <interface>org.iplass.mtp.impl.view.relativerange.RelativeRangeService</interface>
    <class>org.iplass.mtp.impl.view.relativerange.RelativeRangeService</class>
    <!-- デフォルトのカスタム相対範囲 -->
    <property name="relativeRanges" class="org.iplass.mtp.view.relativerange.RelativeRange">
        <property name="relativeRangeName" value="firstHalfOfThisFiscalYear" />
        <property name="displayLabel" value="今年度上期" />
        <property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
            <property name="locale" value="ja" />
            <property name="displayLabel" value="今年度上期" />
        </property>
        <property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
            <property name="locale" value="en" />
            <property name="displayLabel" value="First half of this fiscal year" />
        </property>
        <property name="converter" class="sample.FirstHalfRelativeRangeConverter" />
    </property>
    <property name="relativeRanges" class="org.iplass.mtp.view.relativerange.RelativeRange">
        <property name="relativeRangeName" value="secondHalfOfThisFiscalYear" />
        <property name="displayLabel" value="今年度下期" />
        <property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
            <property name="locale" value="ja" />
            <property name="displayLabel" value="今年度下期" />
        </property>
        <property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
            <property name="locale" value="en" />
            <property name="displayLabel" value="2nd half of this fiscal year" />
        </property>
        <property name="converter" class="sample.SecondHalfRelativeRangeConverter" />
    </property>
</service>

3.57. ReportingEngineService

帳票出力を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.report.ReportingEngineService

実装クラス名

org.iplass.mtp.impl.report.ReportingEngineServiceImpl

ReportingEngineServiceの設定

ReportingEngineServiceを設定します。

設定項目
項目 説明

reportingEngine

ReportingEngine、複数指定可

帳票出力エンジンの設定。

ReportingEngine

classにorg.iplass.mtp.impl.report.ReportingEngineの実装クラスを指定します。

標準で以下のReportingEngineを提供します。

JasperReportingEngine

Jasper Reportを利用して帳票を作成するためのエンジンです。

classはorg.iplass.mtp.impl.report.JasperReportingEngineを指定します。 以下の項目を設定可能です。

項目 説明

supportFiles

String、複数指定可

サポート対象のファイル形式。

PoiReportingEngine

Apache POIを利用して帳票を作成するためのエンジンです。

classはorg.iplass.mtp.impl.report.PoiReportingEngineを指定します。 以下の項目を設定可能です。

項目 説明

supportFiles

String、複数指定可

サポート対象のファイル形式。

JxlsReportingEngine

JXLSを利用して帳票を作成するためのエンジンです。

classはorg.iplass.mtp.impl.report.JxlsReportingEngineを指定します。 以下の項目を設定可能です。

項目 説明

supportFiles

String、複数指定可

サポート対象のファイル形式。

設定例
<service>
    <interface>org.iplass.mtp.impl.report.ReportingEngineService</interface>
    <class>org.iplass.mtp.impl.report.ReportingEngineServiceImpl</class>
    <property name="repotingEngine" class="org.iplass.mtp.impl.report.JasperReportingEngine">
        <property name="supportFiles" value="PDF"/>
        <property name="supportFiles" value="XLS"/>
        <property name="supportFiles" value="XLSX"/>
    </property>
    <property name="repotingEngine" class="org.iplass.mtp.impl.report.PoiReportingEngine">
        <property name="supportFiles" value="XLS_POI"/>
        <property name="supportFiles" value="XLSX_POI"/>
        <property name="supportFiles" value="XLSX_SXSSF_POI"/>
    </property>
        <property name="repotingEngine" class="org.iplass.mtp.impl.report.JxlsReportingEngine">
        <property name="supportFiles" value="XLS_JXLS"/>
        <property name="supportFiles" value="XLSX_JXLS"/>
        <property name="supportFiles" value="XLSX_SXSSF_JXLS"/>
    </property>
</service>

3.58. SamlService

SAML認証を行うためのサービスです。 IdPとして動作させる場合、またSP側からIdPに送信するメッセージに署名を行う場合に証明書ストアの設定が必要です。

インタフェース名

org.iplass.mtp.impl.auth.authenticate.saml.SamlService

実装クラス名

org.iplass.mtp.impl.auth.authenticate.saml.SamlService

SamlServiceの設定

SAML認証を利用する場合、SamlServiceを設定します。

設定項目
項目 説明

validateSchema

boolean

SAMLメッセージをXMLSchema定義に従っているかを検証します。デフォルト値はfalseです。

keyStore

SamlKeyStore

証明書ストアの設定です。

setAddressToSubjectConfirmationData

boolean

AssertionのSubjectConfirmationDataにAddressを含めるかどうか。デフォルト値はtrueです。

assertionLifetimeMinutes

int

SAMLアサーションの有効期間。デフォルト値は5(分)です。

allowedClockSkewMinutes

int

許容されるクロックスキュー時間。デフォルト値は5(分)です。

iPLAssがSPモードで動作する場合、SubjectConfirmationDataのNotOnOrAfterの検証時に考慮されます。

iPLAssがIdPモードで動作する場合、発行するSAMLアサーションの有効期間(SubjectConfirmationDataのNotOnOrAfter、及びConditionsのNotBefore、NotOnOrAfter)がこのクロックスキュー時間によって次のように拡張されます。

NotBefore = IssueInstant - allowedClockSkewMinutes
NotOnOrAfter = IssueInstant + assertionLifetimeMinutes + allowedClockSkewMinutes

SamlKeyStore

IdPとして動作させる場合、SP側(iPLAss側)でSAMLメッセージに署名を行う場合に定義が必要です。 秘密鍵及び証明書(以下エントリと記述)は、KeyStoreに格納します。 エントリは、複数登録可能です。 (複数の暗号化アルゴリズム対応するため、また証明書ロールオーバーのため)

classはorg.iplass.mtp.impl.auth.authenticate.saml.SamlKeyStoreを指定します。 以下の項目を設定可能です。

項目 説明

keyStoreType

String

KeyStoreのタイプ。デフォルト値は JKS です

keyStoreFilePath

String 

署名作成の為のエントリが格納されるKeyStoreのファイルパス。

keyStorePassword

String

KeyStoreのパスワード。

keyPassword

String

秘密鍵のkeyPassword。

myCertificate

String、複数指定可

KeyStore内のエントリのうち、署名に利用するものを絞り込みたい場合にエントリのalias。

defaultSignatureAlgorithm

String

デフォルトの署名アルゴリズムを指定してください。デフォルト値は SHA256withRSA です。

keyStoreReloadIntervalDays

int

keyStoreのファイルの再読み込み間隔(日数)。 未指定の場合は、リロードは行いません。

rollOverStrategy

CertificateRollOverStrategy

証明書の有効期間が迫った場合のロールオーバー方式。 デフォルト値は OLDER です。

rollOverDaysBeforeExpire

long

rollOverStrategyが BEFORE_N_DAYS の場合に、切り替える日数。

CertificateRollOverStrategy

証明書の有効期間が迫った場合のロールオーバー方式を指定します。 複数の(新旧の)証明書がKeyStore内にある場合、どちらを利用するかを判断する方式です。

OLDER

有効期間が切れるまで、有効期間が短い(NotAfterが古い)証明書を利用

NEWER

有効期間内である証明書のうち、より有効期間が長い(NotAfterが新しい)証明書を利用

BEFORE_N_DAYS

有効期間が切れるrollOverDaysBeforeExpire日前に切り替える

設定例
<service>
  <interface>org.iplass.mtp.impl.auth.authenticate.saml.SamlService</interface>
  <property name="keyStore" class="org.iplass.mtp.impl.auth.authenticate.saml.SamlKeyStore">
    <property name="keyStoreFilePath" value="/app/.keystore" />
    <property name="keyStorePassword" value="yourOwnKeyStorePassword" />
    <property name="keyPassword" value="yourOwnKeyPassword" />
    <property name="keyStoreReloadIntervalDays" value="1" />
    <property name="rollOverStrategy" value="BEFORE_N_DAYS" />
    <property name="rollOverDaysBeforeExpire" value="5" />

  </property>
</service>

3.59. ScheduleService

スケジュールタスクの定義(メタデータ)を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.scheduling.ScheduleService

実装クラス名

org.iplass.mtp.impl.scheduling.ScheduleService

ScheduleServiceの設定

ScheduleServiceを設定します。

設定項目
項目 説明

systemUserId

String

スケジュールタスクを実行するシステムユーザーのID。 デフォルト値は scheduler です。

設定例
<service>
    <interface>org.iplass.mtp.impl.scheduling.ScheduleService</interface>
    <class>org.iplass.mtp.impl.scheduling.ScheduleService</class>
    <property name="systemUserId" value="id000001" />
</service>

3.60. ScriptService

動的スクリプトの実行を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.script.ScriptService

実装クラス名

org.iplass.mtp.impl.script.GroovyScriptService

ScriptServiceの設定

ScriptServiceを設定します。

設定項目
項目 説明

debug

boolean

スクリプトのデバッグログの出力可否。

initScript

String、複数指定可

初期化用のGroovyScript。

staticImport

String、複数指定可

GroovyScriptにstaticインポートするメソッド。

設定例
<service>
    <interface>org.iplass.mtp.impl.script.ScriptService</interface>
    <class>org.iplass.mtp.impl.script.GroovyScriptService</class>
    <property name="initScript" value="/org/iplass/mtp/impl/script/InitScript.gr" />
    <property name="initScript" value="/org/iplass/mtp/impl/script/EnterpriseInitScript.gr" />
</service>

3.61. SecureRandomService

ランダム文字列を生成するための設定を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.util.random.SecureRandomService

実装クラス名

org.iplass.mtp.impl.util.random.SecureRandomService

SecureRandomServiceの設定

SecureRandomServiceを設定します。

設定項目
項目 説明

default

SecureRandomGeneratorConfig

標準のSecureRandomGeneratorConfigの設定。

任意の文字列

SecureRandomGeneratorConfig

認証トークン生成時に使用するSecureRandomGeneratorConfigの設定。 nameにはSecureRandomGeneratorの任意の名前を指定します。

SecureRandomGeneratorConfig

ランダム文字列を生成するための設定です。

項目 説明

numBitsOfSecureRandomToken

int

ランダム文字列のbit。デフォルトは128(bit)です。encode指定またはradixOfSecureRandomTokenの値が64に指定されている場合は、8の倍数に繰り上げて処理されます。

radixOfSecureRandomToken

int

ランダム文字列化する際の基数。デフォルトは16です。 設定可能な値は2-36もしくは64です。encode指定ある場合は、そちらを優先します。

useStrongSecureRandom

boolean

ランダム生成時のSecureRandomをSecureRandom.getInstanceStrong()するか否か。 デフォルトはfalseです。algorithm指定ある場合は、そちらを優先します。

algorithm

String

SecureRandom生成時のalgorithm。デフォルトは未指定です。

provider

String

SecureRandom生成時のprovider。デフォルトは未指定です。

encode

String

SecureRandom生成時のencode。デフォルトは未指定です。設定可能な値はbase32もしくはbase64です。

設定例
<service>
    <interface>org.iplass.mtp.impl.util.random.SecureRandomService</interface>
    <class>org.iplass.mtp.impl.util.random.SecureRandomService</class>
    <property name="default">
        <property name="numBitsOfSecureRandomToken" value="128" />
        <property name="radixOfSecureRandomToken" value="16" />
        <property name="useStrongSecureRandom" value="false" />
    </property>
    <property name="authTokenGenerator">
        <property name="numBitsOfSecureRandomToken" value="192" />
        <property name="radixOfSecureRandomToken" value="32" />
        <property name="useStrongSecureRandom" value="false" />
    </property>
</service>

3.62. SmsService

SMSテンプレートの定義(メタデータ)の管理と、SMS送信を行うためのサービスです。 SMS送信の実装として、Twilioを利用したSMS送信のモジュールを標準提供します。

インタフェース名

org.iplass.mtp.impl.sms.SmsService

実装クラス名

Twilioを利用したSMS送信
org.iplass.mtp.impl.sms.twilio.TwilioSmsService

TwilioSmsServiceの設定

TwilioによるSMS送信を利用する場合、TwilioSmsServiceを設定します。 Twilio契約時に取得される「ACCOUNT SID」と「AUTH TOKEN」が必要です。

設定項目
項目 説明

accountSid

String、必須

ACCOUNT SID。

authToken

String、必須

AUTH TOKEN。

region

String

Twilio サービスのリージョンを設定します。設定可能な値は こちら を参照ください。

edge

String

Twilio サービスのエッジロケーションを設定します。設定可能な値は こちら を参照ください。

userAgentExtensions

String、複数指定可能

Twilio サービスへリクエスト時の User-Agent ヘッダーの拡張設定。

defaultFrom

String

デフォルトの送信元電話番号。

httpClientConfig

HttpClientConfig

HTTPクライアントの設定。

listener

SendSmsMailListener、複数指定可

SMS送信時のListener。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。

以下の項目を設定可能です。

項目 説明

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)(ミリ秒)。デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

proxyHost

String

プロキシサーバのホスト。

proxyPort

int

プロキシサーバのポート番号。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

SendSmsMailListener

classはorg.iplass.mtp.sms.SendSmsMailListenerの実装クラスを指定します。

標準で以下のSendSmsMailListenerを提供します。

MetricsSendSmsMailListener

classはorg.iplass.mtp.impl.micrometer.metrics.sms.MetricsSendSmsMailListenerを指定します。

Micrometerによるメトリクス収集機能を追加したSendSmsMailListenerです。 設定変更可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.sms.SmsService</interface>
    <class>org.iplass.mtp.impl.sms.twilio.TwilioSmsService</class>
    <property name="accountSid" value="yourOwnAccountSid"/>
    <property name="authToken" value="yourOwnAuthToken"/>
    <property name="edge" value="tokyo"/>

    <property name="defaultFrom" value="+1234......."/>

    <!-- Development
    <property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
        <property name="connectionTimeout" value="30000" />
        <property name="soTimeout" value="30000" />
        <property name="proxyHost" value="proxyhost.dentsusoken.com" />
        <property name="proxyPort" value="8080" />
    </property>
    -->
</service>

3.63. StorageSpaceService

StorageSpaceの移行ツールに関するサービスです。

インタフェース名

org.iplass.mtp.impl.tools.storagespace.StorageSpaceService

実装クラス名

org.iplass.mtp.impl.tools.storagespace.StorageSpaceServiceImpl

StorageSpaceServiceの設定

StorageSpaceServiceを設定します。

設定項目
項目 説明

migrateCommitLimit

int

StorageSpace変更時の移行データCommit単位(件数)。

cleanupCommitLimit

int

StorageSpace変更後の移行データクリーンアップCommit単位(件数)。

設定例
<service>
    <interface>org.iplass.mtp.impl.tools.storagespace.StorageSpaceService</interface>
    <class>org.iplass.mtp.impl.tools.storagespace.StorageSpaceServiceImpl</class>

    <property name="migrateCommitLimit" value="100" />
    <property name="cleanupCommitLimit" value="1000" />
</service>

3.64. StoreService

Entityデータの永続化を行うサービスです。

インタフェース名

org.iplass.mtp.impl.datastore.StoreService

実装クラス名

org.iplass.mtp.impl.datastore.StoreService

StoreServiceの設定

StoreServiceを設定します。

設定項目
項目 説明

dataStore

DataStore

DataStoreの設定。

DataStore

classはorg.iplass.mtp.impl.datastore.DataStoreの実装クラスを指定します。

標準で、以下のDataStoreを提供します。

GRdbDataStore

classはorg.iplass.mtp.impl.datastore.grdb.GRdbDataStoreを指定します。 コミュニティエディション用のDataStoreです。

以下の項目を設定可能です。

項目 説明

storageSpace

StorageSpaceMap、複数指定可

StorageSpaceの設定。

EnterpriseGRdbDataStore

classはorg.iplass.mtp.impl.datastore.grdb.EnterpriseGRdbDataStoreを指定します。 エンタープライズエディション用のDataStoreです。

以下の項目を設定可能です。

項目 説明

enableWindowFunctionEmulation

boolean

Window関数のエミュレートを有効にするか。デフォルト値はfalseです。

storageSpace

StorageSpaceMap、複数指定可

StorageSpaceの設定。

StorageSpaceMap

以下の項目を設定可能です。

項目 説明

storageSpaceName

String

Entity定義で選択する際に表示されるStorageSpace名。

tableNamePostfix

String

StorageSpace用のテーブルに付加する接尾語。 英数字のみ利用してください。 標準で、 MTPUSER が定義されているので、それ以外の名前を設定してください。

varcharColumns

int

文字列型のプロパティを格納するための列数。

decimalColumns

int

Decimal型のプロパティを格納するための列数。

timestampColumns

int

Timestamp型のプロパティを格納するための列数。

doubleColumns

int

浮動小数点型のプロパティを格納するための列数。

useExternalIndexedTable

boolean

StorageSpaceにおける外部INDEXテーブル(obj_index 系テーブル)を利用するか。デフォルトは true です。

indexedVarcharColumns

int

Index指定された文字列型のプロパティを格納するための列数。

indexedDecimalColumns

int

Index指定されたDecimal型のプロパティを格納するための列数。

indexedTimestampColumns

int

Index指定されたTimestamp型のプロパティを格納するための列数。

indexedDoubleColumns

int

Index指定された浮動小数点型のプロパティを格納するための列数。

useExternalUniqueIndexedTable

boolean

StorageSpaceにおける外部INDEXテーブル(obj_unique_index 系テーブル)を利用するか。デフォルトは true です。

uniqueIndexedVarcharColumns

int

Unique Index指定された文字列型のプロパティを格納するための列数。

uniqueIndexedDecimalColumns

int

Unique Index指定されたDecimal型のプロパティを格納するための列数。

uniqueIndexedTimestampColumns

int

Unique Index指定されたTimestamp型のプロパティを格納するための列数。

uniqueIndexedDoubleColumns

int

Unique Index指定された浮動小数点型のプロパティを格納するための列数。

varcharColumnLength

int

文字列格納カラムの文字列長を設定。LongText値がインライン格納可能かどうかの判断に利用される。デフォルト値は-1(未定義の意)

customPartition

boolean

データベースのPartitionを利用する場合に、iPLAssが想定する標準のPartition単位(テナント単位)と異なるPartition設定を利用するか。デフォルト値はfalse(カスタムのPartition設定しない)です。

tableCount

int

物理的に格納テーブルを分割し、擬似パーティショニング(データベースのパーティショニング機能ではなく、iPLAssがEntity単位に物理テーブルを振り分けする機能)する場合に0より大きい値を設定。デフォルト値は0です。

tableAllocator

TableAllocator

TableAllocatorの設定。疑似パーティショニングする場合の各物理テーブルへの振り分け方式を設定可能です。デフォルト値はHashingTableAllocatorです。

TableAllocator

疑似パーティショニングする場合の、Entityデータが格納される物理テーブルへの振り分け方式を設定可能です。
classはorg.iplass.mtp.impl.datastore.grdb.TableAllocatorの実装クラスを指定します。

標準で、以下のTableAllocatorを提供します。

HashingTableAllocator

classはorg.iplass.mtp.impl.datastore.grdb.tableallocators.HashingTableAllocatorを指定します。 tenantId、また、Entity定義単位に一意なキーであるmetaDataIdからのハッシュにより、物理テーブルを決定します。

以下の項目を設定可能です。

項目 説明

useTenantId

boolean

ハッシュ算出時にtenantIdを利用する場合、true。デフォルト値はtrueです。

useMetaDataId

boolean

ハッシュ算出時にmetaDataIdを利用する場合、true。デフォルト値はtrueです。 useTenantId、useMetaDataIdともにtrueの場合は、両方を利用します。

RoundRobinTableAllocator

classはorg.iplass.mtp.impl.datastore.grdb.tableallocators.RoundRobinTableAllocatorを指定します。 疑似パーティションを構成する物理テーブルの内、同一テナント内において利用しているEntity定義が最も少ない物理テーブルを割り当てるようにします。 設定可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.datastore.StoreService</interface>

    <property name="dataStore" class="org.iplass.mtp.impl.datastore.grdb.GRdbDataStore">
        <property name="storageSpace" additional="true">
            <property name="storageSpaceName" value="MyCustomSpace" />
            <property name="tableNamePostfix" value="MCS" />
            <property name="varcharColumns" value="128" />
            <property name="decimalColumns" value="32" />
            <property name="timestampColumns" value="32" />
            <property name="doubleColumns" value="32" />
            <property name="useExternalIndexedTable" value="true" />
            <property name="indexedVarcharColumns" value="8" />
            <property name="indexedDecimalColumns" value="4" />
            <property name="indexedTimestampColumns" value="4" />
            <property name="indexedDoubleColumns" value="4" />
            <property name="useExternalUniqueIndexedTable" value="true" />
            <property name="uniqueIndexedVarcharColumns" value="2" />
            <property name="uniqueIndexedDecimalColumns" value="2" />
            <property name="uniqueIndexedTimestampColumns" value="2" />
            <property name="uniqueIndexedDoubleColumns" value="2" />
            <property name="customPartition" value="false" />
        </property>
    </property>
</service>

3.65. SyntaxService

構文解析のためのサービスです。

インタフェース名

org.iplass.mtp.impl.parser.SyntaxService

実装クラス名

org.iplass.mtp.impl.parser.SyntaxService

SyntaxServiceの設定

SyntaxServiceを設定します。

設定項目
項目 説明

syntaxRegister

SyntaxRegister、複数指定可

SyntaxRegisterの実装クラス名。

SyntaxRegister

classはorg.iplass.mtp.impl.parser.SyntaxRegisterの実装クラスを指定します。

標準でorg.iplass.mtp.impl.query.QuerySyntaxRegisterを提供しています。 設定可能な項目はありません。

設定例
<service final="true">
    <interface>org.iplass.mtp.impl.parser.SyntaxService</interface>
    <class>org.iplass.mtp.impl.parser.SyntaxService</class>
    <property name="syntaxRegister" value="org.iplass.mtp.impl.query.QuerySyntaxRegister" />
 </service>

3.66. TaskIdCounter

RdbQueueServiceを利用する場合にタスクIDの採番を行うサービスです。 タスクのグループ化の設定により、利用する設定が変わります。 グループ化の指定が無い場合は TaskIdCounter の設定を、指定がある場合は TaskIdCounterGrouping の設定を利用します。

インタフェース名

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="TaskIdCounter">
    <interface>org.iplass.mtp.impl.counter.CounterService</interface>
    <class>org.iplass.mtp.impl.counter.CachableRdbTableCounterService</class>
    <property name="counterTypeName" value="TaskIdCounter" />
    <property name="cacheSize" value="20" />
    <property name="retryCount" value="3" />
</service>
<service name="TaskIdCounterGrouping">
    <interface>org.iplass.mtp.impl.counter.CounterService</interface>
    <class>org.iplass.mtp.impl.counter.RdbTableCounterService</class>
    <property name="counterTypeName" value="TaskIdCounter" />
    <property name="separateTransaction" value="true" />
    <property name="retryCount" value="3" />
</service>

3.67. TenantAvailableService

テナントの稼動状態を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.tenant.available.TenantAvailableService

実装クラス名

org.iplass.mtp.impl.tenant.available.TenantAvailableService

TenantAvailableServiceの設定

TenantAvailableServiceを設定します。

設定項目
項目 説明

allwaysAvailableAction

String、複数指定可

メンテナンス中でも利用可能なアクション

alwaysAvailableAction の方を使用してください。次期マイナーバージョンアップで削除します

alwaysAvailableAction

String、複数指定可

メンテナンス中でも利用可能なアクション

alwaysAvailableWebApi

String、複数指定可

メンテナンス中でも利用可能なWebApi

設定例
<service>
    <interface>org.iplass.mtp.impl.tenant.available.TenantAvailableService</interface>
    <class>org.iplass.mtp.impl.tenant.available.TenantAvailableService</class>
    <property name="alwaysAvailableAction" value="gem/auth/login" />
    <property name="alwaysAvailableAction" value="gem/auth/dologin" />
    <property name="alwaysAvailableAction" value="gem/auth/logout" />
    <property name="alwaysAvailableAction" value="gem/auth/expiredpassword/update" />
    <property name="alwaysAvailableAction" value="gem/auth/verify2nd" />
    <property name="alwaysAvailableAction" value="mdc/auth/login" />
    <property name="alwaysAvailableAction" value="mdc/auth/dologin" />
    <property name="alwaysAvailableAction" value="mdc/auth/logout" />
    <property name="alwaysAvailableAction" value="mdc/auth/expiredpassword/update" />
    <property name="alwaysAvailableAction" value="mdc/auth/verify2nd" />

    <property name="alwaysAvailableWebApi" value="gem/auth/verifycodegen" />
    <property name="alwaysAvailableWebApi" value="mdc/auth/verifycodegen" />
</service>

3.68. TenantContextService

テナント全体の振る舞いを設定するサービスです。

インタフェース名

org.iplass.mtp.impl.core.TenantContextService

実装クラス名

org.iplass.mtp.impl.core.TenantContextService

TenantContextServiceの設定

テナント全体の振る舞いを設定します。

設定項目
項目 説明

defaultTenantName

String

デフォルトのテナント名。

defaultPasswordPatternErrorMessage

String

デフォルトのパスワード形式エラーメッセージ。

defaultMailFrom

String

デフォルトのメール送信Fromアドレス。テナント設定でFromアドレスが指定されていない場合に利用されます。

defaultMailFromName

String

デフォルトのメール送信Fromアドレス個人名。

sharedTenantId

int

共有テナントのID。RDBの場合、このテナントが共有テナントとして利用されます。-1は共有テナントなしとみなし動作します。デフォルト値は-1です。

共有テナントを有効化した状態でEntity定義を変更した場合は、それに連動してデータのメンテナンス処理が実行されますが、共有されたEntity定義を変更した場合は、すべてのテナントのデータに対してメンテナンス処理が実行されます。

Entityデータを格納するDBを複数のプロジェクト・システムで共有している場合、共有テナントを有効化した場合、意図せず他のプロジェクト・システムのデータを上書きしてしまう危険性があります。
共有テナントを有効化する場合、他のプロジェクト・システムとDBの共有はおこなわないことを推奨します。

localTenantIds

int、複数指定可

共有テナントを有効にした際、Entity定義更新時のデータメンテナンスを実施する個別テナントを指定可能。 設定されていない場合は、DBに登録されているすべてのテナント(共有テナント除く)を個別テナントとみなしデータメンテナンスを実施します。

sharedTenantIdの説明にあるように、共有テナントを有効化する場合、他プロジェクト・システムとDB共有しないことを推奨しますが、それが難しい場合にこのlocalTenantIdsを利用することが可能です。 共有されたEntity定義が変更された場合、データメンテナンス処理を指定されたテナントに限定することが可能となります。

設定例
<service>
    <interface>org.iplass.mtp.impl.core.TenantContextService</interface>
    <property name="defaultTenantName" value="iPLAss" />
    <property name="defaultMailFrom" value="notenant@nomail.iplass.org" />

    <!-- ■ if use shared tenant, set shared tenant id.(value:-1 for no use of shared tenant) -->
    <!--
    <property name ="sharedTenantId" value="-1" />
    -->
    <!--
        共有テナントを有効にした際、その共有テナントの配下の個別テナントを定義可能。
        定義されていない場合は、DBに登録されているすべてのテナント(共有テナント除く)を個別テナントとみなし動作します。
    -->
    <!--
    <property name ="localTenantIds" value="148" />
    <property name ="localTenantIds" value="149" />
    -->
</service>

3.69. TenantToolService

テナント管理ツールに関するサービスです。

インタフェース名

org.iplass.adminconsole.server.base.service.TenantToolService

実装クラス名

org.iplass.adminconsole.server.base.service.TenantToolService

TenantToolServiceの設定

TenantToolServiceを設定します。

設定項目
項目 説明

createProcesses

TenantCreateProcess、複数指定可

テナント作成時に実行するプロセスを設定。

tenantRdbManagerParameter

TenantRdbManagerParameter

RDB別テナント管理機能のパラメータを設定。

TenantCreateProcess

classはorg.iplass.mtp.impl.tools.tenant.create.TenantCreateProcessの実装クラスを指定します。

標準で以下のTenantCreateProcessを提供しています。

CreateAdminUserProcess

管理者ユーザーを作成します。

classにorg.iplass.mtp.impl.tools.tenant.create.CreateAdminUserProcessを指定します。 設定可能な項目はありません。

BlankSkipProcess

空のテナントを作成します。

classにorg.iplass.mtp.impl.tools.tenant.create.BlankSkipProcessを指定します。 設定可能な項目はありません。

CreateMenuProcess

初期メニュー定義を作成します。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateMenuProcessを指定します。 設定可能な項目はありません。

CreateTopViewProcess

初期TopView定義を作成します。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateTopViewProcessを指定します。 設定可能な項目はありません。

CreateAppAdminRoleProcess

管理者ロールと権限データを作成します。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleProcessを指定します。 設定可能な項目はありません。

CreateGemUserRoleProcess

Gemユーザー用ロールと権限データを作成します。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleProcessを指定します。 設定可能な項目はありません。

CreateAppAdminRoleEEProcess

管理者ロール向けのEnterpriseEdition用権限データを作成します。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleEEProcessを指定します。 設定可能な項目はありません。

CreateGemUserRoleEEProcess

Gemユーザーロール向けのEnterpriseEdition用権限データを作成します。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleEEProcessを指定します。 設定可能な項目はありません。

CreateAppConsolePermissionProcess

管理者ロールとGemユーザーロールにAppコンソール用権限データを作成します。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateAppConsolePermissionProcessを指定します。 設定可能な項目はありません。

CreateCompleteProcess

テナント作成完了処理を行います。

classはorg.iplass.mtp.impl.tools.tenant.create.CreateCompleteProcessを指定します。 設定可能な項目はありません。

TenantRdbManagerParameter

classは org.iplass.mtp.impl.tools.tenant.rdb.TenantRdbManagerParameter を指定します。 以下の項目を設定可能です。

項目 説明

deleteRows

Integer

テナント削除時、テーブルレコード削除件数。デフォルト値は 10,000

設定例
<service>
    <interface>org.iplass.mtp.impl.tools.tenant.TenantToolService</interface>

    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateAdminUserProcess" />
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.BlankSkipProcess" />
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateMenuProcess" />
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateTopViewProcess" />
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleProcess" />
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleProcess" />

    <!-- for ee -->
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleEEProcess" />
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleEEProcess" />
    <!-- for appconsole -->
    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateAppConsolePermissionProcess" />

    <property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateCompleteProcess" />

    <!-- TenartRdbManagerパラメータ -->
    <property name="tenantRdbManagerParameter" class="org.iplass.mtp.impl.tools.tenant.rdb.TenantRdbManagerParameter">
        <!-- テナント削除時のレコード削除件数。デフォルト値は 10,000 -->
        <!--
        <property name="deleteRows" value="10000" />
        -->
    </property>
</service>

3.70. ValidationService

入力チェックを行うためのサービスです。

インタフェース名

org.iplass.mtp.impl.validation.ValidationService

実装クラス名

org.iplass.mtp.impl.validation.ValidationService

ValidationService

ValidationServiceを設定します。

設定項目
項目 説明

beanValidation

BeanValidationConfig

Bean Validationの設定。

BeanValidationConfig

Bean Validationの設定を行います。

classはorg.iplass.mtp.impl.validation.bean.BeanValidationConfigを指定します。 以下の項目を指定可能です。

項目 説明

providerClass

String

javax.validation.spi.ValidationProviderの実装クラス名。

messageInterpolator

MessageInterpolator

MessageInterpolatorの設定。

properties

Properties、複数指定可

プロバイダ固有のプロパティ。

MessageInterpolator

classにjavax.validation.MessageInterpolatorの実装クラスを指定します。

標準でorg.iplass.mtp.impl.validation.bean.TenantContextMessageInterpolatorを提供しています。 以下の項目を指定可能です。

項目 説明

messageInterpolatorFactory

MessageInterpolatorFactory

MessageInterpolatorFactoryの実装クラス名。

MessageInterpolatorFactory

classにorg.iplass.mtp.impl.validation.bean.MessageInterpolatorFactoryの実装クラスを指定します。

標準でorg.iplass.mtp.impl.validation.bean.hibernate.HibernateMessageInterpolatorFactoryを提供しています。 以下の項目を指定可能です。

項目 説明

resourceBundleLocator

ResourceBundleLocator

ResourceBundleLocatorの実装クラス名。

cachingEnabled

boolean

キャッシュが有効か。

ResourceBundleLocator

classにorg.hibernate.validator.spi.resourceloading.ResourceBundleLocatorの実装クラスを指定します。

標準でorg.iplass.mtp.impl.validation.bean.hibernate.MessageResourceBundleLocatorを提供しています。 設定可能な項目はありません。

設定例
<service>
    <interface>org.iplass.mtp.impl.validation.ValidationService</interface>
    <class>org.iplass.mtp.impl.validation.ValidationService</class>
    <property name="beanValidation">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
        <property name="messageInterpolator" class="org.iplass.mtp.impl.validation.bean.TenantContextMessageInterpolator">
            <property name="messageInterpolatorFactory" class="org.iplass.mtp.impl.validation.bean.hibernate.HibernateMessageInterpolatorFactory">
                <property name="resourceBundleLocator" class="org.iplass.mtp.impl.validation.bean.hibernate.MessageResourceBundleLocator" />
                <property name="cachingEnabled" null="true" />
            </property>
        </property>
    </property>
</service>

3.71. WamService

Web会員管理機能のサービスです。

インタフェース名

org.iplass.wam.impl.WamService

実装クラス名

org.iplass.wam.impl.WamService

WamServiceの設定

Wamを設定します。

設定項目
項目 説明

tokenManager

TokenManager

TokenManagerの設定。デフォルトではEntityTokenManagerが使用されます。

httpClientConfig

HttpClientConfig

HTTPクライアントに関する設定。

stickySessionCookieName

String

スティッキーセッションのクッキー名。

TokenManager

classはorg.iplass.wam.api.siteauth.TokenManagerの実装クラスを指定します。

標準で、キャッシュで管理されたトークンの発行を行うorg.iplass.wam.impl.siteauth.CacheTokenManagerと、エンティティで管理されたトークンの発行を行うorg.iplass.wam.impl.siteauth.EntityTokenManagerを提供します。 CacheTokenManagerとEntityTokenManagerは設定変更可能な項目はありません。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。 以下の項目を設定可能です。

項目 説明

proxyHost

String

proxyを利用する場合のHost名。

proxyPort

int

proxyを利用する場合のport。

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。 デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)(ミリ秒)。 デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

設定例
<service>
    <interface>org.iplass.wam.impl.WamService</interface>
    <property name="tokenManager" class="org.iplass.wam.impl.siteauth.EntityTokenManager" />
    <property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
        <property name="proxyHost" value="proxyhost.dentsusoken.com"/>
        <property name="proxyPort" value="8080"/>
    </property>
    <property name="stickySessionCookieName" value="AWSELB"/>
</service>

3.72. WebApiJAXBService

WebApiのJAXBでの変換対象のクラス定義を行うサービスです。

インタフェース名

org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService

実装クラス名

org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService

WebApiJaxbServiceの設定

WebApiJaxbServiceを設定します。

設定項目
項目 説明

classToBeBound

String、複数指定可

WebApiのレスポンスでJAXBでの変換対象となるクラス。

設定例
<service>
    <interface>org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService</interface>
    <property name="classToBeBound" value="org.iplass.mtp.impl.webapi.jaxb.Builtins" />
    <!-- ee only classes -->
    <property name="classToBeBound" value="org.iplass.mtp.impl.webapi.jaxb.EnterpriseDefinitions" />
    <!--
    <property name="classToBeBound" value="org.iplass.mtp.impl.csv.CsvUploadResult" />
     -->
</service>

3.73. WebApiService

WebApiの定義(メタデータ)を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.webapi.WebApiService

実装クラス名

org.iplass.mtp.impl.webapi.WebApiService

WebApiServiceの設定

WebApiを設定します。

設定項目
項目 説明

enableDefinitionApi

boolean

DefinitionWebApiを公開するか。

enableBinaryApi

boolean

BinaryWebApiを公開するか。

writeEncodedFilenameInBinaryApi

boolean

BinaryWebApiのダウンロード操作時、 Content-Disposition レスポンスヘッダーに filename* 属性を出力するかを指定します。falseの場合は filename 属性を出力します。デフォルト値はfalseです。

unescapeFilenameCharacterInBinaryApi

String

BinaryWebApiのダウンロード操作時、Content-Disposition レスポンスヘッダーに filename* 属性を出力する際にエスケープしない文字を指定します(Alphabet、数値は無条件でエスケープ除外)。

acceptMimeTypesPatternInBinaryApi

String

BinaryWebApi のアップロード操作時、アップロード可能なファイルのMIME Typeパターンを指定します。設定値は正規表現パターンを指定します。
設定が無い場合はアップロード時のファイルの MIME Type の確認は実施しません。

設定例

  • CSVファイルのアップロード許可 ^(text/csv)$

  • PDFと画像のアップロード許可 ^(application/pdf|image/.*)$

検証対象となる MIME Type の決定方法については、WebFrontendService uploadFileTypeDetector, FileTypeDetector を参照してください。

statusMap

StatusMap、複数指定可

Exception発生時に返すステータスコードの対応設定。

xRequestedWithMap

Map

WebApiでX-Requested-Withヘッダをチェックする設定の時に、チェックする項目と比較する値。

cors

CorsConfig

本設定項目は非推奨となります。WebFrontendServiceのrequestRestrictionを利用ください。

XHR2(CORS)する際の許可ドメイン設定。

StatusMap

以下の項目が設定可能です。

項目 説明

exception

String

Exceptionのクラス名。

status

int

Exception発生時のステータスコード。

CorsConfig

以下の項目が設定可能です。

項目 説明

allowOrigin

String、複数指定可

アクセスを許可するドメイン。

allowCredentials

boolean

認証情報(Cookieなど)のやり取りを許可するか否か。デフォルト値はfalse。

設定例
<service>
    <interface>org.iplass.mtp.impl.webapi.WebApiService</interface>
    <property name="enableDefinitionApi" value="false" />
    <property name="enableBinaryApi" value="false" />
    <property name="writeEncodedFilenameInBinaryApi" value="false" />
    <property name="unescapeFilenameCharacterInBinaryApi" value="-._~" />

    <!-- バイナリファイルアップロード受け入れ可能な MIME Type パターン。正規表現を指定する。 -->
    <!-- 設定例
    <property name="acceptMimeTypesPatternInBinaryApi" value="^(image/.*|application/pdf|text/csv)$" />
    -->

    <property name="xRequestedWithMap">
        <property name="X-Requested-With" value="XMLHttpRequest" />
    </property>
    <property name="statusMap">
        <property name="exception" value="org.iplass.mtp.auth.NoPermissionException" />
        <property name="status" value="403" />
    </property>
    <property name="statusMap">
        <property name="exception" value="org.iplass.mtp.auth.NeedTrustedAuthenticationException" />
        <property name="status" value="403" />
    </property>
    <property name="statusMap">
        <property name="exception" value="org.iplass.mtp.tenant.available.UnavailableException" />
        <property name="status" value="503" />
    </property>
    <property name="statusMap">
        <property name="exception" value="org.iplass.mtp.ApplicationException" />
        <property name="status" value="500" />
    </property>
    <property name="statusMap">
        <property name="exception" value="org.iplass.mtp.SystemException" />
        <property name="status" value="500" />
    </property>
</service>

3.74. WebFrontendService

Webアプリケーション全般の動作を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.web.WebFrontendService

実装クラス名

org.iplass.mtp.impl.web.WebFrontendService

WebFrontendServiceの設定

Webアプリケーション共通の振る舞いを設定します。

設定項目
項目 説明

defaultContentType

String

TemplateのContent Disposition TypeがDefaultの場合に指定するContentType。 未指定時は text/html; charset=utf-8 となります。

defaultClientCacheType

String

Actionのデフォルトのクライアントキャッシュ。 キャッシュを許可する場合は CACHE を、許可しない場合は NO_CACHE を設定します。未指定時のデフォルトは、 CACHE です。

デフォルトのクライアントキャッシュでは、 CACHE_PUBLIC は設定できません。CACHE_PUBLIC を指定したい場合は個別のAction定義で指定してください。

defaultCacheControlType

String

WebAPIのデフォルトのキャッシュコントロール設定。 キャッシュを許可する場合は CACHE を、許可しない場合は NO_CACHE を設定します。未指定の場合は、 Cache-Control ヘッダを設定しません。

デフォルトのキャッシュコントロール設定では、 CACHE_PUBLIC は設定できません。CACHE_PUBLIC を指定したい場合は個別のWebApi定義で指定してください。

staticContentPath

String

静的コンテンツを格納しているルートパス。 未指定の場合はアプリケーションのコンテキストパス(servletContextPath)が利用されます。 通常は未指定で構いません。

excludePath

String、複数指定可

iPLAss管理対象外のリソースのパス。 正規表現で指定します。 指定するパスのパターンにはservletContextPathは含めません。 このパスに一致するパスの場合は、iPLAss(DispatcherFilter)では一切処理(テナント確定、権限チェック、Action/WebApi定義の実行等)せず、後続のFilterChainにdoFilter()します。 静的コンテンツのパス、独自実装のServletのパスなどが指定されます。

acceptPath

String、複数指定可

iPLAssでの処理を受け付けるリソースのパス。 正規表現で指定します。 指定するパスのパターンにはtenantContextPathは含めません。 未指定の場合は、excludePathにマッチしないリソースパスはすべてiPLAssで処理されます。 acceptPathにマッチしない場合は、HTTPステータス404が返却されます。 通常は未指定で構いませんが、サーバ毎に実行するAction/WebApiを限定したい場合などに利用可能です。 また、次に説明するrejectPathと組み合わせて利用することが可能です。

rejectPath

String、複数指定可

iPLAssでの処理を拒否するリソースのパス。 正規表現で指定します。 指定するパスのパターンにはtenantContextPathは含めません。 rejectPathが未指定の場合は、excludePathにマッチしないリソースパスはすべてiPLAssで処理されます。 通常は未指定で構いませんが、サーバ毎に実行するAction/WebApiを限定したい場合などに利用可能です。

acceptPathと組み合わせて指定することが可能です。

acceptPathが未指定の場合

rejectPathにマッチした場合は、HTTPステータス404が返却されます。

acceptPathが指定されている場合

acceptPathにマッチしないか、もしくはrejectPathにマッチした場合は、HTTPステータス404が返却されます。

throughPath

String、複数指定可

Action/WebApi定義にマッピングされないリソースのパス。 正規表現で指定します。 指定するパスのパターンにはtenantContextPathは含めません。 このパスに一致するパスの場合は、iPLAss(DispatcherFilter)にてテナントの確定処理まで行われますが、iPLAss内に定義されるAction/WebApiを呼び出さず、後続FilterChainにdoFilter()します。

restPath

String

WebApiのパス定義を設定します。 iPLAssの処理において、restPathに指定された文字列で開始するリソースパスはWebApiとして処理します。restPathの後をWebApi名として処理します。

requestRestriction

RequestRestriction、複数指定可

HTTPリクエストに対する制約(最大リクエストボディサイズ、許可するHTTP Methodなど)を定義可能です。

errorUrlSelector

ErrorUrlSelector

エラーページの表示を行うErrorUrlSelector。

loginUrlSelector

LoginUrlSelector

ログインページの表示を行うLonginUrlSelector。

logoutUrl

String

ログアウト時にキックするURL。

contentDispositionPolicy

ContentDispositionPolicy、複数指定可

ContentDispositionの出力設定。

tempFileDir

String

テンポラリファイル格納パス。 未指定時は「javax.servlet.context.tempdir」を使用します。

maxUploadFileSize

long

本設定項目は非推奨となります。requestRestrictionを利用ください。

ファイルアップロード時のサイズ上限。 -1を指定した場合は上限がなくなります。未指定時は-1となります。

uploadFileScanner

FileScanner

ウィルススキャン実行設定。

uploadFileTypeDetector

FileTypeDetector

アップロードファイルの MIME Type(メディアタイプ)を検出する機能。

isExecMagicByteCheck

boolean

アップロードファイルのマジックバイトチェックを行うか。

magicByteChecker

MagicByteChecker

アップロードファイルのマジックバイトチェック設定。

directAccessPort

String

ダイレクトアクセスポート。 このポートの場合テナントのurlForRequest指定は無効となります。

transactionTokenMaxSize

int

トランザクショントークンの保有上限。

welcomeAction

String、複数指定可

リクエストされたURLのアクション部分が「/」の場合に、代わりに実行するアクション。

redirectAfterLogin

boolean

未ログイン状態でアクセスしたアクションに対して、ログイン後にリダイレクトを行うか。 リダイレクトを行う場合、アクションがGETメソッドを許可している必要があります。

tenantAsDomain

boolean

テナントをHTTP Headerの Host で指定されるFQDNから解決します。

fixedTenant

String

設定された値を固定の単一のテナントとして扱います。

mdc

Stringもしくは MdcValueResolver、Map形式

slf4jのMDCへセットする値を設定します。keyにMDCのkey名、値に次のStringもしくはMdcValueResolverを実装したクラスを指定します。

generateUuid

リクエスト単位にUUIDを生成してMDCにセットします

generateInsecureUuid

リクエスト単位に一意なIDを生成してMDCにセットします。generateUuidより高速にID生成可能ですが疑似乱数ベースです。

remoteHost

ServletRequestからremoteHostの値をセットします

remoteAddr

ServletRequestからremoteAddrの値をセットします

header.[header名]

[header名]で指定されるHTTPヘッダーの値をセットします

sessionId

リクエスト開始時のセッションIDをセットします

maxMultipartParameterCount

long

ファイルアップロード等のマルチパートリクエスト時のパラメータ数を制限する最大値を設定します。パラメータ数が制限を超過したリクエストは拒否されます。 パラメータ数を制限しない場合は -1 を設定します。デフォルト値は 10,000 です。

RequestRestriction

classはorg.iplass.mtp.impl.web.RequestRestrictionを指定します。

以下の項目を設定可能です。

項目 説明

pathPattern

String

制約を適用するパスの正規表現を指定します。 指定するパスのパターンにはtenantContextPathは含めません。 pathPatternを指定しないRequestRestrictionを1つだけ定義することが可能です。その他のRequestRestriction定義のpathPatternに一致しない場合に適用するデフォルトの制約を定義することが可能です。

allowMethods

String、複数指定可

許可するHTTP Methodを指定。 * を指定した場合、すべてを許可します。

allowContentTypes

String、複数指定可

許可するリクエストのContentTypeを指定。 */* を指定した場合、すべてを許可します。

maxBodySize

long

ボディコンテンツの最大サイズ。-1指定の場合は無制限となります。 未指定時のデフォルト値は-1です。

maxFileSize

long

アップロードファイルの最大サイズ。-1指定の場合は無制限となります。 未指定時のデフォルト値は-1です。

cors

CorsConfig

XHR2(CORS)する際の許可ドメイン設定。

force

boolean

Action定義、WebApi定義で個別に制約が設定されている場合、どちらの定義を優先するかを指定します。 trueの場合、本設定(RequestRestrictionの設定)が優先されます。 falseの場合、Action定義、WebApi定義での個別の設定が優先されます。 未指定時のデフォルト値はfalseです。

CorsConfig

以下の項目が設定可能です。

項目 説明

allowOrigin

String、複数指定可

アクセスを許可するドメイン。 *.dentsusoken.com のように、ワイルドカードを指定することが可能。

allowCredentials

boolean

認証情報(Cookieなど)のやり取りを許可するか否か。デフォルト値はfalse。

ErrorUrlSelector

classはorg.iplass.mtp.impl.web.ErrorUrlSelectorの実装クラスを指定します。

標準で、以下のErrorUrlSelectorを提供します。

GemErrorUrlSelector、EnterpriseGemErrorUrlSelector、MdcErrorUrlSelectorは設定変更可能な項目はありません。

CompositeErrorUrlSelector

classは、org.iplass.mtp.impl.web.CompositeErrorUrlSelectorを指定します。
パス単位でErrorUrlSelectorを切り替えることが可能なErrorUrlSelectorです。以下の項目を設定可能です。

項目 説明

selectorMap

ErrorUrlSelector, Map形式

Keyに処理したいリクエストパス、Valueに ErrorUrlSelector の実装クラスを指定します。
エラー発生時のリクエストパス(Action名)がKeyで指定した値で始まっていた場合(String#startsWithで判定)、Valueに指定した ErrorUrlSelector でエラー画面のテンプレート名を決定します。いずれのKeyにもマッチしなかった場合は、 Keyが default の ErrorUrlSelector でエラー画面のテンプレート名を決定します。 少なくとも、Keyが default の ErrorUrlSelector を必ず指定してください。

LoginUrlSelector

classはorg.iplass.mtp.impl.web.LoginUrlSelectorの実装クラスを指定します。

標準で、以下のLoginUrlSelectorを提供します。

  • org.iplass.gem.GemLoginUrlSelector

  • org.iplass.mtp.mdc.MdcLoginUrlSelector

GemLoginUrlSelector及びMdcLoginUrlSelectorは設定変更可能な項目はありません。

ContentDispositionPolicy

classはorg.iplass.mtp.impl.web.ContentDispositionPolicyを指定します。 以下の項目を設定可能です。

項目 説明

userAgentKey

String

UserAgent識別子(*はデフォルト)。

contentDispositionTypeName

String

ContentDispositionType名(*は全て)。

unescapeCharacter

String

エスケープしない文字(Alphabet、数値は無条件でエスケープ除外)。

defaultContentDispositionTypeName

String

未指定時のContentDispositionType名。

useBothFilenameAttributes

boolean

filenamefilename* の両方を出力するかを設定します。デフォルト値はfalseです。

FileScanner

classはorg.iplass.mtp.impl.web.fileupload.FileScannerの実装クラスを指定します。

標準で、ウィルススキャンの実行を行うorg.iplass.mtp.impl.web.fileupload.DefaultVirusScannerを提供します。 DefaultVirusScannerは以下の項目を設定可能です。

項目 説明

commandPath

String、必須

ウィルススキャンコマンドのパス。 ${file} で指定した箇所にスキャン対象のファイルパスが埋め込まれます。

timeout

long、必須

ウィルススキャンのタイムアウト時間(秒)。

errorOnTimeout

boolean

タイムアウトした場合、エラーとして処理中断するか否か。デフォルト値はfalseです。

successExitValue

int、複数指定可

スキャンが正常に終了したことを表すexit code (status)。指定された場合、当該のexit code (status)が返却されない場合はエラーとして処理中断します。

FileTypeDetector

org.iplass.mtp.impl.web.fileupload.FileTypeDetector の実装クラスを指定します。

標準機能として、以下の FileTypeDetector を提供します。

  • org.iplass.mtp.impl.web.fileupload.DefaultFileTypeDetector

    • 標準で設定される FileTypeDetector です。MIME Type(メディアタイプ)はブラウザが送信した値となります。

    • DefaultFileTypeDetector の設定項目はありません。

  • org.iplass.mtp.impl.web.fileupload.TikaFileTypeDetector

    • Apache Tika を利用した FileTypeDetector です。MIME Type(メディアタイプ)は Tika 機能によりアップロードファイルを検証し決定します。

TikaFileTypeDetector

classは TikaFileTypeDetector は以下の項目を設定可能です。

項目 説明

fileUploadTikaAdapter

FileUploadTikaAdapter

ファイルアップロード機能で利用する Tika 依存関係を解消するアダプタ。

FileUploadTikaAdapter

org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapter の実装クラスを指定します。

標準のアダプタ実装として org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapterImpl を提供します。
TikaFileTypeDetector で抽出可能な MediaType(MimeType) と TikaMagicByteChecker で検査可能なファイル種別について、Tika 設定の違いによる不整合を避けるために、Tika インスタンスを共有することを推奨します。
インスタンスを共有するためには、FileUploadTikaAdapter インターフェースの実装クラスを bean 定義し、TikaFileTypeDetector、TikaMagicByteChecker のプロパティで参照します。

FileUploadTikaAdapterImpl は以下の項目を設定可能です。

項目 説明

tikaConfigXml

String

ファイルアップロード機能で利用する Apache Tika 設定ファイル(tika-config.xml)を指定します。 Apache Tika 設定ファイル内で Mimeタイプ定義ファイル(tika-mimetypes.xml)を指定することで、カスタマイズした定義を利用することができます。

設定ファイル tika-config.xml, tika-mimetypes.xml の定義方法は、公式サイトを確認してください。

MagicByteChecker

classはorg.iplass.mtp.impl.web.fileupload.MagicByteCheckerの実装クラスを指定します。

標準機能として、以下の MagicByteChecker を提供します。

  • org.iplass.mtp.impl.web.fileupload.DefaultMagicByteChecker

    • 標準で設定される MagicByteChecker です。条件(Mimeタイプと拡張子)に一致するルールが指定されている場合、そのルールで定義されているマジックバイトのどれかが一致するかをチェックします。

  • org.iplass.mtp.impl.web.fileupload.TikaMagicByteChecker

    • Apache Tika を利用した MagicByteChecker です。Apache Tika のMimeタイプ設定(tika-mimetypes.xml)から定義情報を抽出し、拡張子・マジックバイトのチェックを実施します。

    • TikaMagicByteChecker を利用する場合は、FileTypeDetector の設定を TikaFileTypeDetector にすることを推奨します。

DefaultMagicByteChecker

DefaultMagicByteCheckerは以下の項目を設定可能です。

項目 説明

magicByteRule

MagicByteRule、複数指定可

マジックバイトをチェックするルール

MagicByteRule

classはorg.iplass.mtp.impl.web.fileupload.MagicByteRuleを指定します。以下の項目を設定可能です。

項目 説明

mimeType

MagicByteRuleCondition

Mimeタイプの条件

extension

MagicByteRuleCondition

拡張子の条件

magicByte

String、複数指定可

比較するマジックバイトの先頭を指定します。

MagicByteRuleCondition

classはorg.iplass.mtp.impl.web.fileupload.MagicByteRuleConditionを指定します。以下の項目を設定可能です。

項目 説明

useRegex

boolean

条件比較で正規表現を利用するか。trueの場合、patternの値を正規表現のパターンとしてチェックします。falseの場合、patternの値を文字列として比較します。デフォルト値はfalseです。

pattern

String、必須

条件のパターン値

TikaMagicByteChecker

TikaMagicByteCheckerは以下の項目を設定可能です。

項目 説明

fileUploadTikaAdapter

FileUploadTikaAdapter、必須

ファイルアップロード機能で利用する Tika 依存関係を解消するアダプタ。

checkExtension

boolean

アップロードファイルの拡張子が Tika Mimeタイプに定義されている拡張子に含まれるかのチェック設定。デフォルト設定はチェックする(true)です。

readMagicLength

int

マジックバイトチェック時に読み取るバイト長。デフォルト設定は 65,536 です。

throwExceptionIfMimeTypeIsNull

boolean

Tika Mimeタイプを見つけることができない場合、チェックエラーとする設定。デフォルト設定はチェックエラーとしない(false)です。

throwExceptionIfFileCannotRead

boolean

マジックバイトチェック時にチェック対象ファイルを読み取れない場合、チェックエラーとする設定。デフォルト設定はチェックエラーとしない(false)です。

substitutionMediaType

Map形式

マジックバイトチェック時に特定のMimeタイプの場合、別のMimeタイプに読み替える設定です。name 属性に読み替え対象のMimeタイプ、value 属性に読み替え後のMimeタイプを設定します。FileTypeDetector で検出した Mimeタイプでマジックバイトチェックができない場合に利用します。

具体例として、"application/vnd.apple.keynote.13" は、Mimeタイプを検出できずマジックバイトチェックが実施できません。マジックバイトチェックを実施するためには、"application/vnd.apple.keynote" に読み替える必要があります。

MdcValueResolver

classはorg.iplass.mtp.impl.web.mdc.MdcValueResolverの実装クラスを指定します。

標準で、以下のMdcValueResolverを提供します。

UuidMdcValueResolver

classはorg.iplass.mtp.impl.web.mdc.UuidMdcValueResolverを指定します。

UUIDを生成するMdcValueResolverです。以下の項目を設定可能です。

項目 説明

secure

boolean

UUIDの生成にSecureRandomを利用するか否か。デフォルト値はtrueです。falseの場合はIDを高速に生成可能ですが疑似乱数ベースとなります。

WebFrontendServiceのmdcへの設定ではStringにて、 generateUuid を指定することによりsecure=trueのUuidMdcValueResolverが設定されます。 generateInsecureUuid を指定することによりsecure=falseのUuidMdcValueResolverが設定されます。

RemoteHostMdcValueResolver

classはorg.iplass.mtp.impl.web.mdc.RemoteHostMdcValueResolverを指定します。

ServletRequestからremoteHostの値を取得します。
WebFrontendServiceのmdcへの設定ではStringにて、 remoteHost を指定することによりRemoteHostMdcValueResolverが設定されます。

RemoteAddrMdcValueResolver

classはorg.iplass.mtp.impl.web.mdc.RemoteAddrMdcValueResolverを指定します。

ServletRequestからremoteAddrの値を取得します。
WebFrontendServiceのmdcへの設定ではStringにて、 remoteAddr を指定することによりRemoteAddrMdcValueResolverが設定されます。

HttpHeaderMdcValueResolver

classはorg.iplass.mtp.impl.web.mdc.HttpHeaderMdcValueResolverを指定します。

ServletRequestからHTTPヘッダーの値を取得します。以下の項目を設定可能です。

項目 説明

headerName

String

取得するHTTPヘッダー名

WebFrontendServiceのmdcへの設定ではStringにて、 header.[header名] の形式で指定することによりheaderName=[header名]のHttpHeaderMdcValueResolverが設定されます。

SessionIdMdcValueResolver

classはorg.iplass.mtp.impl.web.mdc.SessionIdMdcValueResolverを指定します。

リクエスト開始時に既に作成されているセッションのIDを設定します。
WebFrontendServiceのmdcへの設定ではStringにて、 sessionId を指定することによりSessionIdMdcValueResolverが設定されます。

AmznTraceIdMdcValueResolver

classはorg.iplass.mtp.impl.aws.web.mdc.AmznTraceIdMdcValueResolverを指定します。

HTTPヘッダーに設定されているX-Amzn-Trace-Idの値の特定のフィールド値を取得します。以下の項目を設定可能です。

項目 説明

field

String

取得するフィールド名。RootもしくはSelfを指定。

設定例
<service>
    <interface>org.iplass.mtp.impl.web.WebFrontendService</interface>
    <class>org.iplass.mtp.impl.web.WebFrontendService</class>
    <!-- welcome file(action) -->
    <property name="welcomeAction" value="index" />
    <property name="transactionTokenMaxSize" value="50" />
    <property name="defaultClientCacheType" value="CACHE" />
    <!-- DispatcherFilterで処理しないpathの定義 -->
    <!-- static contents -->
    <property name="excludePath" value="(/errorhtml/.*)|(/images/.*)|(/scripts/.*)|(/styles/.*)|(/favicon.ico)|(/webjars/.*)" />
    <!-- servlet implementation -->
    <property name="excludePath" value="(/checkStatus)|(/cmcs)" />

    <!-- gemモジュールのみ許可 -->
    <property name="acceptPath" value="/gem/.*" />
    <property name="acceptPath" value="/api/gem/.*" />

    <!-- WebApi(REST)のpathの定義 -->
    <property name="restPath" value="/api/" />


    <!-- デフォルトのRequestRestriction定義 -->
    <property name="requestRestriction">
        <property name="allowMethods" value="*" />
        <property name="allowContentTypes" value="*/*" />
        <property name="force" value="false" />
    </property>

    <!-- api/sample配下(WebApi)に対するRequestRestriction定義 -->
    <property name="requestRestriction">
        <property name="pathPattern" value="^/api/sample/.*" />
        <property name="allowMethods" value="GET" />
        <property name="allowMethods" value="POST" />
        <property name="allowContentTypes" value="*/*" />
        <property name="cors">
            <!-- https://sample.iplass.org、https://sample2.iplass.orgからのCORSを許可 -->
            <property name="allowOrigin" value="https://sample.iplass.org" />
            <property name="allowOrigin" value="https://sample2.iplass.org" />
            <property name="allowCredentials" value="true" />
        </property>
        <property name="force" value="false" />
    </property>

    <!-- ログアウト時にキックするURL -->
    <property name="logoutUrl" value="logout" />
    <!-- エラーページの設定 -->
    <property name="errorUrlSelector" class="org.iplass.gem.GemErrorUrlSelector" />
    <!-- ログインページの設定 -->
    <property name="loginUrlSelector" class="org.iplass.gem.GemLoginUrlSelector" />
    <!-- テンポラリファイル格納パス 未指定時は「javax.servlet.context.tempdir」を使用 -->
    <!--
    <property name="tempFileDir" value="/tmp" />
    -->
    <!-- ダイレクトアクセスポート このポートの場合テナントのurlForRequest指定は無効 -->
    <!--
    <property name="directAccessPort" value="8080" />
    -->
    <!-- Webクライアントのモード DEBUGを指定した場合、WebApiアクセスエラー時にエラー内容を表示 -->
    <!--
    <property name="clientMode" value="DEBUG" />
    -->

    <!-- ContentDispositionの出力設定 -->
    <!-- default -->
    <property name="contentDispositionPolicy" class="org.iplass.mtp.impl.web.ContentDispositionPolicy">
        <property name="userAgentKey" value="*" />
        <property name="contentDispositionTypeName" value="*" />
        <property name="unescapeCharacter" value="-._~" />
        <property name="defaultContentDispositionTypeName" value="ATTACHMENT" />
        <property name="useBothFilenameAttributes" value="false" />
    </property>
    <!-- IE11 -->
    <!-- IE11の場合、INLINEではブランクをエスケープしない -->
    <property name="contentDispositionPolicy" class="org.iplass.mtp.impl.web.ContentDispositionPolicy">
        <property name="userAgentKey" value="Trident" />
        <property name="contentDispositionTypeName" value="INLINE" />
        <property name="unescapeCharacter" value="-._~ " />
        <property name="useBothFilenameAttributes" value="false" />
        <!--
        <property name="defaultContentDispositionTypeName" value="" />
         -->
    </property>
    <!--
        追加する場合、userAgentKey、contentDispositionTypeNameごとにエスケープしない文字を指定。
        contentDispositionTypeName: * | ATTACHMENT | INLINE
        unescapeCharacter: アルファベット、数字以外で除外する文字
    -->
    <!--
    <property name="contentDispositionPolicy" class="org.iplass.mtp.impl.web.ContentDispositionPolicy">
        <property name="userAgentKey" value="XXXX" />
        <property name="contentDispositionTypeName" value="INLINE" />
        <property name="unescapeCharacter" value="-._~" />
    </property>
    -->

    <!-- ウィルススキャン実行 -->
    <property name="uploadFileScanner" class="org.iplass.mtp.impl.web.fileupload.DefaultVirusScanner" >
        <property name="commandPath" value="path/to/virusScanner ${file}" />
        <property name="timeout" value="15" />
    </property>

    <!--
    FileUpload機能用の Tika アダプタ。

    TikaFileTypeDetector、TikaMagicByteChecker でインスタンスを共有することを想定。
    tikaConfigXml を指定しない場合は、apache tika のデフォルト設定で動作します。
    -->
    <!--
    <bean name="tikaAdapter" class="org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapterImpl">
        <property name="tikaConfigXml" value="/tika-config.xml" />
    </bean>
    -->

    <!-- ファイルタイプ(MIME Type・メディアタイプ)検出機能 -->
    <!-- デフォルト。未指定の場合も以下のインスタンスが設定される -->
    <!--
    <property name="uploadFileTypeDetector" class="org.iplass.mtp.impl.web.fileupload.DefaultFileTypeDetector" />
    -->
    <!-- Apache Tika を利用したファイルタイプ(MIME Type・メディアタイプ)検出機能。bean tikaAdapter を有効化すること。 -->
    <!--
    <property name="uploadFileTypeDetector" class="org.iplass.mtp.impl.web.fileupload.TikaFileTypeDetector">
        <property name="fileUploadTikaAdapter" ref="tikaAdapter" />
    </property>
    -->

    <!-- MagicByteCheck実行するか -->
    <property name="isExecMagicByteCheck" value="true" />
    <!-- MagicByteCheck実行 -->
    <property name="magicByteChecker" class="org.iplass.mtp.impl.web.fileupload.DefaultMagicByteChecker" >
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="pattern" value="image/gif" />
            </property>
            <property name="magicByte" value="474946383761" />
            <property name="magicByte" value="474946383961" />
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="pattern" value="image/bmp" />
            </property>
            <property name="magicByte" value="424d" />
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="pattern" value="image/jpeg" />
            </property>
            <property name="magicByte" value="ffd8" />
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="pattern" value="image/png" />
            </property>
            <property name="magicByte" value="89504e470d0a1a0a" />
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="pattern" value="application/x-shockwave-flash" />
            </property>
            <property name="magicByte" value="465753" />
            <property name="magicByte" value="435753" />
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="pattern" value="application/pdf" />
            </property>
            <property name="magicByte" value="25504446" />
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="useRegex" value="true" />
                <property name="pattern" value="^application/vnd[.]ms-.*|^application/msword.*" />
            </property>
            <property name="extension" class="org.iplass.mtp.impl.web.fileupload.MagicByteRuleCondition" >
                <property name="pattern" value="csv" />
            </property>
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="useRegex" value="true" />
                <property name="pattern" value="^application/vnd[.]ms-.*|^application/msword.*" />
            </property>
            <property name="magicByte" value="504b030414000600" />
            <property name="magicByte" value="d0cf11e0a1b11ae1" />
            <property name="magicByte" value="7b5c72746631" />
        </property>
        <property name="magicByteRule" >
            <property name="extension" >
                <property name="pattern" value="xls" />
            </property>
            <property name="magicByte" value="d0cf11e0a1b11ae1" />
        </property>
        <property name="magicByteRule" >
            <property name="mimeType" >
                <property name="useRegex" value="true" />
                <property name="pattern" value="^application/vnd[.]openxmlformats-officedocument.*" />
            </property>
            <property name="magicByte" value="504b030414000600" />
            <property name="magicByte" value="d0cf11e0a1b11ae1" />
            <property name="magicByte" value="504b030414000808" />
            <property name="magicByte" value="504B03040A000000" />
            <property name="magicByte" value="504B030414000000" />
        </property>
    </property>

    <!--
    Apache Tika を利用した MagicByteCheck 処理。bean tikaAdapter を有効化する。
    本チェック機能を利用する場合は、MimeType検出とMagicByteチェック処理を Tika を利用することを推奨する。
    MimeType検出機能で tika を利用する為には property uploadFileTypeDetector を TikaFileTypeDetector に変更する。
    -->
    <!--
    <property name="magicByteChecker" class="org.iplass.mtp.impl.web.fileupload.TikaMagicByteChecker" >
        <property name="fileUploadTikaAdapter" ref="tikaAdapter" />
        <property name="checkExtension" value="true" />
        <property name="readMagicLength" value="65536" />
        <property name="throwExceptionIfMimeTypeIsNull" value="false" />
        <property name="throwExceptionIfFileCannotRead" value="false" />
        <property name="substitutionMediaType">
            <property name="application/vnd.apple.keynote.13" value="application/vnd.apple.keynote" />
        </property>
    </property>
    -->

    <!-- MDC設定 -->
    <property name="mdc">
        <property name="traceId" class="org.iplass.mtp.impl.aws.web.mdc.AmznTraceIdMdcValueResolver">
            <property name="field" value="Root" />
        </property>
        <property name="ipaddress" value="remoteAddr" />
        <property name="ua" value="header.User-Agent" />
    </property>
</service>

3.75. WebhookService

WebhookTemplateの定義(メタデータ)の管理と、Webhookを実行する為のサービスです。

インタフェース名

org.iplass.mtp.impl.webhook.WebhookService

実装クラス名

org.iplass.mtp.impl.webhook.WebhookServiceImpl

WebhookServiceの設定

Webhookを利用する場合、WebhookServiceを設定します。

設定項目
項目 説明

retry

boolean

通信失敗時にリトライを行うか否かを指定します。

retryMaximumAttempts

int

(リトライを行う場合)最大何回リトライを行うかを設定します。

retryInterval

int

(リトライを行う場合)リトライ間隔をミリ秒単位で指定します。

hmacHashAlgorithm

String

HMAC認証でキーを生成する際のハッシュアルゴリズムを指定します。未指定の場合のデフォルト値は "HmacSHA256"です。

hmacDefaultHeaderName

String

HMACの値をセットするヘッダ名を指定します。未指定の場合のデフォルト値は"X-IPLASS-HMAC"です。WebhookTemplate定義でも、HMACの値をセットするヘッダ名を指定した場合は、WebhookTemplate定義の設定が優先されます。

httpClientConfig

HttpClientConfig

Webhookを送る時のHTTPコネクションに関する設定です。

HttpClientConfig

classはorg.iplass.mtp.impl.http.HttpClientConfigを指定します。 以下の項目を設定可能です。

項目 説明

connectionTimeout

int

HTTPコネクションを確立する際のタイムアウト(ミリ秒)。デフォルト値は30000(30秒)です。

soTimeout

int

HTTP通信時のsocket timeout (SO_TIMEOUT)(ミリ秒)。デフォルト値は30000(30秒)です。

poolingMaxTotal

int

httpコネクションのプールの最大数。デフォルト値は20です。

poolingDefaultMaxPerRoute

int

ドメイン単位のhttpコネクションの最大数。デフォルト値は2です。

poolingTimeToLive

int

プールされているhttpコネクションの生存期間(ミリ秒)。デフォルトは無制限です。

proxyHost

String

プロキシサーバのホスト。

proxyPort

int

プロキシサーバのポート番号。

httpClientBuilderFactory

HttpClientBuilderFactory

カスタムのHttpClientBuilderを生成したい場合に指定します。

HttpClientBuilderFactory

classはorg.iplass.mtp.impl.http.HttpClientBuilderFactoryを実装するクラスを指定します。

標準で以下のHttpClientBuilderFactoryを提供します。

設定例
    <!-- Webhook -->
    <service>
        <interface>org.iplass.mtp.impl.webhook.WebhookService</interface>
        <class>org.iplass.mtp.impl.webhook.WebhookServiceImpl</class>
        <property name="retry" value="true" />
        <property name="retryMaximumAttempts" value="10" />
        <property name="retryInterval" value="500" />
        <property name="hmacHashAlgorithm" value="HmacSHA256" />
        <property name="hmacDefaultHeaderName" value="X-IPLASS-HMAC" />
<!--        <property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig"> -->
<!--            <property name="proxyHost" value="localhost" /> -->
<!--            <property name="proxyPort" value="8080" /> -->
<!--            <property name="poolingMaxTotal" value="20" /> -->
<!--            <property name="poolingDefaultMaxPerRoute" value="20" /> -->
<!--            <property name="poolingTimeToLive" value="50000" /> -->
<!--        </property> -->
    </service>

    <!-- WebhookEndpoint -->
    <service>
        <interface>org.iplass.mtp.impl.webhook.endpoint.WebhookEndpointService</interface>
        <class>org.iplass.mtp.impl.webhook.endpoint.WebhookEndpointServiceImpl</class>
    </service>

3.76. WorkflowService

ワークフローの動作を管理するサービスです。

インタフェース名

org.iplass.mtp.impl.workflow.WorkflowService

実装クラス名

org.iplass.mtp.impl.workflow.WorkflowService

WorkflowServiceの設定

WorkflowServiceを設定します。

設定項目
項目 説明

workflowInstanceStore

WorkflowInstanceStore

ワークフローインスタンスの管理方法。

historyLogStore

HistoryLogStore

ワークフロー履歴の管理方法。

queueForWorkflow

String

ワークフロー用のキュー名。

WorkflowInstanceStore

classにorg.iplass.mtp.impl.workflow.WorkflowInstanceStoreの実装クラスを指定します。

標準でorg.iplass.mtp.impl.workflow.store.EntityWorkflowInstanceStoreを提供します。 ワークフローインスタンスをEntityとして管理します。 設定可能な項目はありません。

HistoryLogStore

classにorg.iplass.mtp.impl.workflow.HistoryLogStoreの実装クラスを指定します。

標準で以下のHistoryLogStoreを提供します。

LoggerHistoryLogStore

ワークフロー履歴をログとして管理します。

classはorg.iplass.mtp.impl.workflow.store.LoggerHistoryLogStoreを指定します。 設定可能な項目はありません。

EntityHistoryLogStore

ワークフロー履歴をEntityとして管理します。

classはorg.iplass.mtp.impl.workflow.store.EntityHistoryLogStoreを指定します。 設定可能な項目はありません。

設定例
<service final="true">
    <interface>org.iplass.mtp.impl.workflow.WorkflowService</interface>
    <class>org.iplass.mtp.impl.workflow.WorkflowService</class>
    <property name="workflowInstanceStore" class="org.iplass.mtp.impl.workflow.store.EntityWorkflowInstanceStore" />
    <property name="historyLogStore" class="org.iplass.mtp.impl.workflow.store.EntityHistoryLogStore" />
</service>

4. ログ(Slf4j/Logback)

iPLAssではログ出力にSlf4j/Logbackを利用しています。

4.1. ロガー名

iPLAssでは以下のログが標準で出力されます。 必要に応じログファイル等に出力したいログのロガー名をlogback.xmlに指定してください。

  • 監査に関するログ

    ロガー名 出力内容

    mtp.audit

    データの操作に関するログが出力されます。

    mtp.audit.admin

    AdminConsoleでの操作に関するログが出力されます。 ファイルのダウンロード操作( mtp.audit.admin.download )、AuditLogデータのメンテナンス操作( mtp.audit.admin.auditlog )に関するログが出力されます。

    mtp.audit.download

    ファイルのダウンロード操作に関するログが出力されます。

    mtp.audit.porting.entity

    エンティティの操作に関するログが出力されます。

    mtp.audit.porting.metadata

    メタデータの操作に関するログが出力されます。

    mtp.audit.porting.pack

    パッケージの操作に関するログが出力されます。

  • 認証に関するログ

    ロガー名 出力内容

    mtp.auth

    認証に関するログが出力されます。

  • 実行ログ

    ロガー名 出力内容

    mtp.action

    Actionを呼び出した際の実行ログです。実行時間、クエリー発行回数、エラー内容などが出力されます。

    mtp.webapi

    Web APIを呼び出した際の実行ログです。実行時間、クエリー発行回数、エラー内容などが出力されます。

    mtp.async

    非同期実行した際の実行ログです。実行時間、エラー内容などが出力されます。

  • 致命的なエラーに関するログ

    ロガー名 出力内容

    mtp.fatal

    致命的なエラーに関するログが出力されます。

    mtp.fatal.cube

    Cube機能で発生したエラーのログが出力されます。

    mtp.fatal.async

    非同期実行で発生したエラーのログが出力されます。

    mtp.fatal.async.rdb

    非同期実行が中断またはリトライ回数を超えた場合にログが出力されます。

    mtp.fatal.async.rdb.processworker

    非同期実行中に発生したエラーのログが出力されます。

    mtp.fatal.asynctask

    非同期タスクの実行が中断された場合にログが出力されます。

    mtp.fatal.mail

    メール送信で発生したエラーのログが出力されます。

    mtp.fatal.cluster

    クラスタ間通信で発生したエラーのログが出力されます。

    mtp.fatal.classloader

    GroovyScriptのClassLoaderで発生したエラーのログが出力されます。

  • GroovyScriptに関するログ

    ロガー名 出力内容

    mtp.script.out

    バインド変数outのprintln()メソッドによりログが出力されます。

  • SQLに関するログ

    ロガー名 出力内容

    org.iplass.mtp.impl.rdb.connection

    SQLの実行時間、警告ログが出力されます。

4.2. 診断コンテキスト

iPLAssでは以下の情報が診断コンテキスト(MDC)によりログ出力されます。

キー名 ログ出力書式 出力値

taskId

%X{taskId}

タスクID

user

%X{user}

ユーザー(クライアントID)

tenant

%X{tenant}

テナントID

tenantName

%X{tenantName}

テナント名

action

%X{action}

アクション名

command

%X{command}

コマンド名

webapi

%X{webapi}

WebApi名

traceId

%X{traceId}

iplass-ee-awsモジュール 適用の場合、X-Amzn-Trace-IdのRootを出力
また、WebFrontendServiceにて出力値を設定可能

impersonatedUser

%X{impersonatedUser}

代理ログインユーザー

4.3. フィルター

iPLAssでは org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter を提供します。このTurboFilterを適用することにより、テナント単位にて動的にログ出力する条件を変更可能となります。

LogConditionTurboFilter設定例
<configuration>
    <turboFilter class="org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %X{tenant} %X{user} %X{command} %X{taskId} %logger{36} - %replace(%msg){'\r|\n', ' '}%n</pattern>
        </encoder>
    </appender>

    :
    :


    <logger name="org.iplass" level="INFO">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="mtp" level="INFO">
        <appender-ref ref="STDOUT" />
    </logger>
    <root level="OFF" />
</configuration>

4.4. 構造化ログ

Logstash Logback Encoderを利用してログをJSON形式で出力可能です。 Action/WebAPIの実行時間、クエリー発行回数などに関しては属性としても出力しています。

Logstash Logback Encoder設定例
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    :
    :


    <logger name="org.iplass" level="INFO">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="mtp" level="INFO">
        <appender-ref ref="STDOUT" />
    </logger>
    <root level="OFF" />
</configuration>