Configuration(service-config)References

All the settings for the iPLAss are made in an XML-based configuration file. This configuration file is named as service-config file. This document explains the format of the service-config file and the items that can be configured.

1. About service-config files

service-config files are stored in xml format. In addition, it is possible to divide and merge multiple config files.

Typical service-config File Example
<?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 is taking the input in unit of "Service".

1.1. What is Service?

Service is the components specified by iPLAss. In perspective of implementation, it is a java class: org.iplass.mtp.spi.Service. It is possible to set all kind of properties via the Service objects in service-config.

1.2. How to Specify service-config File

The service-config file used when starting iPLAss is read in one of the following forms.

Automatic Loading From Class Path and File Path

If you do not specify the service-config file explicitly at startup, the system will get mtp-service-config.xml directly under the class path or from the root path of the file system. When deploying as a Web application, mtp-service-config.xml can be placed directly under /WEB-INF/classes/.

Explicitly specified

There are three ways to specify a config file explicitly.

  • VM Parameter
    When using VM Parameter, please specify the file path to the key "mtp.config".

    -Dmtp.config=/app-service-config.xml
  • web.xml
    Specify "mtp.config" in the param-name element, and specify the service-config file to be read in the param-value element.

    <context-param>
        <param-name>mtp.config</param-name>
        <param-value>/app-service-config.xml</param-value>
    </context-param>
  • Code-wise
    Please use the config(String) method from the EntryPointBuilder class to specify the service-config file.

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

Based on the specified file name (path), the file is searched as a resource path on the class path or a file path on the file system.

1.3. Splitting the service-config File

The service-config file can be managed by dividing a part of the definition into separate files. For example, it is possible to extract and manage environment-dependent part settings as separate files. In addition, a service-config file with default values defined by iPLAss is provided to start with. Please overwrite the parts that are need to be changed from the default. The service-config files with default value sets are stored in the jar of each module of iPLAss.

Below is a list of service-config files with default values.

File Path Explanation

/mtp-core-service-config.xml

The default config files for iPLAss core service.

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

The default config files for iPLAss core Service when using mysql8. It inherits from /mtp-core-service-config.xml.

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

The default config files for iPLAss core Service when using mysql5.7. It inherits from /mtp-core-service-config.xml.

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

The default config files for iPLAss core Service when using mysql8 with pseudo partition features(128 partitions). It inherits from /mtp-core-service-config-mysql.xml.

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

The default config files for iPLAss core Service when using Amazon Aurora(mysql8) with pseudo partition features(128 partitions). It inherits from /mtp-core-service-config-mysql-5.7.xml.

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

The default config files for iPLAss core Service when using Oracle. It inherits from /mtp-core-service-config.xml.

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

The default config files for iPLAss core Service when using Oracle with pseudo partition features(32 partitions). It inherits from /mtp-core-service-config-oracle.xml.

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

The default config files for iPLAss core Service when using Oracle with pseudo partition features(128 partitions). It inherits from /mtp-core-service-config-oracle.xml.

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

The default config files for iPLAss core Service when using PostgreSQL. It inherits from /mtp-core-service-config.xml.

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

The default config files for iPLAss core Service when using PostgreSQL with pseudo partition features(32 partitions). It inherits from /mtp-core-service-config-postgre.xml.

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

The default config files for iPLAss core Service when using PostgreSQL with pseudo partition features(128 partitions). It inherits from /mtp-core-service-config-postgre.xml.

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

The default config files for iPLAss core Service when using SQLServer. It inherits from /mtp-core-service-config.xml.

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

The default config files for iPLAss core Service when using SQLServer with pseudo partition features(32 partitions). It inherits from /mtp-core-service-config-sqlserver.xml.

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

The default config files for iPLAss core Service when using SQLServer with pseudo partition features(128 partitions). It inherits from /mtp-core-service-config-sqlserver.xml.

/mtp-web-service-config.xml

The default config files for iPLAss web module.

/mtp-tools-service-config.xml

The default config files for Tool batches in AdminConsole.

/gem-service-config.xml

The default config files for gem module.

/mdc-service-config.xml

The default config files for mdc module. Can be used by Enterprise Edition.

/adminconsole-service-config.xml

The default config files for AdminConsole.

/infinispan-service-config.xml

The default config files for infinispan.

/redis-service-config.xml

The default config files for redis.

/appconsole-service-config.xml

The default config files for appConsole. Can be used by Enterprise Edition.

/aws-service-config.xml

The default config files for aws related contents. Can be used by Enterprise Edition.

/wam-service-config.xml

The default config files for wam module. Can be used by Enterprise Edition.

/micrometer-service-config.xml

The default config files for micrometer module. Can be used by Enterprise Edition.

The divided files will be merged in to one big service-config file when the application is running. In the configuration file, you can specify how to merge when the same Service definition exists in multiple files.

Example config when using gem and AdminConsole with mysql
<?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>

    <!-- below is the settings that overloads the default values. -->
    <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>

For more details, please refer to the composition of service-config.

1.4. the Composition of service-config.

serviceDefinition Elements

It is the root element for service-config.

  • Attribute

    Attribute Name Type Description

    preprocess

    boolean

    Set it true if want to execute the preprocess of this service-config file.

  • Child Elements

    Element Name Type Description

    inherits

    String, multiple

    Specify the configuration file from which this configuration file is inherited from. After the service definition of the inheritance source is read, the definition described in the service-config file of the main unit is applied.

    includes

    String, multiple

    Specify other files to import into this file. The included configuration file overwrites the settings of the main config file.

    service

    service, multiple

    Setting the definition of the service.

service Elements

The emlements to define each service.

  • Attribute

    Attribute Name Type Description

    name

    String

    Specify the service name, if not defined, the child element interface (interface name) will be used.

    ifnone

    boolean

    Define this only if this service does not exist at the included/inherited destination. The default value is false.

    inherit

    boolean

    If this service exists at the inheritance source or include destination, the original service definition is inherited. The default value is true.
    Service name, interface, depend, property will be inherited.

    final

    boolean

    Define whether to prevent further overwrites. Default is false.

  • Child Elements

    Element Name Type Description

    interface

    String, Required

    Specify the interface name . The interface name should be fully qualified domain name.

    class

    String

    Define the name of the class. Please specify the fully qualified domain name, the interface name is used instead if this elements was left unset.

    depend

    String, Multiple

    Specify the services of dependance. please specify by the name.

    property

    property, Multiple

    Setting on the service property.

    bean

    bean, Multiple

    Setting on the Bean interface that will be utilized in the service. The specified Bean interface can be reference by the property elements. When you need to specify the same bean interface for multiple properties, please use this bean elements.

Property Elements

It is the elements that defines the service property.
If the property element is in javaBeans format, it is possible to set the property element recursively. It is also possible to refer to bean elements that are separately defined with the ref attribute.

  • Attribute

    Attribute Name Type Description

    name

    String

    Setting the name of the property.

    value

    String

    Setting the value of the property.

    class

    String

    When the property is a javaBeans, setting the name of the relative class, and please make sure the class name is in fully qualified domain name.

    builder

    String

    If you want to customize the generation process of the property values, please specify the ObjectBuilder class with a fully qualified class name. For details, please refer to Customization of the Setting Value Generation.

    ref

    String

    When the property is a javaBeans, specify the name defined by bean element .The content of ref has higher priority than the content specified by value and class.

    ifnone

    boolean

    Define this property only if this property does not exist in the inheritance source or include destination. The default value is false. inherit

    boolean

    If this property exists in the inheritance source or include destination, inherit the original property definition. The default value is true.

    final

    boolean

    Define whether this property definition can be overwritten. The default value is false.

    encrypted

    boolean

    Sets whether this is an encrypted value. The default value is false.

    additional

  • Child Elements

    Element Name Type Description

    value

    String

    Sets the property value. Possible values are string type. If both attribute values are set, the attribute value takes precedence.

    property

    << Property, property >> can be specified multiple times

    Set the definition of the nested property.

    arg

    << Property, property >> can be specified multiple times

    It is possible to specify the value to be injected into the Bean constructor. The attributes and elements that can be specified are the same as the property type. For constructor injection, the name is in format of arg[argument order] like arg0, arg1.

    buildScript

    String

    If you want to customize the generation process of the property values, use the GroovyScript format. For details, please refer to Customization of the Setting Value Generation.

Bean Elements

This element defines the Bean instance used in the service.
The defined Bean instance can be referenced from the property element. If you want to refer to the same Bean instance from multiple property elements, please use the bean element.

  • Attribute

    Attribute Name Type Description

    name

    String

    Set the name of the bean.

    class

    String

    Set the bean class name. Set a fully qualified class name.

    builder

    String

    If you want to customize the generation process of the Bean, please specify the ObjectBuilder class with a fully qualified class name. For details, please refer to Customization of the Setting Value Generation.

    ifnone

    boolean

    Define only if this bean definition does not exist in the inheritance source or import destination. The default value is false.

    inherit

    boolean

    If this bean definition exists at the inheritance source or import destination, the original bean definition is inherited. The default value is true.

    final

    boolean

    Overriding this bean definition is prohibited. The default value is false.

    additional

    boolean

    If a bean with the same name as this bean definition exists in the inheritance source or import destination, set whether to add without inheriting or overwriting. The default value is false.

  • Child Elements

    Element Name Type Description

    property

    property, Multiple

    The configuration of the Bean property.

    arg

    property, Multiple

    It is possible to specify the value to be injected into the Bean constructor. The attributes and elements that can be specified are the same as the property type. For constructor injection, name is in the format of arg[argument order] like arg0, arg1.

    buildScript

    String

    If you want to customize the generation process of the Bean, please write it in GroovyScript format. For details, please refer to Customization of the Setting Value Generation.

The Supports for Collection

The formats of array, list, and map are supported.

When setting array and list values, it is expressed by defining multiple <property> elements with the same name value.

Example of Setting Array to intList Property
<service>
    :
    :
    <property name="intList" value="1" />
    <property name="intList" value="3" />
    <property name="intList" value="5" />


</service>

To define the value of a Map, specify nested <property> element with name as the key and value as the value of the Map.

Example of stringMap settings
<service>
    :
    :
    <property name="stringMap" >
        <property name="key1" value="value1" />
        <property name="key2" value="value2" />
        <property name="key3" value="value3" />
    </property>


</service>

Examples

  • Examples of settings on javaBeans property

    For the javaBeans like these in below,

    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;
        }
    
        :
        :
    }

    The value can be specified in the following way.

    <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>
  • Example of Bean Elements

    For the javaBeans like these below,

    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;
        }
    
        :
        :
    }

    The values can be specified in the following way. It is possible to specify the same interface to the sharedBean for both SampleBean1 and SampleBean2.

    <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>
The availability of referencing the same Bean instance by definition is only in the scope of a single Service. If you want to use the same instance across Services, use it explicitly via Service interface (accessor method etc.).

1.5. Customizing the Generation of the Setting Value

With ObjectBuilder, the process to generate property value and bean instance can be customized.

  • Generate by specifying ObjectBuilder class

    Create the implementing class of org.iplass.mtp.spi.ObjectBuilder, and specify the property, bean as the builder attributes.

    Sample ObjectBuilder Implementation
    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() By implementing this method, it is also possible to retrieve the value defined in the nested property element.
    2 build() method can be used to create instance.
    Example of Config File
    <service>
        :
        :
    
        <property name="sample1" builder="SampleObjectBuilder">
            <property name="propA" value="abc" />
        </property>
    
    
    </service>

    With the above settings, the value of sample1 is set to the SampleBean instance generated by SampleObjectBuilder (propA value is set in the configuration file).

  • Generate by build script

    It is possible to define the ObjectBuilder’s generation process in GroovyScript. GroovyScript will be declared as the elements of buildScript.

    GroovyScript will binde the following variables.

    Variables Name Description

    name

    The value for the name property of the property elements/ bean elements.

    value

    The value attribute (or value elements) specified by the property element.

    className

    The value for the class attributes of the property elements/ bean elements.

    properties

    The property elements that are nested in other property elements/ bean elements. It is a Map format where name is set in key and property is set in value.

    args

    args element specified by nesting in property element/ bean element. It is in Map format where name is set in key and args value is stored in value.

    Example of Config File
    <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>

    With the above settings, the SampleBean instance obtained from the configuration file is set by the value of propA.

1.6. Obfuscation of Setting Values

The values listed in the service-config file can be obfuscated. The obfuscation procedure is as follows:

Setting Obfuscation Method

Create an encryption property file (crypt.properties) that describes the obfuscation method settings.

The following items can be set.

Items Value

propertyValueCoder

Please specify the implementing class of org.iplass.mtp.impl.core.config.PropertyValueCoder. Implement the process of encoding/decoding the string in PropertyValueCoder. The following implementations are provided by default.

DefaultPropertyValueCoder

Encode/decode values obfuscated by passphrases.

SecretsManagerPropertyValueCoder

Get the setting value registered in the secret of AWS Secrets Manager.

DefaultPropertyValueCoder is applied when not specified.

DefaultPropertyValueCoder

Please specify org.iplass.mtp.impl.core.config.DefaultPropertyValueCoder to the class.

Items Value

keyFactoryAlgorithm

Key generation algorithm for encryption. Default value will be used if not specified. (PBKDF2WithHmacSHA256)

keySalt

Salt value for key generation. Default value will be used if not specified.

keyStretch

The number of stretches during key generation. Default value will be used if not specified.

keyLength

The bit length of the key. Default value will be used if not specified.(128)

cipherAlgorithm

Encryption algorithm. Default value will be used if not specified.(AES)

passphraseSupplier

Specify the class name that implements org.iplass.mtp.impl.core.config.PassphraseSupplier. PassphraseSupplier implements the process to get the passphrase at the time of key generation. The following implementations are provided by default.

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

Retrieve passphrase from property file

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

Enter passphrase from standard input

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

Specify the passphrase in the system environment variable (MTP_CONFIG_PASSPHRASE). (Not a java system variable)

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

Get from the passphrase registered in the secret of AWS Secrets Manager.

PropertyFilePassphraseSupplier is applied when not specified.

passphrase

Specify a passphrase when using PropertyFilePassphraseSupplier. aws.secretName

For example, to use the default obfuscation settings, set as follows:

Example of crypt.properties
passphrase=hogehoge
SecretsManagerPropertyValueCoder

Please specify org.iplass.mtp.impl.aws.secretsmanager.SecretsManagerPropertyValueCoder to the class.

Items Value

aws.secretName

Specify the secret name. Use the default credential provider chain for AWS credentials.

For example, to get the setting value registered in the secret of AWS Secrets Manager, set as follows:

Example of crypt.properties
propertyValueCoder=org.iplass.mtp.impl.aws.secretsmanager.SecretsManagerPropertyValueCoder
aws.secretName=test
Specify Property File

Specify the path to the properties file (ClassLoader Resource path or file path) in the VM parameter or web-xml context-param. Alternatively, specify the path using the crypt (String) method of the EntryPointBuilder class.

ParameterName

mtp.config.crypt

Example Configuration With VM Parameter
-Dmtp.config.crypt=/crypt.properties
Example Configuration with web.xml
<context-param>
  <param-name>mtp.config.crypt</param-name>
  <!-- ■ crypt config file ■ -->
  <param-value>/crypt.properties</param-value>
</context-param>
Example Configuration with Code
import org.iplass.mtp.runtime.EntryPoint;

:
:

//initialize EntryPoint on application startup
EntryPoint entryPoint = EntryPoint.builder()
        .config("/app-service-config.xml")
        .crypt("/crypt.properties").build();
Obfuscation of the obfuscated text

We will use the Encoder for Obfuscation. The crypt.properties will be utilized when obfuscating. Passphrase will be directly inputted from the console.

Configuration for service-config

We want to set the obfuscated text to service-config file. And also set encrypted="true" for the property attributes.

<property name="password" value="39y04KVcitPsSAQtXgvc=" encrypted="true" />
Get Setting Values with AWS Secrets Manager

Get the setting value registered in the secret of AWS Secrets Manager when using SecretsManagerPropertyValueCoder. Register the setting values in key-value format in the secret of AWS Secrets Manager in advance.

Configuration for service-config

Set the key of the setting value registered in the secret of AWS Secrets Manager in the service-config file. And also set encrypted="true" for the property attributes.

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

1.7. Preprocessor

It is possible to execute pre-processor of service-config file. When preprocessing is enabled (true is specified for the preprocess attribute of the serviceDefinition element), the service-config file is executed as GroovyTemplate before reading.

For example, environment-dependent settings can be obtained from system properties and environment variables.

$ and \ are reserved words in GroovyTemplate.
When enabling preprocessing, $ in the configuration file needs to be escaped like \$ and \ needs to be escaped like \\ .
Example of Preprocessing (Obtained From System Properties)
<?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 in serviceDefinition, set preprocess="true"
2 reading the system property lobStoreDir
Example of Preprocessing (Obtained From Environment Variable)
<?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 in serviceDefinition, set preprocess="true"
2 reading the Environment variable LOB_STORE_DIR
Example of Preprocessing (Complicated)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE serviceDefinition>
<serviceDefinition preprocess="true"> (1)
    <!-- <%
    // retrieve the Control class from the property file
    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 in serviceDefinition, set preprocess="true"
2 <% %> is used to insert Script

2. Service Overview

The Services that are available in config files are listed.

2.1. Core Services

The Services for iPLAss core features.

Name Description

AsyncTaskService

A service for executing tasks asynchronously inside the platform.

AsyncTaskServiceForHttpMessageChannel

This service performs asynchronous execution using HttpMessageChannel for cluster communication.

AuditLoggingService

This service outputs registration, update, and deletion for Entity as an operation log.

AuthLoggerService

This service manages authentication-related loggers.

AuthService

This is the service for authentication.

AuthTokenService

A service for managing authentication tokens.

AutoNumberTypeCounter

This service performs AutoNumber type numbering.

BinaryMetaDataService

This is a service to tell system not to store binary format metadata in memory as a byte array.

CacheService

Cache service.

ClusterService

The service for the communication between clusters.

ConnectionFactory

This is a service for database connection.

CubeService

Cube aggregation service.

DefaultQueueBaseAsyncTaskService

Standard asynchronous execution service using the queue feature of RDB.

EntityService

the Service that manages entities.

FulltextSearchService

Full text search service.

I18nService

Multilingual localization service.

InterceptorService

The service that manages the interceptors called when commands are executed.

ListingService

The service to manage the operation of saved lists.

LobStoreService

The service to store LOB data permanently.

LoggingService

The service to modify the overall performance of all log services.

MailService

The service to send mail.

MessageService

The service to manage resource bundles.

MetaDataRepository

The service to manage Metadata.

OidCounter

The service for oid auto number feature.

OnetimeCodeGeneratorService

The service to generate verification code for two-step-verification.

PropertyService

The service to manage property.

PropertyEncryptionService

The service of property-wised encryption.

PushNotificationService

The service to provide push notification to mobile terminals.

QueryService

This service manages EQL external hint phrases.

RdbAdapterService

This service manages RdbAdapter, which is an interface with various RDBs.

RdbQueueService

This is a queue service using RDB.

ScheduleService

This service manages the definition (metadata) of scheduled tasks.

ScriptService

The service to manage dynamic script.

SecureRandomService

This service manages settings for generating random character strings.

SmsService

This is a service for sending SMS.

StoreService

A service that persists Entity data.

SyntaxService

A service for parsing.

TaskIdCounter

This service auto-assigns task IDs.

TenantContextService

It is the service that sets the behavior of the entire tenant.

ValidationService

It is a service for performing input check。

WebhookService

The service managing webhook operations.

WorkflowService

The service managing workflow operations.

2.2. Web Services

Such as Action and WebApi, these Web related services are managed.

Name Description

ActionMappingService

It is the service that manages the interceptor called when a request is sent from the browser.

CsvUploadService

The service to manage CSV uploads.

EntityCsvImportService

Services related to CSV import of Entity.

EntityWebApiService

This service manages EntityWebApi.

IPAddressHistoryStoreService

This is a service for storing IP addresses accessed in the past.

OAuthAuthorizationService

The service for managing the functions of the OAuth2.0 Authorization Server and OpenID Connect Provider.

OpenIdConnectService

The service for managing the functions of OpenID Connect Relying Party.

ReportingEngineService

This service manages report output(such as receipts).

SamlService

A service for SAML authentication.

TenantAvailableService

This service manages the operating status of tenants.

WebApiService

This service manages WebApi.

WebApiJaxbService

This is a service that defines the class to be converted in JAXB of WebApi.

WebFrontendService

A service that manages the overall operation of Web applications.

ODataService

The service to control the behavior of OData Service.

2.3. Gem services

Gem(Generic Entity Manager) page related services.

Name Description

AggregationService

Aggregation Services.

CubeTemplateService

The services to manage the major templates of Cube aggregation.

EntityListingService

The service to manage EntityListing mechanism.

GemConfigService

The service for general settings for GEM pages.

MdcConfigService

This service for general settings for the mobile version of the GEM pages.

MdcDetailViewService

This service for settings for the mobile version of the Detail pages.

MdcSearchViewService

This service for settings for the mobile version of the Search pages.

RelativeRangeService

This is a service for adding your own relative range in the search conditions of Aggregation and EntityListing.

2.4. Admin services

This services related to AdminConsole, the manager interface.

Name Description

AdminAuditLoggingService

A service related to AdminConsole operation logs.

AdminConsoleService

The service for general settings of AdminConsoleService.

2.5. Tools services

The services related all kind of tools.(AdminConsole tools and batches.)

Name Description

EntityPortingService

Services related to Entity data tools.

StorageSpaceService

Services related to StorageSpace migration tools.

TenantToolService

A service related to tenant management tools.

2.6. Other services

The service group for other plug-in modules.

Name Description

AWSSetting

This service manages AWS settings.

InfinispanService

The service to manage InfinispanService.

RedisService

The service to manage RedisService.

CaptchaService

The service to manage robot-access prevention by reCAPTCHA.

OutOfBandVerificationService

This is a service for verification using email and SMS.

WamService

Web membership management service.

MicrometerService

This service for collecting metrics and linking to a monitoring system.

3. Details of Specific Services

3.1. ActionMappingService

This is the service that manage action definitions (metadata) and interceptors that are called when an action is requested.

Interface Name

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

Implementing Class

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

The settings of ActionMappingService

The interceptor called when requested from the browser can be configured with the following items.

Configurable Items
Item Value Description

interceptor

RequestInterceptor, Multiple

Set the interceptor for the requests.

RequestInterceptor

Please specify the implementing class of org.iplass.mtp.web.interceptor.RequestInterceptor to the class.

As the standard implementation, the followingRequestInterceptor are provided.

InitialInterceptor

Please specify org.iplass.mtp.impl.web.interceptors.InitialInterceptor to the class.

Interceptor that sets the language and preview time as the initial processing of the request. There is no configurable settings.

ActionCacheInterceptor

Please specify org.iplass.mtp.impl.web.interceptors.ActionCacheInterceptor to the class.

This is the interceptor that performs caching. There is no configurable settings.

AuthInterceptor

Please specify org.iplass.mtp.impl.web.interceptors.AuthInterceptor to the class.

This is the interceptor that performs authentication. There is no configurable settings.

ExceptionInterceptor

Please specify org.iplass.mtp.impl.web.interceptors.ExceptionInterceptor to the class.

The interceptor that handles exceptions. The following items can be configured.

Item Value Description

noHande

String, Multiple

Exception class when the handle link does not work. When specifying multiple properties, either set multiple properties or separate exception classes with a single-byte colon (:).

eliminate

String, Multiple

Exception class to exclude from handling. When specifying multiple properties, set multiple properties or separate exception classes with a single-byte colon (:).

LoggingInterceptor

Please specify org.iplass.mtp.impl.web.interceptors.LoggingInterceptor to the class.

This is the interceptor that outputs logs. The following items can be configured.

Item Value Description

actionTrace

boolean

Whether to output action log. The default value is true.

partsTrace

boolean

Whether to output a log of actions executed as one part of the screen. The default value is true.

paramName

String, Multiple

Parameter name to be logged.

noStackTrace

String, Multiple

Exception class that does not output stack trace. When specifying multiple properties, set multiple properties or separate exception classes with a single-byte colon (:).

warnLogThresholdOfSqlExecutionCount

int

The threshold of the executed SQL lines to output logs at WARN level.
If the SQL lines executed exceeds the threshold in one single request, the log will be output at WARN level.
The default value is -1(All logs will be logged at INFO level).

warnLogThresholdOfExecutionTimeMillis

long

The threshold of the execution time (milliseconds) to output logs at WARN level.
If the execution time exceeds the threshold in one single request, the log will be output at WARN level.
The default value is -1(All logs will be logged at INFO level).

UnavailableInterceptor

Please specify org.iplass.mtp.impl.web.interceptors.UnavailableInterceptor to the class.

This is the interceptor that performs maintenance checks. here is no configurable settings.

ActionMetricsInterceptor

Please specify org.iplass.mtp.impl.micrometer.metrics.web.action.ActionMetricsInterceptor to the class.

This is the interceptor that records Action latency and SQL execute count as metrics, and is added by default when Micrometer module is applied.

Item Value Description

provider

ActionMetricsTagsProvider

A class that implements org.iplass.mtp.impl.micrometer.metrics.web.action.ActionMetricsTagsProvider. This can be specified if you want to customize the tags that are given to metrics. By default, org.iplass.mtp.impl.micrometer.metrics.web.action.DefaultActionMetricsTagsProvider is used.

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

A service related to AdminConsole operation logs.

Interface Name

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

Implementing Class Name

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

The Settings of AdminAuditLoggingService

AdminAuditLoggingService can be configured with the following items

Configurable Items
Item Value Description

logCompact

boolean

Set whether to limit how many characters to show when the text such as LongText went too long. The default value is false.

logQuery

boolean

Whether to log the query. The default value is false.

logSelectValueWithLabel

boolean

Set whether to output the labels when logging the SelectValue. The default value is false.

logReferenceWithLabel

boolean

Specify how the Reference will be represented by names in the logs.If true, it is represented by its name. If false, it is represented by its oid. The default value is false.

textMaxLength

int

The limit of the characters to show of a string that is too long, such as LongText. The default value is 256.

Example
<service>
    <interface>org.iplass.adminconsole.server.base.service.auditlog.AdminAuditLoggingService</interface>

    <!-- True if you do not want to outputting all long strings such as LongText when outputting to log file -->
    <property name="logCompact" value="false" />
    <!-- When logCompact is true, Set the maximum string length.( the default is 256) -->
    <!-- property name="textMaxLength" value="256" / -->

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

3.3. AdminConsoleService

This is the service to manage the general performance of the AdminConsoleService.

Interface Name

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

Implementing Class Name

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

Settings of AdminConsoleService

AdminConsoleService can be configured with the following items.

Configurable Items
Item Value Description

showServerInfo

boolean

Indicate whether to display the server information on AdminConsole as environment information.

logDownloadConfig

LogConfig

The configurations of the downloads of the application logs.

maxUploadFileSize

long

Set the maximum size of the files when uploading files at AdminConsole. The default is 1GBytes.

LogConfig

Please specify org.iplass.adminconsole.server.base.service.LogConfig to the class.

It is a setting to download the log output to the server from LogExplorer. The following items can be configured.

Item Value Description

enabled

boolean

Whether to enable the downloads of the log files.

logHome

String, Multiple

Specify the storage folder of the log files.

fileFilter

String, Multiple

File name filter for the logs displayed in LogExplorer, specified by regular expression

Example
<service>
    <interface>org.iplass.adminconsole.server.base.service.AdminConsoleService</interface>

    <!-- Whether to display server information on AdminConsole as environment information -->
    <property name ="showServerInfo" value="true" />

    <!-- Configs about the referable logs in AdminConsole -->
    <property name="logDownloadConfig" class="org.iplass.adminconsole.server.base.service.LogConfig">
        <property name="enabled" value="true" />

        <!--
            Specify the storage folder of the log files.
            ${tenantId}:TenantID
            ${tenantName}:TenantName
            *:Any Folder Name

            Example 1:/logs/${tenantId}/
                at /logs/ folder, there will be a folder of Tenant Id. Then under that folder will be log folder according to each Tenants.

            Example 2:/logs/*/${tenantId}/
                at /logs/ folder, there will be any folder, which contains the folder of Tenant Id. Then underneath will be log folder according to each Tenants.
                For instance, the log folder will be distributed for multiple server in the following way: /logs/ap1/,/logs/ap2/ ....
        -->
        <property name="logHome" value="/logs/${tenantId}/" />

        <!--
            Specifying the filters for the file names(regular expression)

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

    <!-- The maximum size of the uploadable files.(Byte) -->
    <!--
    <property name ="maxUploadFileSize" value="1073741824" />
    -->

</service>

3.4. AggregationService

This is the service to manage the definition(Metadata) of the aggregations.

Interface Name

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

Implementing Class

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

The Settings of AggregationService

AggregationService can be configured with the following items.

Configurable Items
Item Value Description

useSubQueryIfPossible

boolean

Whether to use subqueries as much as possible when using filter on a saved lists. The default value is false.

Example
<service>
    <interface>org.iplass.mtp.impl.aggregation.unit.AggregationService</interface>
    <class>org.iplass.mtp.impl.aggregation.unit.AggregationService</class>
    <!-- Whether to use subqueries as much as possible when using filter on a saved lists.  -->
    <property name="useSubQueryIfPossible" value="false" />
</service>

3.5. AsyncTaskService

This is a service to execute tasks asynchronously inside the platform.

Interface Name

org.iplass.mtp.impl.async.AsyncTaskService

Implementing Class Name

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

Settings for ThreadingAsyncTaskService

Mainly configure the settings about ThreadingAsyncTaskService.

Configurable Items
Item Value Description

corePoolSize

int

The size of the thread pool for asynchronous processing. The number of threads remain fixed in the pool even when idling. The default value is 4.

threadPoolType

String

The thread pool type. If not specified, threadPoolType is set to cached, and a RejectedExecutionException will occur if the requests get larger than maximumPoolSize.

fixed

Uses a thread pool which reuses the fixed amount of the threads in the pool specified by corePoolSize.

single

Use a single thread.

cached

Use a thread pool with dynamic size. It will reuse the threads. The total threads count will not exceed the pool size specified by maximumPoolSize.

maximumPoolSize

int

The maximum number of threads available in the thread pool. When -1 is set, the maximum value of INT is set. The default value is -1.

keepAliveTime

long

If threadPoolType is cached and there are more threads than corePoolSize, this specify the maximum time (in milliseconds) for idle threads to wait for a new task before termination. The default value is 60000 (1 minute).

useResourceHolder

boolean

Whether to use ResourceHolder. The default value is true.

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

This service performs asynchronous operations using HttpMessageChannel for cluster communication. This is the definition of AsyncTaskService for sending messages asynchronously between Nodes with ClusterService.

Interface Name

org.iplass.mtp.impl.async.AsyncTaskService

Implementing Class Name

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

Settings of ThreadingAsyncTaskService

The configurable items for ThreadingAsyncTaskService are listed below.

Configurable Items
Item Value Description

corePoolSize

int

The size of the thread pool for asynchronous processing. The number of threads remains fixed in the pool even when idling. The default value is 4.

threadPoolType

String

The thread pool type. If not specified, threadPoolType is set to cached, and a RejectedExecutionException will occur if the requests get larger than maximumPoolSize.

fixed

Uses a thread pool which reuses the fixed amount of the threads in the pool specified by corePoolSize.

single

Use a single thread.

cached

Use a thread pool with dynamic size. It will reuse the threads. The total threads count will not exceed the pool size specified by maximumPoolSize.

maximumPoolSize

int

The maximum number of threads available in the thread pool. When -1 is set, the maximum value of INT is set. The default value is -1.

keepAliveTime

long

If threadPoolType is cached and there are more threads than corePoolSize, this specify the maximum time (in milliseconds) for idle threads to wait for a new task before termination. The default value is 60000 (1 minute).

useResourceHolder

boolean

Whether to use ResourceHolder. The default value is true.

Example
<service name="AsyncTaskServiceForHttpMessageChannel">

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

    <!--
        Thread pool settings for asynchronous transaction when using HttpMessageChannel for cluster communication
        Set corePoolSize to the actual number of servers x 2
     -->
    <property name="corePoolSize" value="4" />
    <!--
        The thread pool type. If not specified, threadPoolType is set to "cached"
        If there are requests larger than maximumPoolSize, a RejectedExecutionException will occur.
     -->
    <property name="threadPoolType" value="fixed" />
</service>

3.7. AuditLoggingService

This service manages the outputs of the logs about the operations on Entity, such as registration, update, and deletion.

Interface Name

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

Implementing Class Name

The Log Output with Logger
org.iplass.mtp.impl.entity.auditlog.LoggerAuditLoggingService
The Log Output with Logger and Rdb
org.iplass.mtp.impl.entity.auditlog.RdbAuditLoggingService

Settings of LoggerAuditLoggingService

Specify the contents to output to logger.

Configurable Items
Item Value Description

logCompact

boolean

Whether to cut the texts at the specified length of characters when strings such as LongText went too long.

logQuery

boolean

Whether to output the query to the logger. The default value is false.

logSelectValueWithLabel

boolean

Whether to output the SelectValue as a label when outputting to the log. The default value is false.

logReferenceWithLabel

boolean

Whether to output the Reference with name when outputting to log. If false, oid is used instead. The default value is false.

textMaxLength

int

Number of characters to limit long strings such as LongText. The default value is 256.

maskTarget

MaskTarget

Set an individual MaskTarget to be used when masking logs.

MaskTarget

The class is specified as org.iplass.mtp.impl.entity.auditlog.MaskTarget. Sets the Entity and Property to be masked and the masking method.

Configurable Items
Item Value Description

entity

String

Specifies the Entity to be masked. "*" to specify all entities.

property

String

Specify the Property to be masked. "*" to specify all Properties.Also, by specifying individual property names, even for Entity and Property with "*" designation, the individually specified maskHandler setting will take precedence.

maskHandler

MaskHandler

Sets the mask method

MaskHandler

Specify the implementing class of org.iplass.mtp.impl.entity.auditlog.LogMaskHandler. The following MaskHandler is provided by default.

LogAllMaskHandler

LogMaskHandler to mask the value with a fixed string. The following items can be set.

Item Value Description

maskString

String

Replaces the value with a set string.

LogRegexMaskHandler

LogMaskHandler to mask values with regular expressions. The following items can be set.

Item Value Description

maskChar

String

Replaces characters matching the regular expression with maskChar .

maskRegex

String

A regular expression pattern. The string can be a pattern from java.util.regex.Pattern .

LogHashMaskHandler

LogMaskHandler to hash and mask the value. The following items can be set.

Item Value Description

hashAlgorithm

String

Specifies the algorithm for hashing. Default is SHA-256 .

LogNoMaskHandler

LogMaskHandler, which explicitly states that it is not masked. Even if a property is masked by specifying "*", it can be unmasked by specifying LogNoMaskHandler for the individual property.

Settings of RdbAuditLoggingService

Specify the contents to output to logger and Rdb. In addition to LoggerAuditLoggingService, these items can be configured.

Configurable items
Item Value Description

searchResultCacheLimit

long

Internal cache size for retrieving additional information, such as user name, from search result.

logIndexOrder

boolean

Whether or not to change the order of arrangement (index of the array) when recording update logs for multiple multiplicity properties. The default value is true.

disableLogging

boolean

Set to true if you want to temporarily disable the logging of RDB. If you want to prevent logging during data maintenance as the system administrator, you can temporarily disable loggings with this option.

Example
<service>
    <interface>org.iplass.mtp.impl.entity.auditlog.AuditLoggingService</interface>
    <class>org.iplass.mtp.impl.entity.auditlog.RdbAuditLoggingService</class>

    <!--  Set to true if you don't want the long paragraphs such as LongText to be logged in full When outputting to log file, -->
    <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" />

    <!-- Set to true if you want the code and label of  SelectValue to be logged when logging  -->
    <property name="logSelectValueWithLabel" value="true" />
    <!-- Set to true if you want the oid and name of the reference item to be logged when logging -->
    <property name="logReferenceWithLabel" value="true" />

    <!-- Mask settings for properties output to log files -->
    <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

This service manages authentication-related loggers.

Interface Name

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

Implementing Class Name

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

Settings of AuthLoggerService

The items of AuthLoggerService can be configured.

Configurable Items
Items Value Description

loggers

AuthLogger, Multiple

Logger settings. The logger with name (loggerName) default is the standard logger. If not set, Slf4jAuthLogger will be used as the standard logger.

AuthLogger

Please specify the implementing classs of org.iplass.mtp.impl.auth.log.AuthLogger.

As for common standards, the following AuthLoggers are provided.

Slf4jAuthLogger

Please specify org.iplass.mtp.impl.auth.log.Slf4jAuthLogger to the class.

This logger uses SLF4J to output authentication logs. The following items can be configured.

Items Value Description

loggerName

String

Logger Name

slf4LoggerName

String

SLF4J logger name, the default it mtp.auth.

MultiAuthLogger

Please specify org.iplass.mtp.impl.auth.log.MultiAuthLogger to the class.

It holds multiple loggers. The following items can be configured.

Items Value Description

loggerName

String

Logger Name

logger

AuthLogger, Multiple

Configuration of standard logger.

EnterpriseSlf4jAuthLogger

Please specify org.iplass.mtp.impl.auth.log.EnterpriseSlf4jAuthLogger to the class.

This logger uses SLF4J to output authentication logs. Please refer to Slf4jAuthLogger for available settings.

AuthenticationEventMetrics

Please specify org.iplass.mtp.impl.micrometer.metrics.authentication.AuthenticationEventMetrics to the class.

This logger records the number of successful/unsuccessful authentication attempts as metrics, and is used together with EnterpriseSlf4jAuthLogger as a logger of MultiAuthLogger by default when the Micrometer module is applied. There is no configurable items.

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

This is the service for authentication. Various kind of authentications can be achieve by switching authentication providers.

Interface Name

org.iplass.mtp.impl.auth.AuthService

Implementing Class Name

Community Edition
org.iplass.mtp.impl.auth.AuthService
Enterprise Edition
org.iplass.mtp.impl.auth.EnterpriseAuthService

Settings for AuthService

These are the setting items for AuthService.

Configurable items
Item Value Description

userSessionStore

UserSessionStore

Specifying the store objects which manage the user sessions.

authorizationProvider

AuthorizationProvider

Setting the authorization provider.

authenticationProvider

AuthenticationProvider, Multiple

Setting the authentication provider.

Settings for EnterpriseAuthService

It is one extended configurable about AuthService.

Configurable Items

Please refer to the AuthService above.

UserSessionStore

Please specify the implementation of org.iplass.mtp.impl.auth.authenticate.UserSessionStore for class.

Implementing Class Name
org.iplass.mtp.impl.auth.authenticate.DefaultUserSessionStore
DefaultUserSessionStore

The UserSessionStore supplied as default standard.

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserSessionStore to the class. The following items can be configured.

Item Value Description

shareLoginSession

boolean

Whether to share the log in information across the session.

sessionFixationProtection

DefaultUserSessionStore.SessionFixationProtectionMethod

Session fixation attack protection method. enum value for DefaultUserSessionStore.SessionFixationProtectionMethod. Specify one of the following

CHANGE_SESSION_ID

Changes the session ID at login. Data held in the session prior to login will be retained.

NEW_SESSION

Create a new session at login. Any data stored in the session prior to login will not be retained.

The default value is CHANGE_SESSION_ID.

AuthorizationProvider

Please specify the implementation of org.iplass.mtp.impl.auth.authorize.AuthorizationProvider to the class.

Implementing Class Name
org.iplass.mtp.impl.auth.authorize.builtin.BuiltinAuthorizationProvider
BuiltinAuthorizationProvider

The standard authorization provider of iPLAss.

Please specify org.iplass.mtp.impl.auth.authorize.builtin.BuiltinAuthorizationProvider to the class. The following items can be configured.

Item Value Description

authorizationContextHandler

AuthorizationContextHandler, Multiple

Specify the expression class for execution per Permission.

grantAllPermissionsToAdmin

boolean

Whether to grant all privilege to Admin user. If set to false, role control is applied to the Admin user. The default value is true.

AuthorizationContextHandler

Please specify the implementation of org.iplass.mtp.impl.auth.authorize.builtin.AuthorizationContextHandler to the class.

Implementing Class Name
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

A class to manage the WebApi privilege permissions.

Please specify org.iplass.mtp.impl.auth.authorize.builtin.action.ActionAuthContextHandler to the class.

CubeAuthContextHandler

A class to manage the WebApi privilege permissions.

Please specify org.iplass.mtp.impl.auth.authorize.builtin.cube.CubeAuthContextHandler to the class.

EntityAuthContextHandler

A class to manage the Entity privilege permissions.

Please specify org.iplass.mtp.impl.auth.authorize.builtin.entity.EntityAuthContextHandler to the class. The following items can be configured.

Item Value Description

useCorrelatedSubqueryOnEntityLimitCondition

boolean

Whether to use correlated subqueries when restriction is applied by Entity authority. The default value is true.

WebApiAuthContextHandler

A class to manage the WebApi privilege permissions.

Please specify org.iplass.mtp.impl.auth.authorize.builtin.webapi.WebApiAuthContextHandler to the class.

WorkflowAuthContextHandler

A class to manage the workflow privilege permissions.

Please specify org.iplass.mtp.impl.auth.authorize.builtin.workflow.WorkflowAuthContextHandler to the class.

AuthenticationProvider

Please specify the implementation of org.iplass.mtp.impl.auth.authenticate.AuthenticationProvider to the class.

Implementing Class Name
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

The standard authorization provider of iPLAss. Authorization based on the id/password information stored in DB. The settings such as password complexity, log out functions can be configured with authorization policy..

Please specify org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAuthenticationProvider to the class. The following items can be configured.

Item Value Description

providerName

String

Name of the provider When setting multiple providers, please set unique names for each provider. The default value is default.

updatable

boolean

Whether to use the account management module. The default value is true.

true

Allow account managements. Enable password update/reset by users in this authentication provider. Normally, it should be true.

false

Account managements are not allowed.

passwordHashSetting

PasswordHashSetting , Multiple

Set the password Hash algorithms. By defining multiple Hash algorithms, it is possible to operate with the new version of the algorithm when updating a new password while keep the old password with old algorithms.

autoLoginHandler

AutoLoginHandler

Automatic login handler. Set when automatic login process is needed with this authentication provider. The following classes are available as default implementations:

userEntityResolver

UserEntityResolver

Set the acquisition method of user Entity after successful authentication. You can specify one of the following:

PasswordHashSetting

Settings related to the password hash algorithms.

Please specify org.iplass.mtp.impl.auth.authenticate.builtin.PasswordHashSetting or its subclass to the class.

As our standard implementation, the following PasswordHashSetting implementations are provided.

If using the PasswordHashSetting class, the following items can be configured.

Item Value Description

version

String

The version value of the password hash algorithms. When changing the algorithms, please increment the generation order and make sure it never overlap with older entries. The default value is 1.

passwordHashAlgorithm

String

For the available algorithms, please refer to MessageDigest Algorithm. The default value is SHA-256.

systemSalt

String

The Salt value handled by the system (Pepper, as it is commonly known). It is recommended to set a new value each time when a new version is added. The default value is iPLAssSystemSalt.

stretchCount

int

Number of stretches when doing password hash. The default value is 1000.

Argon2PasswordHashSetting

Please specify org.iplass.mtp.impl.auth.authenticate.builtin.Argon2PasswordHashSetting to the class.

Settings related to the password Hash algorithm by Argon2. The following items can be configured.

項目 説明

version

String

The version value of the password hash algorithms. When changing the algorithms, please increment the generation order and make sure it never overlap with older entries.

passwordHashAlgorithm

String

One of Argon2d Argon2i Argon2id can be set. The default value is Argon2id .

hashLength

int

Size (in bytes) of hash to be generated. The default value is 32.

systemSalt

String

The Salt value handled by the system (Pepper, as it is commonly known). The secret parameter in Argon2. It is recommended to set a new value each time when a new version is added.

parallelism

int

Degree of parallelism.

memorySizeKB

int

Memory size (KiB).

iterations

int

Number of iterations.

IdPasswordAutoLoginHandler

If IdPasswordAutoLoginHandler is used, authentication can be performed by specifying ID and password in HTTP header when calling WebApi. You can use one of the following methods:

  • Custom header authentication
    Authentication is performed by specifying an ID and password in the X-Auth-Id and X-Auth-Password headers, respectively.

  • Authentication with BASIC authentication
    Authentication is performed using the BASIC method. Specify the ID and password in the Authorization header.

Please specify org.iplass.mtp.impl.auth.authenticate.builtin.web.IdPasswordAutoLoginHandler to the class.

The following items can be configured.

Item Value Description

enableBasicAuthentication

boolean

Set to true to enable authentication using BASIC authentication when calling WebApi. The default value is false.

rejectAmbiguousRequest

boolean

Controls the behavior when ID and password are specified while already logged in. The default value is false.

true

Returns an error as an invalid call.

false

Give priority to the logged-in session.

DefaultUserEntityResolver

Search through User entity and get user information. If the user cannot be found, the login fails.

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

The following items can be configured.

Item Value Description

unmodifiableUniqueKeyProperty

String

Property name that is the key when searching User entity. Searches User entity by using the condition specified in this property =[Unique ID] (Principal value specified by uniquePrincipalType) as a condition. The default value is oid.

eagerLoadReferenceProperty

String, Multiple

Reference property to be obtained while retrieving User entity to log in. By default, the user reference properties rank and groups are specified.

filterCondition

String

It is possible to specify filter conditions when searching for users.

Custom implementing class of UserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class. Write logic to get User entity in UserEntityResolver implementation class.

SimpleAuthTokenAuthenticationProvider

A provider that authenticates with a persistent opaque token (a random string of meaningless itself) associated with the user. Token must be generated in advance using 'org.iplass.mtp.auth.tokenAuthTokenInfoList' interface.

Please specify org.iplass.mtp.impl.auth.authenticate.simpletoken.SimpleAuthTokenAuthenticationProvider to the class.

The following items can be configured.

Item Value Description

providerName

String

autoLoginHandler

AutoLoginHandler

Automatic login handler. Set automatic login feature is needed with this authentication provider. The following classes are available as default implementations:

credentialTypeForTrust

String

Specify the credential implementing classs to call for upgrading the trusted authentication. For instance org.iplass.mtp.auth.login.IdPasswordCredential can be specified.

accountHandleClassForTrust

String

Specify the AccountHandle implementing classs to call for upgrading the trusted authentication. For instance org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAccountHandle can be specified.

userEntityResolver

UserEntityResolver

Set the acquisition method for user Entity after successful authentication. You can specify one of the following:

BearerTokenAutoLoginHandler

It is possible to authenticate with Bearer Token when calling WebApi.

Please specify org.iplass.mtp.impl.auth.authenticate.token.web.BearerTokenAutoLoginHandler to the class.

The following items can be configured.S

Item Value Description

rejectAmbiguousRequest

boolean

Controls the behavior when Bearer Token are specified while already logged in. The default value is false.

true

Returns an error as an invalid call.

false

Give priority to the logged-in session.

bearerTokenHeaderOnly

boolean

Set to true only when you want to restrain the system to get the Bearer Token only from the HTTP Header.
The default value is false.

authTokenType

String

Specify the AuthTokenHandler’s type that will be handled by the BearerTokenAutoLoginHandler which are defined by AuthTokenService.

DefaultUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

For more details, please refer to DefaultUserEntityResolver.

Custom implementing class of UserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

Write acquisition logic to get User entity in the implementation class of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

AccessTokenAuthenticationProvider

A provider that authenticates with an OAuth2.0 access token.

Authenticates the user with the access token passed when calling WebApi. Access token is obtained in advance according to the OAuth2.0 flow.

Please specify org.iplass.mtp.impl.auth.oauth.AccessTokenAuthenticationProvider to the class.

The following items can be configured.

Item Value Description

providerName

String

autoLoginHandler

AutoLoginHandler

Automatic login handler Set when automatic login feature is needed when using this authentication provider. Use the following classes:

credentialTypeForTrust

String

Specify credential implementing class for upgrading trusted authentication. For instance org.iplass.mtp.auth.login.IdPasswordCredential can be specified.

accountHandleClassForTrust

String

Specify AccountHandle implementing class for upgrading trusted authentication. For instance org.iplass.mtp.impl.auth.authenticate.builtin.BuiltinAccountHandle can be specified.

userEntityResolver

UserEntityResolver

Set the acquisition method of user Entity after successful authentication. You can specify one of the following:

BearerTokenAutoLoginHandler

Please specify org.iplass.mtp.impl.auth.authenticate.token.web.BearerTokenAutoLoginHandler to the class.

When using an access token, specify authTokenType as OAT and rejectAmbiguousRequest as true.

For more details, please refer to BearerTokenAutoLoginHandler.

DefaultUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

For more details, please refer to DefaultUserEntityResolver.

Custom implementing class of UserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

Write acquisition logic to get User entity in the implementing class of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

ConfigFileAuthenticationProvider

This provider authenticates from the account information described in the configuration file. It is assumed that the admin user account for developers who manage all tenants is described in File, and metadata management is possible even if there is no admin user in the User entity of each tenant.

A setting example is shown below. In addition, since users with administrator privileges are described in the configuration file, when using ConfigFileAuthenticationProvider, also use Setting Value Obfuscation.

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

Please specify org.iplass.mtp.impl.auth.authenticate.configfile.ConfigFileAuthenticationProvider to the class. The following items can be configured.

Item Value Description

providerName

String

accounts

AccountConfig, Multiple

Settings baout the account information.

tenantIds

int, Multiple

A tenant that can be logged into the account specified in accounts.

AccountConfig

The following items can be configured.

Item Value Description

id

String

Account ID。

password

String

Account Password

admin

boolean

Whether this account has administrator privilege.

attributeMap

String

Any key name(name) and value(value). The attribute information specified in attributeMap can be referenced as user attributes when bound as user information in GroovyScript etc.

JaasAuthenticationProvider

The id/password authorization provider of JAAS(Java Authentication and Authorization Service)を. By setting, authentication is possible even if the User entity does not exist in the iPLAss DB.

The JAAS authentication module definition must be defined in the login configuration file (or javax.security.auth.login.Configuration implementation). As a method defining the JAAS authentication module, there is a method of specifying a login configuration file with a system variable at JVM startup.

Example: -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 Set ldap server information appropriately for USERNAME of userProvider and userFilter.

Please specify org.iplass.mtp.impl.auth.authenticate.jaas.JaasAuthenticationProvider to the class.

The following items can be configured.

Item Value Description

providerName

String

entryName

String

The entry name defined by the settings of JAAS authentication. The default value is mtplogin.

uniquePrincipalType

java.security.Principal

The Principal class name indicating the unique ID in the authentication module.

For instance, when using com.sun.security.auth.module.LdapLoginModule,the class such as com.sun.security.auth.LdapPrincipal, and com.sun.security.auth.UserPrincipal can be specified. If the uniquePrincipalType are not specified, the id inputted during authorization process will be used as the unique id.

userEntityResolver

UserEntityResolver

Set the acquisition method of the user Entity after successful authentication. You can specify one of the following:

If there is no definition entry for userEntityResolver, user Entity is searched by accountId. If there is a definition entry for DefaultUserEntityResolver and the definition of unmodifiableUniqueKeyProperty is not set,then it will be searched with oid.

DefaultUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

For more details, please refer to DefaultUserEntityResolver.

AccountBaseUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver to the class.

Login is possible even if User entity does not exist in DB. A pseudo-created User entity is set in which the [unique ID] (Principal value specified by uniquePrincipalType) returned from the JAAS authentication module in oid, and the id entered during authentication are set in accountId and name.

Custom implementing class of UserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

Write the User entity acquisition logics in the implementing class of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

JeeContainerManagedAuthenticationProvider

An authentication provider using the authentication mechanism defined in JavaEE (Servlet specifications). Authenticate using the Principal object acquired with HttpServletRequest#getUserPrincipal(). It is assumed that the login process happens in advance outside of iPLAss by the mechanism provided by JavaEE container. By setting, it is possible to authenticate even if the User entity corresponding to the related Principal does not exist in the iPLAss DB.

Please specify org.iplass.mtp.impl.auth.authenticate.jee.JeeContainerManagedAuthenticationProvider to the class.

The following items can be configured.

Item Value Description

providerName

String

validateOnlyLogin

boolean

Whether to check if the Principal User matches the records in the iPLAss session for every request. The default value is false.

roleAsGroup

String, Multiple

If you want to handle the role (HttpServletRequest#isUserInRole(String)) specified in JavaEE as a group code, specify the role name you want to handle as a group code.

userEntityResolver

UserEntityResolver

Specify how to retrieve user Entity after successful authentication. You can specify one of the following: Refer to the Specify link that you actually specify.

When the definition of userEntityResolver cannot be found, the accountId will be used instead to search on User Entity. When the definition of DefaultUserEntityResolver exists, but the definition of unmodifiableUniqueKeyProperty was not set, the oid will be used as the key to search.

DefaultUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

For more details, please refer to DefaultUserEntityResolver.

AccountBaseUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver to the class.

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

Custom implementing class of UserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

And add the User Entity acquisition logics in the implementation of the class org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

LdapAuthenticationProvider

Provider that performs id/password authentication using LDAP server (including Active Directory). Depends on settings, it is possible to authenticate even if the User entity does not exist in the iPLAss DB. In that situation, it is also possible to get the attribute value and group of the user managed on the LDAP server.

Please specify org.iplass.mtp.impl.auth.authenticate.ldap.LdapAuthenticationProvider to the class.

The following items can be configured.

Item Value Description

providerName

String

jndiEnv

JNDIEnv

JNDI environment properties for LDAP connections.

userDn

String

User DN pattern for authentication. The user ID and tenant name requested for authentication are embedded in ${userName} and ${tenantName}, respectively.

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

${userName}@example.dentsusoken.com ※in the case of Active Directory

If it is not specified, then in order to retrieve the user DN before the authentication process, the userFilter setting value is used to search for the user so to acquire the DN, and therefore the authentication can be performed using the acquired user DN. It is recommended to set this value when the user DN can be derived uniquely from the user ID and tenant name at the time of authentication request.

getUser

boolean

Set whether to get the attribute value of the user on LDAP after successful user authentication. If userFilter is set, it will be used to search for users. If userFilter is not set, the user is acquired using the user DN. The default value is false.

userBaseDn

String

baseDN(pattern) for user search. If the user’s baseDN is divided per tenant, it is possible to embed the tenant name with ${tenantName}.

cn=Users,ou=${tenantName}

If userBaseDn is not specified, it will search from the root DN specified in java.naming.provider.url.

userFilter

String

Set the Filter pattern for user search. The user ID and tenant name requested for authentication are embedded in ${userName} and ${tenantName}, respectively.

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

If userDn is not specified, the userFilter setting is mandatory.

uniqueKeyAttribute

String

Attribute name to uniquely identify the user among user attributes obtained from LDAP. If not specified, the user ID value at the time of authentication request is set as the unique key. userAttribute name obtained from userAttributeLDAP. Multiple settings are possible. If not specified, all attributes are obtained from LDAP.

getGroup

boolean

Whether to acquire group information on LDAP to which the user belongs after successful user authentication. The acquired group information can be used in iPLAss role definition. The default value is false.

groupBaseDn

String

Set the BaseDN(pattern) for group search. If the group’s baseDN is divided per tenant, it is possible to embed the tenant name with ${tenantName}.

cn=Groups,ou=${tenantName}

If groupBaseDn is not specified, it will search from the root DN specified in java.naming.provider.url.

groupFilter

String

Set the Filter pattern for group search. User search target DN and tenant name are embedded in ${userDn} and ${tenantName}, respectively.

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

If getGroup is true, the groupFilter setting is mandatory.

groupCodeAttribute

String

Attribute name on LDAP to be acquired as group code (example: cn). If getGroup is true, setting groupCodeAttribute is mandatory.

groupAsTenant

boolean

Whether to determine whether a user belongs to the tenant to be authenticated by a group on LDAP. The default value is false.

tenantGroupCode

String

When groupAsTenant is true, if the group code matches the pattern set in tenantGroupCode, it is determined that the user belongs to the tenant and authentication is successful. It is possible to embed the tenant name with ${tenantName}.

T-${tenantName}

The group for tenant determination needs to be included in the results searched by groupFilter.

userEntityResolver

UserEntityResolver

Specify how to retrieve user Entity after successful authentication. You can specify one of the followings: Refer to the link destination for the class to be actually specified.

If there is no definition entry for userEntityResolver, user Entity is searched according to accountId. If there is a definition entry for DefaultUserEntityResolver and the definition of unmodifiableUniqueKeyProperty is not set, it will be searched according to oid.

JNDIEnv

Configurable items can be set in addition to the basic items described below. The details can be found here.

Item Value Description

java.naming.factory.initial

String

Specify the initialContextFactory of JNDI. The default value is com.sun.jndi.ldap.LdapCtxFactory.

java.naming.provider.url

String

URL pointing to the LDAP connection destination. The URL can also include the baseDN which is the search root.

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

java.naming.security.principal

String

Set the ID of the administrative user who can search for users and groups. If not set, the user account at the time of authentication will be used to perform user search and group search. Set this if the authenticated user does not have search privilege.

java.naming.security.credentials

String

Password of the administrative user who can perform user search and group search.

DefaultUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

For more details, please refer to DefaultUserEntityResolver.

AccountBaseUserEntityResolver

Login is possible even if User entity does not exist in DB. In the case of LDAP module, user attribute value returned from LDAP can be mapped with User entity property. It will define the mapping between the attributeMappingUser entity property and the attribute retrieved from LDAP. Multiple settings can be made for each property name.

Please specify org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver to the class. The following items can be configured.

Item Value Description

propertyName

String

Property name of the mapped User entity.

accountAttributeName

String

The name of the attribute value obtained from the mapping source LDAP. Beside the attribute names defined on LDAP, the following setting values can be used.

id

User ID entered during user authentication

unmodifiableUniqueKey

The attributes set in the uniqueKeyAttribute definition above

It is also possible to combine multiple attributes in the GroovyTemplate format using the ${attribute value} format.

${sn ?:''} ${givenName ?:''} ※Join sn and givenName with space

type

Class

Specify the type of the value that you need to convert to when obtaining the value from LDAP(Such as java.lang.String, java.lang.Boolean, etc.)。 If not specified, the type returned from LDAP will be used directly.

defaultValue

Object

The default value if it fail to retrieve the value from LDAP. If not specified and the value could not be obtained, the value will be set to null.

Custom implementing class of UserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

And add the User Entity acquisition logics to the implementing class for org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

Notes for Authenticating with Active Directory

When using LdapAuthenticationProvider for Active Directory, please note that userDn is in the following format at the time of user authentication.

[userID]@[domainName]

Also, when using the objectGUID value that can uniquely identify the user object on Active Directory as uniqueKeyAttribute, it is necessary to note that objectGUID is stored in binary. To handle binary attributes correctly, the JNDI environment property (java.naming.ldap.attributes.binary) must be set correctly.

An example of settings when using Active Directory is shown below.

<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 is declared to be binary-->
    </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" /><!-- Will be retrieved as byte[], thus transforming to string -->
      </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

An authentication provider that supports agent-type and reverse proxy-type authentication mechanisms for SSO products (or similar proprietary authentication infrastructure). Normally, when using these SSO products, authentication information is linked to the application as HTTP header, HttpServletRequest attribute, and HttpSession attribute. This authentication provider performs authentication on iPLAss based on the information linked from these external authentication mechanisms. It is assumed that the login screen and login processing are provided by the external authentication mechanism and are performed outside iPLAss. By setting, it is possible to authenticate even if the User entity does not exist in the iPLAss DB.

Please specify org.iplass.mtp.impl.auth.authenticate.preexternal.PreExternalAuthenticationProvider to the class. The following items can be configured.

Item Value Description

providerName

String

validateOnlyLogin

boolean

Specify whether to always check if the linked user information matches the User recognized in the iPLAss session for each request. The default value is false.

sourceType

SourceType

Specify the location where the user information passed from external authentication mechanism is stored.

accountIdAttribute

String

Key name in which account ID is stored among user information passed from external authentication mechanism.

uniqueKeyAttribute

String

Key name that stores unique key (equivalent to OID) among user information passed from external authentication mechanism. If not specified, the value specified in accoutIdAttribute is used as the unique key.

userAttribute

String, Multiple

Key name of the value treated as user attribute among user information passed from external authentication mechanism.

logoutUrl

String

Specify the URL for logout processes of external authentication mechanism. When logout is called on the iPLAss standard screen, it redirects to that screen.

userEntityResolver

UserEntityResolver

Specify the method to retrieve user Entity after successful authentication. You can specify one of the following: Refer to the link destination for the class to be actually specified.

If there is no definition entry for userEntityResolver and uniqueKeyAttribute is not specified, user Entity will be searched depends on accountId. In the cases other than the above, if the definition of unmodifiableUniqueKeyProperty is not set, it will be searched by oid.

SourceType

Specify the location where the user information passed from external authentication mechanism is stored.

HEADER

Get user information from header with getHeader (String)

REQUEST

Get user information with getAttribute (String) from HttpServletRequest

SESSION

Get user information with getAttribute (String) from HttpSession

DefaultUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

For more details, please refer to DefaultUserEntityResolver.

AccountBaseUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver to the class.

For more details, please refer to AccountBaseUserEntityResolver. UserAttribute value passed from external authentication mechanism can be mapped to User entity property.

Custom implementing class of UserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

And add the acquisition logics to the implementing class of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

X509AuthenticationProvider

An authentication provider that authenticates using an X509 client certificate. The authenticity of the X509 client certificate itself is treated as if it was verified by the SSL/TLS layer (no revalidation is performed within iPLAss).

X509AuthenticationProvider can be used alone as an authentication provider, or as a secondary authentication factor for TwoStepAuthenticationProvider. When using it as a single authentication provider, the CN in the certificate must match the accountId. However, when using it as a secondary authentication element of the TwoStepAuthenticationProvider, matching the CN and accountId is not mandatory.

Also, when used as a single authentication provider, due to the nature of the client certificate, even if logout processing is performed, it will be immediately re-authenticated by the subsequent request.

By setting, it is possible to authenticate even if the User entity corresponding to the user does not exist in the iPLAss DB.

Please specify org.iplass.mtp.impl.auth.authenticate.x509.X509AuthenticationProvider to the class. The following items can be configured.

Item Value Description

providerName

String

validateOnlyLogin

boolean

Whether to check for each request if the user in the request matches the logged user in session. The default value is false.

twoStep2ndFactor

boolean

When setting as a secondary authentication factor of TwoStepAuthenticationProvider, it must be set to true. The default value is false.

userEntityResolver

UserEntityResolver

Specify the method to retrieve the User Entity after a successful authentication. The user can specify one of the followings. Please refer to the specific link that you actually going to use.

If there is no definition entry for userEntityResolver, user Entity is searched by accountId. If there is a definition entry of DefaultUserEntityResolver and the definition of unmodifiableUniqueKeyProperty is not set, it will be searched with oid.

DefaultUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.

For more details, please refer to DefaultUserEntityResolver.

AccountBaseUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver to the class.

Login is possible even if User entity does not exist in DB. Creates a pseudo User entity with oid, accountId, and name set to CN in the certificate.

Custom implementing class ofUserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

Please add the acquisition logics to retrieve the User Entity to the implementing class of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

SamlAuthenticationProvider

Authentication provider that performs SSO/SLO based on SAML2.0. iPLAss supports SAML 2.0 SP mode. You can log in to iPLAss by linking authentication information authenticated by an external IdP. If you need to use SamlAuthenticationProvider, it is necessary to configure AuthenticationPolicy so to enable SAML.

Please specify org.iplass.mtp.impl.auth.authenticate.saml.SamlAuthenticationProvider to the class.

The following items can be configured.

Item Value Description

providerName

String

userEntityResolver

UserEntityResolver

Set the User entity acquisition method after successful authentication. You can specify one of the following: Refer to the link for the corresponding classes.

SamlUserEntityResolver

Search user Entity according to NameID mapping of SAML definition set as metadata.

Please specify org.iplass.mtp.impl.auth.authenticate.saml.SamlUserEntityResolver to the class.

The following items can be configured.

Item Value Description

eagerLoadReferenceProperty

String, Multiple

Reference property to be obtained at the same time when searching User entity after login. By default, the user reference properties rank and groups are specified.

filterCondition

String

The filter conditions when searching through the User.

AccountBaseUserEntityResolver

Please specify org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver to the class.

For more details, please refer to Please refer to the section ofAccountBaseUserEntityResolver. User attribute values passed via SAML can be mapped to User entity properties.

Custom implementing class of UserEntityResolver

Please specify your custom implementation of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver to the class.

Please add the User Entity acquisition logics to the implementing class of org.iplass.mtp.impl.auth.authenticate.UserEntityResolver.

TwoStepAuthenticationProvider

An authentication provider that performs 2-step authentication. We can configure one primary authentication provider and one or more secondary authentication providers. The two-step authentication process is executed according to the settings in the specified authentication provider and authentication policy. Please refer to [User-Management] sheet for details of authentication policy.

In the setting of TwoStepAuthenticationProvider, define the primary and secondary AuthenticationProvider as shown in the example below.

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

Please specify org.iplass.mtp.impl.auth.authenticate.twostep.TwoStepAuthenticationProvider to the class. The following items can be configured.

Item Value Description

providerName

String

refer to BuiltinAuthenticationProvider. If not specified, providerName defined in primary is applied.

primary

AuthenticationProvider

Primary AuthenticationProvider. Authentication Provider that can be specified (※) to one of the following authentication providers which uses IdPasswordCredential as a Credential at the time of authentication, or a custom authentication provider.

※ When using the login authentication provided by iPLAss GEM module

secondary

AuthenticationProvider

Specify the secondary AuthenticationProvider. Multiple "secondary" can be specified. One of the following authentication providers can be specified (※).

※ When using the login authentication provided by iPLAss GEM module

OnetimeCodeAuthenticationProvider

A provider that authenticates using a one-time authentication code. Usually, it is used as a secondary authentication provider for 2-step authentication. One-time code generation method is defined separately in OnetimeCodeGeneratorService. The setting of which one-time code generation method to use is defined in the authentication policy. For the details, please refer to the section of 2-Step Verification.

There is no configurable items for OnetimeCodeAuthenticationProvider itself.

Please specify org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeAuthenticationProvider to the class.

TimeBasedAuthenticationProvider

A provider that performs timebased authentication (authenticating by two-factor app). Usually, it is used as a secondary authentication provider for 2-step authentication. For the details, please refer to the section of 2-Step Verification.

The following items can be configured.

Item Value Description

maxFailureCount

int

The maximum authentication failure count. The default is 5.

failureExpirationInterval

int

The expiration interval (minutes) of authentication failure. The number of authentication failures within the specified time is defined as the number of failures. The default is 10.

unmodifiableUniqueKeyResolver

UnmodifiableUniqueKeyResolver

Set the acquisition method of user unique key after successful authentication. You can specify one of the following: DefaultUnmodifiableUniqueKeyResolver (Default)
Custom implementing class of UnmodifiableUniqueKeyResolver

DefaultUnmodifiableUniqueKeyResolver

Search through User entity and get unique key.

Please specify org.iplass.mtp.impl.auth.authenticate.timebased.DefaultUnmodifiableUniqueKeyResolver to the class.

The following items can be configured.

Item Value Description

unmodifiableUniqueKeyProperty

String

Property name that get the key when searching User entity. The default value is oid.

Custom implementing class of DefaultUnmodifiableUniqueKeyResolver

Please specify your custom implementation of org.iplass.mtp.auth.login.timebased.UnmodifiableUniqueKeyResolver to the class. Write logic to get User unique key in UnmodifiableUniqueKeyResolver implementation class.

KnowledgeBasedAuthenticationProvider

A provider that performs knowledge based authentication (authenticating by answering secret questions). Usually, it is used as a secondary authentication provider for 2-step authentication. It is possible to use the property stored in the User entity as a question item. Settings such as which property is used as a question item and the number of questions are set in the authentication policy. For the details, please refer to the section of 2-Step Verification.

There is no configurable items for KnowledgeBasedAuthenticationProvider itself.

Please specify org.iplass.mtp.impl.auth.authenticate.knowledgebased.KnowledgeBasedAuthenticationProvider to the class.

RememberMeTokenAuthenticationProvider

An authentication provider that implements the RememberMe function (function that keeps you logged in). A provider that authenticates with the token stored in the browser cookie (persistent cookie) at the previous login. Use the authentication policy to set the validity period to keep logged in. For the detailed explanation on the features, please refer to Remember Me section.

RememberMeTokenAuthenticationProvider works as a wrapper to give RememberMe functionality to various actual AuthenticationProviders. Please define the configuration file to include AuthenticationProvider that you want to give RememberMe function.

A setting example is shown below.

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

Please specify org.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenAuthenticationProvider to the class.

The following items can be configured.

Item Value Description

providerName

String

refer to BuiltinAuthenticationProvider If not specified, providerName defined in the included authenticationProvider is applied.

AuthenticationProvider

AuthenticationProvider

AuthenticationProvider is the one that performs the actual authentication process.

deleteTokenOnFailure

boolean

Set whether or not to delete the token when authentication fails. Default is true.

clientStore

AuthTokenClientStore

Setting for client side token storage. The following implementation class is provided by default.

autoLoginHandler

AutoLoginHandler

Automatic login handler. Set a custom AutoLoginHandler if you want to customize the automatic login process using the RememberMe token implemented in RememberMeTokenAuthenticationProvider.

AuthTokenCookieStore

This class uses Cookie as a token storage method on the client side.

Please specify org.iplass.mtp.impl.auth.authenticate.token.web.AuthTokenCookieStore to the class. The following items can be configured.

Item Value Description

cookieName

String

Cookie Name。

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

This is a service for managing authentication tokens.

Interface Name

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

Implementing Class Name

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

Settings of AuthTokenService

The following configurations are available to AuthTokenService.

Configurable Items
Item Value Description

storeMap

AuthTokenStore, in format of Map

This is the setting of AuthTokenStore. Specify store name into the key, and define it in the format of Map. It is mandatory to have at least one AuthTokenStore definition, named with default.

handler

AuthTokenHandler, Multiple

The configuration for AuthTokenHandler.

AuthTokenStore

Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.token.AuthTokenStore to the class.

In standard, the following AuthTokenStore are provided.

RdbAuthTokenStore

Please specify org.iplass.mtp.impl.auth.authenticate.token.RdbAuthTokenStore to the class.

This configuration manages authentication tokens in RDB.

Item Value Description

saveDetailAsJson

boolean

Specify whether to save AuthToken in JSON format. When saving in JSON format, the attribute value of AuthToken is saved using Jackson’s ObjectMapper (if saving in JSON format, the class that implements the AuthToken to be saved must support it).
If false, it is saved as binary data using the Java default serialization mechanism.
The default value is false.

authTokenStore

AuthTokenStore

The actual AuthTokenStore that stores the authentication token.

CachableAuthTokenStore

Please specify org.iplass.mtp.impl.auth.authenticate.token.CachableAuthTokenStore to the class.

A cache mechanism is added to the included authTokenStore.

Item Value Description

cacheStoreName

String

Specify the name of CacheStore (CacheStoreFactory) defined in CacheService. If not specified, the default value is mtp.auth.cachableAuthTokenStore/DEFAULT.

authTokenStore

AuthTokenStore

The actual AuthTokenStore that stores the authentication token.

CacheOnlyAuthTokenStore

Please specify org.iplass.mtp.impl.auth.authenticate.token.CacheOnlyAuthTokenStore to the class.

Unlike CachableAuthTokenStore, it does not have a permanent destination for the back end, it stores only in CacheStore.

Item Value Description

cacheStoreName

String

Specify the name of CacheStore (CacheStoreFactory) defined in CacheService. If not specified, the default value is mtp.auth.cacheOnlyAuthTokenStore/DEFAULT.

In a cluster environment, use CacheStoreFactory that can refer to same cache from multiple AP servers such as RedisCacheStoreFactory.
AuthTokenHandler

Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.token.AuthTokenHandler.

The following AuthTokenHandler is provided in the standard.

RememberMeTokenHandler

Please specify org.iplass.mtp.impl.auth.authenticate.rememberme.RememberMeTokenHandler to the class.

This handler will handle RememberMeToken. The following items can be configured.

Item Value Description

store

String

The name of the AuthTokenStore to use. If not specified, default AuthTokenStore is used.

type

String

Type. If it is not set, it will be REMME.

hashSettings

HashSetting, Multiple

Token hash setting and method setting. If not specified, the Token will be save as plain text.

secureRandomGeneratorName

String

It specify the token string generator defined in SecureRandomService . If not set, default SecureRandomGenerator will be used.

visible

boolean

Whether it is visible via AuthTokenInfoList. The default value is true.

HashSetting

Please specify org.iplass.mtp.impl.auth.authenticate.token.HashSetting to the class.

The following items can be configured.

Item Value Description

version

String

Specifies a string that identifies the version.

hashAlgorithm

String

Specifies the hash algorithm. SHA-256 etc.

stretchCount

int

Number of stretches. The default is 1.

SimpleAuthTokenHandler

Please specify org.iplass.mtp.impl.auth.authenticate.simpletoken.SimpleAuthTokenHandler to the class.

It handles SimpleAuthToken. SimpleAuthToken allows access as the user associated with the token. SimpleAuthToken remains in effect until the user explicitly delete it.

The following items can be configured.

Item Value Description

store

String

The name of the AuthTokenStore to use. If not specified, default AuthTokenStore is used.

type

String

Type. If not set, it will be SAT.

hashSettings

HashSetting, Multiple

Token hash setting and method setting. If not specified, the token will be saved as plain text.

secureRandomGeneratorName

String

Specify token string generator defined in SecureRandomService. If not set, default SecureRandomGenerator will be used. visible

TimeBasedOneTimePasswordHandler

Please specify org.iplass.mtp.impl.auth.authenticate.timebased.TimeBasedOneTimePasswordHandler to the class. This AuthTokenHandler is used for timebased authentication in the two-step authentication function.

The following items can be configured.

Item Value Description

store

String

The name of the AuthTokenStore to use. If not specified, default AuthTokenStore is used.

type

String

Type. If it is not set, it will be TSK.

timeStepWindowSize

int

Validity period of the time step. If 1 is set, one step before and after the currently valid one-time password will also be considered valid. Default value is 1.
The time for one step is fixed at 30 seconds.

AccessTokenHandler

Please specify org.iplass.mtp.impl.auth.oauth.token.opaque.AccessTokenHandler to the class.

Handles OAuth2.0 AccessToken and RefreshToken.

The following items can be configured.

Item Value Description

store

String

The name of the AuthTokenStore to use. If not specified, default AuthTokenStore will be used.

refreshTokenStore

String

Set the name of the AuthTokenStore used to store the RefreshToken. If not specified, default will be used.

type

String

Set the type to identify AccessToken. If not set, it will be OAT.

refreshTokenType

String

RefreshToken type. If not set, it will be ORT.

hashSettings

HashSetting, Multiple

Token hash setting and method setting. If not specified, token will be saved as plain text. This setting applies to both AccessToken and RefreshToken.

secureRandomGeneratorName

String

Specify the Token string generator of the AccessToken defined in SecureRandomService. If not set, default SecureRandomGenerator will be used.

refreshTokenSecureRandomGeneratorName

String

SecureRandomService Specify the the Token string generator of RefreshToken defined in. If not set, default SecureRandomGenerator will be used. visible

OAuthClientCredentialHandler

Please specify org.iplass.mtp.impl.auth.oauth.OAuthClientCredentialHandler to the class.

Handles Client and ResourceServer Credentials (client_id, client_secret) in OAuth2.0.

The following items can be configured.

Item Value Description

store

String

The name of the AuthTokenStore to use. If not specified, default AuthTokenStore is used.

type

String

Defines the type.
Specify OC for Client. Specify ORS for ResourceServer.

hashSettings

HashSetting, Multiple

Token hash setting and method setting. If not specified, the token will be saved as plain text.

secureRandomGeneratorName

String

Specify the token string generator defined in SecureRandomService. If not set, default SecureRandomGenerator will be used.

oldCredentialValidDays

int

Valid period (days) of Credentials generated in the past can be specified. If not specified, the past Credential will be destroyed immediately.

WebhookAuthTokenHandler

Please specify org.iplass.mtp.impl.webhook.WebhookAuthTokenHandler to the class.

This handler will handle the credential information for WebhookEndPoint that will be used in Webhook notifications.

The following items can be configured.

Item Value Description

store

String

The name of the AuthTokenStore to use. If not specified, default AuthTokenStore will be used.

type

String

The type indicator for WebhookAuthToken. The default value is WEBHOOKATH.

CookieRiskEvaluationTokenHandler

Please specify org.iplass.mtp.impl.auth.authenticate.builtin.policy.riskevals.web.CookieRiskEvaluationTokenHandler to the class.

This AuthTokenHandler is used for risk-based authentication (CookieToken) in the two-step authentication function.

The following items can be configured.

Item Value Description

store

String

The name of the AuthTokenStore to use. If not specified, default AuthTokenStore will be used.

type

String

Type. If not set, it will be RBA.

hashSettings

<< AuthTokenHandler_HashSetting, HashSetting >>, Multiple

Token hash setting and method setting. If not specified, save as plain text.

secureRandomGeneratorName

String

Specify the token string generator defined in SecureRandomService . If not set, default SecureRandomGenerator will be used.

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

This is the service to manage the numbering system of AutoNumber Type. The definition of CounterService, which is employed when using AutoNumber type as Entity property, will be discussed. The setting on whether to allow jumps on numbers can be configured. If allowed, please refer to the settings of AutoNumberTypeCounterAcceptSkip. If not allowed, please refer to the Settings of AutoNumberTypeCounterNoSkip.

Interface Name

org.iplass.mtp.impl.counter.CounterService

Implementing Class Name

Without Cache
org.iplass.mtp.impl.counter.RdbTableCounterService
With Cache
org.iplass.mtp.impl.counter.CachableRdbTableCounterService

Settings of RdbTableCounterService

RdbTableCounterService can be configured with the following items.

Configurable Items
Item Value Description

separateTransaction

boolean

Whether to separate transactions when numbering. The default value is false.

retryCount

int

Number of times to retry when numbering fails. The default value is 3.

counterTypeName

String

Name of the numbering type. The default value is defaultCounter

Settings of CachableRdbTableCounterService

CachableRdbTableCounterService can be configured.

Configurable Items
Item Value Description

separateTransaction

boolean

Specify whether to separate the transactions when counting. The default value is false.

retryCount

int

Set the retry attempt counts when the numbering fails. The default is 3.

counterTypeName

String

Set the counter type name. The default value is defaultCounter

cacheSize

int

Cache size. The default value is 20.

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

This is the service to manage the settings of AWS.

Interface Name

org.iplass.mtp.impl.aws.AWSSetting

Implementing Class

org.iplass.mtp.impl.aws.AWSSetting

The settings of AWSSetting

AWSSetting can be configured with the following items.

Configurable Items
Item Value Description

accessKeyId

String

AWS access key ID

secretKey

String

AWS secret key

clientConfiguration

ClientConfiguration

The settings of AWSClient side(default)

configurationMap

ClientConfiguration、in format of Map

Individual settings for the AWSClient side. If not configured individually, the default clientConfiguration will be applied.

ClientConfiguration

Please specify com.amazonaws.ClientConfiguration to the class. So to configure the settings when connecting to various kind of service provided by AWS.

Example
<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" />
    -->

    <!-- Default AWSClient setting -->
    <property name="clientConfiguration">
        <property name="maxConnections" value="100" />
    </property>

    <property name="configurationMap">
        <!-- Individual configuration for S3LobStore -->
        <property name="S3LobStore" class="com.amazonaws.ClientConfiguration">
            <property name="maxConnections" value="50" />
        </property>

        <!-- Individual configuration for AWSHttpSender -->
        <property name="AWSHttpSender" class="com.amazonaws.ClientConfiguration">
            <property name="maxConnections" value="80" />
        </property>
    </property>
</service>

3.13. BinaryMetaDataService

This is a service to providing a mechanism so that we does not have to store metadata in binary format as a byte array in memory.

Interface Name

org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService

Implementing Class Name

org.iplass.mtp.impl.metadata.binary.BinaryMetaDataService

Settings of BinaryMetaDataService

Set operations related to maintaining the metadata in binary format.

Configurable Items
Item Value Description

keepInMemoryThreshold

int

Set the size of the memory threshold (in bytes). If the data size exceeds the threshold, it is retained as a temporary file. The default value is 65536 (64KiB).

cacheMemoryThreshold

int

Size threshold in bytes to cache in memory. If the size is below the threshold, it will be cached in memory. The default value is 1048576 (1024KiB).

xmlBinaryChunkSize

int

Chunk size when marshalling or unmarshalling to metadata XML (bytes). The default value is 262144 (256KiB).

deleteTempFileOnDestroy

boolean

Whether to delete temporary files when the service is destroyed or the virtual machine (VM) is shut down. The default value is true.

tempFileDir

String

Path to the directory where temporary files are stored. If not set, the directory path of "java.io.tmpdir" will be used.

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

This service manages the Cache store.

Interface Name

org.iplass.mtp.impl.cache.CacheService

Implementing Class Name

org.iplass.mtp.impl.cache.CacheService

Settings of CacheService

CacheService can be configured withe the following items.

Configurable Items
Item Value Description

defaultFactory

CacheStoreFactory

Settings of CacheStoreFactory

Text string other than "defaultFactory"

CacheStoreFactory, Multiple

specific Settings of CacheStoreFactory。

CacheStoreFactory

Please specify the implementing class of org.iplass.mtp.impl.cache.store.CacheStoreFactory.

As our standard implementation, the following CacheStoreFactory implementations are provided.

Common Settings

Below is the common settings for all CacheStoreFactory. The following items can be configured.

Item Value Description

namespace

String

The namespace for the Cache.

namespacePattern

String

Cache name space’s pattern. In format of regular expression.

indexCount

int

The number of indexes. the default is 0.

concurrencyLevelOfCacheHandler

int

The parallel thread count of CacheHandlers. The default is 4.

RdbCacheStoreFactory

This is the CacheStoreFactory using Rdb. The following items can be configured.

Item Value Description

cacheKeyResolver

CacheKeyResolver

Settings of CacheKeyResolver

cacheIndexResolver

CacheKeyResolver, Multiple

Settings of CacheKeyResolver for indexes.

connectionFactoryName

String

Name of the connection factories.

rdbArapterName

String

RdbAdapter name.

tableName

String

Set the table name to store the Cache. The default is CACHE_STORE.

retryCount

int

Number of times to retry when Caching fails. The default value is 0.

timeToLive

long

Cache lifespan (milliseconds). If -1 is set, it will be infinite. The default value is -1.

timeToLiveCalculator

TimeToLiveCalculator

To set the lifetime dynamically for each cache entry, specify an implementation class for the org.iplass.mtp.impl.cache.store.TimeToLiveCalculator interface. The implementation of timeToLiveCalculator takes precedence over the setting of timeToLive.

SimpleCacheStoreFactory

This is the CacheStoreFactory using the internal memories. The following items can be configured.

Item Value Description

initialCapacity

int

Cache initial capacity. The default value is 16.

loadFactor

float

Load factor. The initial value is 0.75.

concurrencyLevel

int

Estimated number of threads updating in parallel. The default value is 16.

timeToLive

int

Cache lifespan (milliseconds). If -1 is set, it will be indefinite. The default value is -1.

timeToLiveCalculator

TimeToLiveCalculator

To set the lifetime dynamically for each cache entry, specify an implementation class for the org.iplass.mtp.impl.cache.store.TimeToLiveCalculator interface. The implementation of timeToLiveCalculator takes precedence over the setting of timeToLive.

size

int

Cache size. If -1 is set, there is no limit. The default value is -1.

multiThreaded

boolean

Set whether to allow multi-threading. The default value is true.

evictionInterval

long

Cache expiry time in milliseconds. If -1 is set, it will be infinite. The default value is -1.

fineGrainedLock

boolean

Specifies whether or not fine-grained locking is used. Enabling this flag may improve parallelism of the cache update process if the Index is used and the cache is updated frequently. The default value is false.

indexConfig

FineGrainedLockIndexConfig, Multiple

Detailed settings for each index of fine-grained locks.

FineGrainedLockIndexConfig

Please specify the implementing class of org.iplass.mtp.impl.cache.store.builtin.FineGrainedLockIndexConfig to the class.

The following items can be configured.

項目 説明

shardSize

int

Shard size. Set the value according to the degree of parallelism. Default value is 1.

fair

boolean

Specifies the fairness policy for locking. Specify true to use the fair ordering policy. Default is false.

SyncServerCacheStoreFactory

This is the CacheStoreFactory which synchronize the caches between server. It is less reliable. If this method is picked, please keep in mind that the system will keep refreshing the cache based on the interval specified in the settings of timeToLive. If another server goes down during the cache update process, inconsistency may occur until next successful cache refresh. The following items can be configured.

Item Value Description

cacheKeyResolver

CacheKeyResolver

Settings of CacheKeyResolver。

cacheIndexResolver

CacheKeyResolver, Multiple

Settings of CacheKeyResolver of the indexes.

store

CacheStoreFactory

Settings of CacheStoreFactory

listener

SyncServerCacheEventListener

Settings of the listener to execute when receiving synchronous messages.

noClusterEventOnPut

boolean

Set to true if you want no notification to be sent to another server during a put operation towards Cache. The default value is false. (there will be notifications).

TransactionLocalCacheStoreFactory

CacheStoreFactory that delays reflection to the back-end CacheStore while the transaction is valid. The following items can be configured.

Item Value Description

backendStore

CacheStoreFactory

Settings of the back end’s CacheStoreFactory.

InfinispanCacheStoreFactory

CacheStoreFactory that uses Infinispan. The following items can be configured.

Item Value Description

createOnStartup

boolean

Whether to create a CacheStore at startup. The default value is false.

cacheConfigrationName

String

Cache Name.

timeToLiveCalculator

TimeToLiveCalculator

To set the lifetime dynamically for each cache entry, specify an implementation class for the org.iplass.mtp.impl.cache.store.TimeToLiveCalculator interface.

RedisCacheStoreFactory

CacheStoreFactory that uses Redis. The following items can be configured.

Item Value Description

serverName

String

The server name specified by RedisService.

timeToLive

long

Cache lifespan (seconds). If 0 or less is set, it will be infinite. The default value is 0.

timeToLiveCalculator

TimeToLiveCalculator

To set the lifetime dynamically for each cache entry, specify an implementation class for the org.iplass.mtp.impl.cache.store.TimeToLiveCalculator interface. The implementation of timeToLiveCalculator takes precedence over the setting of timeToLive.

retryCount

int

Number of retries on cache save failure. Default value is 0 (no retry).

poolConfig

RedisCacheStorePoolConfig

Connection pool configuration (using Apache Commons-pool2).

RedisCacheStorePoolConfig

The following items can be configured. Details and default values for each item can be found in Apache Commons-pool2’s org.apache.commons.pool2.impl.BaseObjectPoolConfig and org.apache.commons.pool2.impl. GenericObjectPoolConfig.

Item Value Description

maxTotal

int

Maximum number of connections that can be allocated from the pool. Default value is 8.

maxIdle

int

Maximum number of idle instances in the pool. Default value is 8.

minIdle

int

The minimum number of idle instances to keep in the pool. The default value is 0.

blockWhenExhausted

boolean

Whether the caller should wait when trying to retrieve instances from the pool while maxTotal is reached. Default value is true.

maxWaitMillis

long

The maximum number of milliseconds the caller will wait when a connection is unavailable. Default value is -1 (no timeout).

testOnBorrow

boolean

Whether the connection should be verified before it is retrieved from the pool. Default value is false.

testOnReturn

boolean

Whether to validate before a connection is returned to the pool. Default value is false.

testWhileIdle

boolean

Whether to validate idle instances in the pool. Default value is false.

timeBetweenEvictionRunsMillis

long

Time to sleep while verification of idle instances in the pool is performed. Default value is -1 (do not validate).

minEvictableIdleTimeMillis

long

The minimum time between when an instance is idle in the pool and when it is verified and allowed to leave. The default value is 180000 (30 minutes).

numTestsPerEvictionRun

int

The maximum number of objects to inspect during an idle instance verification thread write run. Default value is 3.

Translated with www.DeepL.com/Translator (free version)

MetricsCacheStoreFactory

This is a CacheStoreFactory that collects metrics on the size of the backend CacheStore and the number of cache hits/misses. It has a persistent store in the backend that actually does the caching, and this class does not perform any operations on the cache (only recording). It is configurable when Micrometer module is added to the dependency. If Micrometer module is applied, it will default to collect metrics for CacheStoreFactory which is configured by default.

The following items can be configured.

Item Value Description

wrappedStore

CacheStoreFactory

Settings of the backend’s CacheStoreFactory.

sizeOnly

boolean

Please Specify whether to record only the size of the CacheStore. If false, in addition to the size of the CacheStore, the number of Cache hits/misses will be recorded for each nameSpace. By default, only the Query cache and ActionContent cache are set to false.

CacheKeyResolver

Please specify the implementing class of org.iplass.mtp.impl.cache.store.keyresolver.CacheKeyResolver to the class.

As standard implementation, the following CacheKeyResolver are provided.

CounterCacheKeyResolver

Please specify org.iplass.mtp.impl.counter.CachableRdbTableCounterServicea$CounterCacheKeyResolver to the class.

The CacheKeyResolver of CounterKey type. There is no configurable items.

IntegerCacheKeyResolver

Please specify org.iplass.mtp.impl.cache.store.keyresolver.IntegerCacheKeyResolver to the class.

CacheKeyResolver of Integer type. There is no configurable items.

QueryCacheKeyResolver

Please specify org.iplass.mtp.impl.entity.cache.QueryCacheKeyResolver to the class.

CacheKeyResolver of Query type. There is no configurable items.

StringCacheKeyResolver

Please specify org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver to the class.

CacheKeyResolver of text strings type. There is no configurable items.

SyncServerCacheEventListener

Please specify org.iplass.mtp.impl.metadata.MetaDataSyncServerCacheListener to the class.

It will Synchronize metadata. There is no configurable items.

Example
<service>
    <interface>org.iplass.mtp.impl.cache.CacheService</interface>

    <!-- Entity transaction local cache (non-shared) -->
    <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 transaction local cache (non-shared) -->
    <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>

    <!-- Permission check result cache (non-shared) -->
    <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>

    <!-- TenantContextCache -->
    <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's counter's Cache -->
    <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>

    <!-- Cache of authentication related 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">
                <!-- Set to available to 6 hours -->
                <property name="timeToLive" value="21600000" />
            </property>
        </property>
    </property>

    <!-- Cache of the Metadata(real object)-->
    <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">
                <!-- Set to available to 12 hours -->
                <property name="timeToLive" value="43200000" />
            </property>
            <property name="listener" class="org.iplass.mtp.impl.metadata.MetaDataSyncServerCacheListener" />
        </property>
    </property>

    <!-- Metadata (list for path) Cache (server local cache. Data synchronization via server notification of metadata cache) -->
    <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">
                <!-- Set to available to 12 hours -->
                <property name="timeToLive" value="43200000" />
        </property>
    </property>

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

    <!-- QueryCache -->
    <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>
                <!-- Set to available to 12 hours -->
                <property name="timeToLive" value="43200000" />
                <!-- Maximum is 128 -->
                <property name="size" value="128" />
            </property>
        </property>
    </property>

    <!-- Default Cache for cases other than the above 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

This is a service to manage the feature that prevent robot access with reCAPTCHA.

Interface Name

org.iplass.wam.impl.captcha.CaptchaService

Implementing Class

org.iplass.wam.impl.captcha.CaptchaService

The settings of CaptchaService

CaptchaServicecan be configured with the following items.

Configurable Items
Item Value Description

captchaMethod

CaptchaMethod, Multiple

set the captchaMethod here.

CaptchaMethod

Please specify the implementing class of org.iplass.wam.impl.captcha.CaptchaMethod to the class.

As the standard implementation, the class org.iplass.wam.impl.captcha.ReCaptchaMethod is provided. The following items can be configured.

Item Value Description

siteKey

String

Site key for reCAPTCHA.

secretKey

String

Google’s reCAPTCHA secret key. GCP API key if using reCAPTCHA Enterprise.

projectId

String

If using reCAPTCHA Enterprise, enter the GCP project ID.

allowableScoreThreshold

String

Threshold of allowable scores. A score above the set threshold is considered legitimate. Set if reCAPTCHA v3 or reCAPTCHA Enterprise is used.

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

This is the service to manage how the clusters communicate with each others.

Interface Name

org.iplass.mtp.impl.cluster.ClusterService

Implementing Class Name

org.iplass.mtp.impl.cluster.ClusterService

Settings of ClusterService

ClusterService is configurable.

Configurable Items
Item Value Description

messageChannel

MessageChannel

Settings of the message channel of the communication between clusters.

MessageChannel

Please specify the implementing class of org.iplass.mtp.impl.cluster.channel.MessageChannel.

As standard, the following MessageChannel are provided.

HttpMessageChannel

Please specify org.iplass.mtp.impl.cluster.channel.http.HttpMessageChannel to the class.

A message channel that sends and receives messages via Http. The following items can be configured.

Item Value Description

serverUrl

String, Multiple

URL for communication with other cluster members.
The URL to be specified should be in the following format.

http://[server]:[port]/[applicationContext]/cmcs

You can also include your own server url. If you include url of your own server in serverUrl, resolve your url in the following methods and send message to other servers.

  1. If the followings are set in the system properties, the value is perceived as its own server name and port.
    mtp.cluster.http.myservername = [serverName]
    mtp.cluster.http.myportno = [portNo]
    ※If there are multiple URLs with the same server name in serverUrl in the cluster settings, It is mandatory to specify ports.

  2. Automatically resolve your server name from the operating environment

    1. Identify the network interface using one of the following methods

    2. When specifying network interface explicitly.
      Specify network interface in system properties
      mtp.cluster.http.myinterfacename = [networkInterfaceName]

    3. Use the first defined network interface (currently available, not LoopBack)
      The server name (FQDN/server name)/IPAddress defined for the specified network interface is determined as its own server name.
      If it is still not found, LoopBack is determined to be its own server name.
      As in ※1., if there are multiple URLs with the same server name in serverUrl in the cluster settings, the port must be specified in the mtp.cluster.http.myportno system property.

certKey

String

Key for authentication during communication. Define the same cluster member.

connectionTimeout

int

ConnectionTimeout value (milliseconds) when establishing http communication. The default value is 30000 (30 seconds).

soTimeout

int

SoTimeout value (milliseconds) when establishing http communication. The default value is 30000 (30 seconds).

proxyHost

String

proxyHost for http communication.

proxyPort

int

proxyPort for http communication.

poolingMaxTotal

int

Maximum number of pools for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifespan of pooled http connections (milliseconds). The default is unlimited.

retryCount

int

Number of retries when message transmission fails. The default value is 3.

retryDelay

int

Retry interval (ms) when message transmission fails. The default value is 3.

JGroupsMessageChannel

Please specify org.iplass.mtp.impl.cluster.channel.jgroups.JGroupsMessageChannel to the class. Message channel for sending and receiving messages via JGroups. The following items can be configured.

Item Value Description

configFilePath

String

Specify the file path to JGroups files. Based on the specified path, the system will search the files in the following order.

  1. Resource Path (Under classpath)

  2. File Path(As a file in OS)

clusterName

String

Specify the JGroups cluster name. The node specifying same cluster will be the member of the corresponding cluster.

InfinispanMessageChannel

Please specify org.iplass.mtp.impl.infinispan.cluster.channel.InfinispanMessageChannel to the class.

This is a message channel using Infinispan to transmit messages. When using InfinispanMessageChannel, the Settings of InfinispanService Is required.

The following items can be configured.

Item Value Description

sync

boolean

Set whether to send messages synchronously.

Example
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

This is a service for database connection. As a database connection implementation, the connection module using DriverManager and the connection module using DataSource are provided as standards.

Interface Name

org.iplass.mtp.impl.rdb.connection.ConnectionFactory

Implementing Class Name

The connection using DriverManager.
org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory
The connection using DataSource
org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory
The connection using DataSource (read replica supported version)
org.iplass.mtp.impl.rdb.connection.ReplicationAwareDataSourceConnectionFactory

Settings of DriverManagerConnectionFactory

Set the database connection information using DriverManager.

Configurable Items
Item Value Description

url

String

URL of the database connection string.

user

String

User name used for login.

password

String

Password of the user connecting.

driver

String

The fully qualified class name of the JDBC driver.

warnLogThreshold

int

Time threshold (milliseconds) to output warning log.
The default value is 0.
If a slow query exceeding the threshold is executed, it will be logged.

warnLogBefore

boolean

Specify whether to output the advance warning log.
Default is true.
Currently, if this flag is true, a prior warning log is logged when an EQL query that does not use INDEX is issued.

countSqlExecution

boolean

Specify whether to count and record how many lines of SQL was executed. The recorded result will be logged along with the log output of the execution unit, such as Action and Web API.
The default value is true.

transactionIsolationLevel

String

Transaction isolation level. The following can be set.

NONE

Corresponding to Connection’s TRANSACTION_NONE

READ_UNCOMMITTED

Corresponding to Connection’s TRANSACTION_READ_UNCOMMITTED

READ_COMMITTED

Corresponding to Connection’s TRANSACTION_READ_COMMITTED

REPEATABLE_READ

Corresponding to Connection’s TRANSACTION_REPEATABLE_READ

SERIALIZABLE

Corresponding to Connection’s TRANSACTION_SERIALIZABLE

clientInfoMap

String, in format of Map

This specifies the value to be set to the clientInfo of Connection in format of Map. The name is the name of the clientInfo, and the value is the key name of the MDC for the value to be set. If thread is specified for value, the thread name is set.

clientInfoMaxLength

int

Specifies the maximum number of characters to be set in the clientInfo of Connection. -1 means no limit.
The default value is -1.

isCreateConnectionIfReadOnlyTransaction

boolean

Specifies whether or not to create a new connection when the transaction to be executed is read-only, instead of using unused connections managed in the framework. If true is specified, a new connection is created.
Default is false.

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

Settings of DataSourceConnectionFactory

Set the connection information of the database using DataSource. The DataSource is acquired in one of the following ways:

  • Obtain via JNDI

  • Create a DataSource instance directly

Configurable Items
Item Value Description

dataSourceName

String

Data Source Name, the default value is java:comp/env/jdbc/defaultDS.
Specify when acquiring data via JNDI.

jndienv.<key Name>

String, Multiple

JNDI’s environment property
Specify when acquiring data via JNDI.

dataSource

javax.sql.DataSource

Specify an class instance of the implementations of javax.sql.DataSource.
Specify this item when you want to create the DataSource instance directly.

warnLogThreshold

int

Time threshold (milliseconds) to output warning log.
The default value is 0
If a slow query exceeding the threshold is executed, it will be logged.

warnLogBefore

boolean

Specify whether to output the warning log in advance.
The default is true.
Currently, if this flag is true, a prior warning log is output when an EQL query that does not use INDEX is issued.

countSqlExecution

boolean

Specify whether to count and record how many lines of SQL was executed. The recorded result will be logged along with the log output of the execution unit, such as Action and Web API.
The default value is true.

transactionIsolationLevel

String

Transaction isolation level. The following can be selected:

NONE

Corresponding to Connection’s TRANSACTION_NONE

READ_UNCOMMITTED

Corresponding to Connection’s TRANSACTION_READ_UNCOMMITTED

READ_COMMITTED

Corresponding to Connection’s TRANSACTION_READ_COMMITTED

REPEATABLE_READ

Corresponding to Connection’s TRANSACTION_REPEATABLE_READ

SERIALIZABLE

Corresponding to Connection’s TRANSACTION_SERIALIZABLE

clientInfoMap

String, in format of Map

This specifies the value to be set to the clientInfo of Connection in format of Map. The name is the name of the clientInfo, and the value is the key name of the MDC for the value to be set. If thread is specified for value, the thread name is set.

clientInfoMaxLength

int

Specifies the maximum number of characters to be set in the clientInfo of Connection. -1 means no limit.
The default value is -1.

isCreateConnectionIfReadOnlyTransaction

boolean

Specifies whether or not to create a new connection when the transaction to be executed is read-only, instead of using unused connections managed in the framework. If true is specified, a new connection is created.
Default is false.

Example(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>
Example(Direct)
<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>

Settings of ReplicationAwareDataSourceConnectionFactory

Set the connection information of the database using DataSource. Set the DataSource for original (read-write) and read-replica (read-only) respectively.

Since the MySQL JDBC driver supports read replicas by itself, it is possible to support read replicas without using the ReplicationAwareDataSourceConnectionFactory. Please refer to the MySQL documentation for details.

The DataSource for the original and read replicas is acquired in one of the following ways:

  • Obtain via JNDI

  • Create a DataSource instance directly

Configurable Items
Item Value Description

dataSourceName

String

Original Data Source Name, the default value is java:comp/env/jdbc/defaultDS.
Specify when acquiring data via JNDI.

replicaDataSourceName

String, Multiple

Data Source Name of the read replica
Specify when acquiring data via JNDI.
If more than one is specified, they will be assigned randomly when the connection is acquired.

jndienv.<key Name>

String, Multiple

JNDI’s environment property
Specify when acquiring data via JNDI.

dataSource

javax.sql.DataSource

Specify an class instance of the implementations of javax.sql.DataSource.
Specify this item when you want to create the DataSource instance directly.

replicaDataSource

javax.sql.DataSource, Multiple

Specify an class instance of the implementations of javax.sql.DataSource.
Specify this item when you want to create the DataSource instance of the read replica directly.
If more than one is specified, they will be assigned randomly when the connection is acquired.

warnLogThreshold

int

Time threshold (milliseconds) to output warning log.
The default value is 0
If a slow query exceeding the threshold is executed, it will be logged.

warnLogBefore

boolean

Specify whether to output the warning log in advance.
The default is true.
Currently, if this flag is true, a prior warning log is output when an EQL query that does not use INDEX is issued.

countSqlExecution

boolean

Specify whether to count and record how many lines of SQL was executed. The recorded result will be logged along with the log output of the execution unit, such as Action and Web API.
The default value is true.

transactionIsolationLevel

String

Transaction isolation level. The following can be selected:

NONE

Corresponding to Connection’s TRANSACTION_NONE

READ_UNCOMMITTED

Corresponding to Connection’s TRANSACTION_READ_UNCOMMITTED

READ_COMMITTED

Corresponding to Connection’s TRANSACTION_READ_COMMITTED

REPEATABLE_READ

Corresponding to Connection’s TRANSACTION_REPEATABLE_READ

SERIALIZABLE

Corresponding to Connection’s TRANSACTION_SERIALIZABLE

clientInfoMap

String, in format of Map

This specifies the value to be set to the clientInfo of Connection in format of Map. The name is the name of the clientInfo, and the value is the key name of the MDC for the value to be set. If thread is specified for value, the thread name is set.

clientInfoMaxLength

int

Specifies the maximum number of characters to be set in the clientInfo of Connection. -1 means no limit.
The default value is -1.

isCreateConnectionIfReadOnlyTransaction

boolean

Specifies whether or not to create a new connection when the transaction to be executed is read-only, instead of using unused connections managed in the framework. If true is specified, a new connection is created.
Default is true.

Example(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>
Example(Direct)
<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

This service manages CSV uploads

Interface Name

org.iplass.mtp.impl.csv.CsvUploadService

Implementing Class

org.iplass.mtp.impl.csv.CsvUploadService

The settings of CsvUploadService

CsvUploadService can be configured with the following items.

Configurable Items
Item Value Description

showErrorLimitCount

int

Maximum number of CSV upload errors to be displayed. If -1 is specified, there is no limit.(all error message will be printed)

defaultUpdateTargetVersionForNoneVersionedEntity

TargetVersion

Default TargetVersion when updating a non-version controlled Entity, default value is CURRENT_VALID.

mustOrderByWithLimit

boolean

Sets whether OrderBy is always specified when downloading CSV in upload format, if a maximum number limit is specified. Default value is false.

If you are using SQLServer, specify true. In the case of SQLServer, the following conditions will result in a situation where data cannot be retrieved, but setting this value to true will retrieve the data.

  • Limiting the number of downloads.

  • The specified search condition contains conditions for multiple References.

Example
<service>
    <interface>org.iplass.mtp.impl.csv.CsvUploadService</interface>
    <class>org.iplass.mtp.impl.csv.CsvUploadService</class>
    <!-- Maximum number of CSV upload errors to be displayed(-1 means unlimited)  -->
    <property name="showErrorLimitCount" value="100"/>

    <!--
     Default TargetVersion when updating a non-version controlled Entity,
     default value is CURRENT_VALID.
    -->
    <property name="defaultUpdateTargetVersionForNoneVersionedEntity" value="SPECIFIC"/>

    <!--
        When Limit is specified when downloading CSV, is OrderBy always specified?
        For SQLServer, specify true.
    -->
    <property name="mustOrderByWithLimit" value="false"/>
</service>

3.19. CubeService

This service manages Cube definitions (metadata).

Interface Name

org.iplass.mtp.impl.aggregation.cube.CubeService

Implementing Class Name

org.iplass.mtp.impl.aggregation.cube.CubeService

Settings of CubeService

CubeService can be configured with the item below.

Configurable Items
Item Value Description

enablePhysicalResourceLoading

boolean

Specify whether to allow access to physical resources such as files and JDBC. The default value is false.

useDataCompression

boolean

Specify whether to compress the expanded data in memory. The default value is true.

decompressDataReferenceType

String

When useDataCompression is enabled, this item will specify how the data will be retained. The available choices are SOFT and WEAK. The default vale is SOFT.

SOFT

The expanded data will be cached as SoftReference. Comparing to WeakReference, cache can be easily reused. However, for the environment with less affordable memories, the process that will expand large amount of data, such as CSV download, will severely impact the response time performance. It is necessary to adjust the life span of SoftReference via the java VM start up option -XX:SoftRefLRUPolicyMSPerMB.

WEAK

The expanded data will be cached as WeakReference.

useFlyweightListOnBitSetColData

boolean

Specify Whether to store actual data as a List when storing data in BitMap format. If set to true, the aggregate speed will be faster, but the memory usage will increase. The default value is false.

useHashIndexOnListColData

boolean

Specify Whether to generate HashIndex when storing data in ObjectPool format. If set to true, the aggregate speed will be faster, but the memory usage will increase. The default value is false.

hashIndexSegmentSize

int

Set hash segment size when using HashIndex. The set value is automatically corrected to the power of 2. The default value is 16.

maxRowsOfDimension

int

Maximum number of dimensions at the time of aggregation (number of rows that can be returned to Client). The default value is 10000.

maxRowsOfDimensionInternal

int

Maximum number of dimensions when aggregated (in internal processing). The default value is 100000.

transferredRawDataInMemoryThreshold

int

The threshold of the raw data in memory which is transferred from other nodes in a distributed environment when raw data is acquired. If the data exceed the threshold, it will be temporally dropped into a file. The default value is 16384 (16K).

joinBufferSize

int

Buffer size (number of rows) for Cube join. Increasing the load speeds up loading, but increases memory usage. The default value is 1000.

enableDistinctRows

boolean

Whether distinctRow specification is permitted when acquiring row data. The distinct operation consumes memory according to the number of rows to be acquired for duplication detections. The default value is true.

inMemoryRowThresholdOfDistinctRows

int

Maximum number of rows to be processed in memory during distinct processing when acquiring raw data. Swap to file to process more lines (slower). -1 handles everything in memory. 0 handles everything in the file. The default value is 10000.

loadStrategy

LoadStrategy

Processing method when acquiring data load to memory.

useForkJoin

boolean

fork-join framework based code? If you set it to true for distributed execution with multiple nodes, you can expect high speed. The default value is false.

gapFillLimit

int

Maximum number of categories to fill the dimension gap. If there are more categories, the gap will not be filled. The default value is 100.

queryTimeoutOfWaitLoading

long

Timeout period (ms) to wait for loading from query execution. The default value is 3000.

maxRowsOfDerivedCube

int

Maximum number of rows of raw data when using DerivedCube. Limit the number of rows to process in memory.

innerCubeLoadTimeoutSec

long

Maximum time (in seconds) to wait when Cube is LOADING during Cube merge and DerivedCube.

innerCubeLoadIntervalSec

int

Interval (in seconds) for checking whether loading is completed when the reference Cube is in LOADING states during Cube merge and DerivedCube.

rawDataDimensionResolverBufferSize

int

Buffer size for displaying Reference and SelectValue labels. The default value is 100.

listaggDefaultSeparator

String

Default separator when using the LISTAGG aggregate function. The default value is , .

LoadStrategy

Please specify the implementing class of org.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.LoadStrategy.

The following LoadStrategy is provided as standard.

AllPartitionDirectLoadStrategy

Please specify org.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.AllPartitionDirectLoadStrategy to the class.

This is a method to read data directly into memory. There is no configurable items.
It consumes a lot of memory but is fast.

PerPartitionLoadStrategy

Please specify org.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.PerPartitionLoadStrategy to the class.

This method reads data in units of partitions. There is no configurable items.
When the partition type is MOD, LIST, or when the Cube reading source is CSV and the data is divided to partition unit in advance, then with this option, high-speed loading can be expected while suppressing memory consumption.

SaveMemoryLoadStrategy

Please specify org.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.SaveMemoryLoadStrategy to the class.

This is a method of loading data while minimizing memory consumption when swapping data to a file. There is no configurable items.

Example
<service>
    <interface>org.iplass.mtp.impl.aggregation.cube.CubeService</interface>
    <class>org.iplass.mtp.impl.aggregation.cube.CubeService</class>
    <!-- Whether to allow access to physical resources such as files and JDBC -->
    <property name="enablePhysicalResourceLoading" value="false"/>
    <!-- Whether to compress the data expanded in the memory (if you do not compress, the memory usage will increase, but the aggregation speed will not slow down slightly at the first aggregation after GC) -->
    <property name="useDataCompression" value="true"/>
    <!-- Whether to store actual data as a List when storing data in BitMap format. (If set to true, the aggregate speed will be faster, but the memory usage will increase) -->
    <property name="useFlyweightListOnBitSetColData" value="false"/>
    <!-- Whether to generate HashIndex when storing data in ObjectPool format. (If set to true, the aggregate speed will be faster, but the memory usage will increase) -->
    <property name="useHashIndexOnListColData" value="false"/>
    <!-- Hash segment size when using HashIndex. (Automatically corrected to a power of 2) -->
    <property name="hashIndexSegmentSize" value="16"/>
    <!-- Maximum number of dimensions during aggregation (number of rows that can be returned to the Client) -->
    <property name="maxRowsOfDimension" value="10000"/>
    <!-- Maximum number of dimensions when counting (in internal processing) -->
    <property name="maxRowsOfDimensionInternal" value="100000"/>
    <!-- The threshold of handling the real data transferred from other nodes in a distributed environment in memory. If the threshold was exceeded, the data will be temporally dropped into a file. The default value is 16K. -->
    <property name="transferredRawDataInMemoryThreshold" value="16384"/>
    <!-- Buffer size (number of rows) for Cube join. Increasing the load speeds, but also increases memory usage. -->
    <property name="joinBufferSize" value="1000"/>
    <!-- Whether to allow distinctRow specification when acquiring row data. The distinct operation consumes memory according to the number of rows to be acquired because of duplication detection.-->
    <property name="enableDistinctRows" value="true"/>
    <!-- Maximum number of rows to be processed in memory during distinct processing when acquiring raw data. Swap to file when processing more lines (slower). -1 handles everything in memory. 0 handles everything with files. -->
    <property name="inMemoryRowThresholdOfDistinctRows" value="10000"/>
    <!-- Processing method when acquiring data to memory
            SaveMemoryLoadStrategy:         A method of loading data and swapping data to a file while minimizing memory consumption.
            AllPartitionDirectLoadStrategy: A method for loading directly into memory. It consumes a lot of memory but is fast.
            PerPartitionLoadStrategy:       A method for loading data in units of partitions.
                If the partition type is MOD, LIST, or the Cube import source is CSV,
                or if the data is divided in advance in units of partitions, specifying this can grant a high speed loading with suppressed memory consumption.

            ※They are all from the package of 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"/>
    <!-- Whether to process with fork-join framework based code. If true is set for distributed execution with multiple nodes, higher speed can be expected. -->
    <property name="useForkJoin" value="false"/>
    <!-- Maximum number of categories when filling a dimension gap. If the category is higher than this, do not fill the gap -->
    <property name="gapFillLimit" value="100"/>
    <!-- Maximum number of rows of raw data when using DerivedCube. Limit the number of rows to process in memory. -->
    <property name="maxRowsOfDerivedCube" value="10000"/>
    <!-- The maximum waiting time (in seconds) when the Cube of the reference destination is LOADING during Cube merge and DerivedCube. -->
    <property name="innerCubeLoadTimeoutSec" value="1800"/>
    <!--Interval (in seconds) for checking whether loading is completed when the reference Cube is LOADING during Cube merge and DerivedCube. -->
    <property name="innerCubeLoadIntervalSec" value="10"/>
</service>

3.20. CubeTemplateService

This service manages custom measure templates for Cube aggregation.

Interface Name

org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService

Implementing Class

org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateService

The settings of CubeTemplateService

CubeTemplateService can be configured with the following items.

Configurable Items
Item Value Description

templateSettings

CubeTemplateSetting, Multiple

The settings of template using the custom measures.

CubeTemplateSetting

Please specify org.iplass.mtp.impl.aggregation.unit.cube.CubeTemplateSetting to the class.

For the templates of custom measure, the following items can be configured.

Item Value Description

displayLabel

String

Display Label.

valueExpressionTemplate

String

The Expression of the custom measure. The ${1} embedded in the expression will be replaced with the cube item name.

locale

String

Locale

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

This is a standard asynchronous execution service that uses RDB queues.
AsyncTaskService definition for asynchronous execution.

Interface Name

org.iplass.mtp.impl.async.AsyncTaskService

Implementing Class Name

org.iplass.mtp.impl.async.rdb.RdbAsyncTaskService

Settings of RdbAsyncTaskService

RdbAsyncTaskService can be configured with the following items.

Configurable Items
Item Value Description

defaultGetResultTimeoutMillis

long

Standard result acquisition timeout in milliseconds. The default value is 60000 (1 minitus).

initialGetResultIntervalMillis

long

Interval time (milliseconds) for initial result acquisition. The default value is 100.

Example
<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. EntityCsvImportService

The service manages CSV import of Entity.

Interface Name

org.iplass.mtp.impl.csv.EntityCsvImportService

Implementing Class

org.iplass.mtp.impl.csv.EntityCsvImportService

The settings of EntityCsvImportService

EntityCsvImportService can be configured with the following items.

Configurable Items
Item Value Description

canCreateUserWithSpecificPassword

boolean

Allow password specification on Insert of User entity? Default value is false .

Example
<service>
    <interface>org.iplass.mtp.impl.csv.EntityCsvImportService</interface>

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

3.23. EntityService

The service manages the Entity.

Interface Name

org.iplass.mtp.impl.entity.EntityService

Implementing Class Name

org.iplass.mtp.impl.entity.EntityService

Settings of EntityService

We will configure about the entity handler.

Configurable Items
Item Value Description

limitOfReferences

int

Upper limit of entity references. The default value is 1000.

oidValidationPattern

String

Regular expression to limit the character strings that can be set in oid. The default value is ^[0-9a-zA-Z_\-]+$ .

purgeTargetDate

int

Number of days to wait to clean the trash data. Data that has been in the Recycle bin for the period more than the specified value will be physically removed.

interceptor

EntityInterceptor, Multiple

Specify the processes to insert before the operations on entities.

AdditionalStoreMaintainer

AdditionalStoreMaintainer, Multiple

Set the process to maintain the storage when deleting or defragmenting data.

EntityInterceptor

Please specify the implementing class of org.iplass.mtp.entity.interceptor.EntityInterceptor.

AdditionalStoreMaintainer

Please specify the implementing class of org.iplass.mtp.impl.entity.AdditionalStoreMaintainer.

Example
<service>
    <interface>org.iplass.mtp.impl.entity.EntityService</interface>
    <property name="limitOfReferences" value="1000" />
    <property name="oidValidationPattern" value="^[0-9a-zA-Z_\-]+$" />

    <!--
        This is the date for the cleaner to wait before cleaning the trash data. Please specify the number in unit of days.
        In the following cases, the date 30 days before the execution will be the target for the cleaner.
        Data deleted to the Recycle Bin prior to the date of the cleaner is physically deleted.
    <property name="purgeTargetDate" value="30" />
    -->

    <property name="interceptor" class="org.iplass.mtp.impl.entity.contentcache.ContentCacheInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.auth.EntityAuthInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.available.EntityReadOnlyInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.auditlog.AuditLogInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.listener.EntityEventListenerInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.l10n.EntityLocalizationInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.cache.EntityCacheInterceptor" />
    <property name="interceptor" class="org.iplass.mtp.impl.entity.fulltextsearch.FulltextSearchInterceptor" />

    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.entity.auditlog.AuditLogStoreMaintainer" />
    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.entity.fulltextsearch.FulltextSearchStoreMaintainer" />
    <property name="additionalStoreMaintainer" class="org.iplass.mtp.impl.lob.LobStoreMaintainer" />

    <property name="extendPropertyAdapterFactory" class="org.iplass.mtp.impl.entity.EnterpriseExtendPropertyAdapterFactory" />

</service>

3.24. EntityPortingService

Services related to Entity data tools.

Interface Name

org.iplass.mtp.impl.tools.entityport.EntityPortingService

Implementing Class

org.iplass.mtp.impl.tools.entityport.EntityPortingService

The settings of EntityPortingService

EntityPortingService can be configured with the following items.

Configurable Items
Item Value Description

uploadableCsvDownloadLoadSize

int

Size of batch loads when the Entity property contains multiplicity multiple references. The default value is 1 .

canCreateUserWithSpecificPassword

boolean

Allow password specification on Insert of User entity? Default value is false .

This setting item will be removed in future versions.Please use canCreateUserWithSpecificPassword in EntityCsvImportService.
Example
<service>
    <interface>org.iplass.mtp.impl.tools.entityport.EntityPortingService</interface>

    <property name="uploadableCsvDownloadLoadSize" value="100" />
</service>

3.25. EntityListingService

This service manages the definition (metadata) of EntityListing.

Interface Name

org.iplass.mtp.impl.view.entitylisting.EntityListingService

Implementing Class

org.iplass.mtp.impl.view.entitylisting.EntityListingService

The settings of EntityListingService

EntityListingService can be configured with the following items.

Configurable Items
Item Value Description

searchResultCacheLimit

int

internal cache size (number of records) for user name search results. The default value is 300.

useSubQueryIfPossible

boolean

Whether to use subqueries as much as possible when using filter on saved lists. The default value is false.

Example
<service>
    <interface>org.iplass.mtp.impl.view.entitylisting.EntityListingService</interface>
    <class>org.iplass.mtp.impl.view.entitylisting.EntityListingService</class>
    <!-- Internal cache size of the searches of User Name -->
    <property name="searchResultCacheLimit" value="300" />
    <!-- Whether to use subqueries as much as possible when using filter on saved lists. -->
    <property name="useSubQueryIfPossible" value="false" />
</service>

3.26. EntityWebApiService

This service manages EntityWebApi.

Interface Name

org.iplass.mtp.impl.webapi.EntityWebApiService

Implementing Class

org.iplass.mtp.impl.webapi.EntityWebApiService

The settings of EntityWebApiService

EntityWebApiService can be configured with the following items.

Configurable Items
Item Value Description

maxLimit

int

Maximum number of EntityWebApi acquisitions.

If tabular=ture is specified in the Web API parameter, or if Accept is text/csv , this restriction does not apply.

throwSearchResultLimitExceededException

boolean

Specify true if you want to throw an exception when the number of acquisitions exceeds maxLimit. The default value is false.

csvDateTimeFormat

String

Date format of the DateTime type EntityData, when returning the result of EntityWebApi Query searches in CSV format. If not specified, the runtime LocaleFormat will be used.

csvDateFormat

String

Date format of the Date type EntityData, when returning the result of EntityWebApi Query searches in CSV format. If not specified, the runtime LocaleFormat will be used.

csvTimeFormat

String

Date format of the Time type EntityData, when returning the result of EntityWebApi Query searches in CSV format. If not specified, the runtime LocaleFormat will be used.

loadWithMappedByReference

boolean

The default value of whether to acquire the referenced (mapped by) property in Load of EntityWebApi. The default value is false.

listWithMappedByReference

boolean

The default value of whether to acquire the referenced (mapped by) property in Query of EntityWebApi. The default value is false.

csvListWithMappedByReference

boolean

The default value of whether to acquire the referenced (mapped by) property in Query of EntityWebApi that returned in CSV format. If not set, the setting value of listWithMappedByReference will be applied.

Setting flag for backward compatibility. This setting flag will be deleted in a future version.

enableNativeHint

boolean

Enable/disable Native Hint specification when calling EntityWebApi. Default value is false.

permitRolesToSpecifyOptions

String, Multiple

Set a role that allows you to specify control options when calling EntityWebApi. For Admin users, control options are available even if no role is set.

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

The service is for full-text searches. As a full-text search implementation, full-text search using Lucene, Elasticsearch, OpenSearch and Solr are provided.

Interface Name

org.iplass.mtp.impl.fulltextsearch.FulltextSearchService

Implementing Class Name

Full-text Search Using Lucene
org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService
Full-text Search Using Elasticsearch
org.iplass.mtp.impl.fulltextsearch.elasticsearch.ElasticsearchFulltextSearchService
Full-text Search Using OpenSearch
org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService
(deprecated) Full-text Search Using Solr
org.iplass.mtp.impl.fulltextsearch.FulltextSearchSolrService

Settings of FulltextSearchService

The followings are the common settings of full-text searches.

Configurable Items
Item Value Description

useFulltextSearch

boolean

Set whether to use full-text search. The default value is false.

maxRows

int

Maximum number of full-text search results to be shown. The default value is 1000.

throwExceptionWhenOverLimit

boolean

Define what to do when reaching the maxRows limit. If true, the message indicating that the system retrieve more than the limits will be shown, and the search result will not be presented. If false, the message indicating that the system retrieved more than the limits will be shown, but the search result will still be presented. The default value is true.

redundantTimeMinutes

long

Last Index Update time -redundantTimeMinutes Index processing is performed on the data later on. The default value is 10.

binaryParser

BinaryReferenceParser, Multiple

Parser for BinaryReference analysis.

binaryParseLimitLength

int

Maximum number of characters that can be parsed by BinaryReference.

scorePropertyName

String

Set the property name for storing the score value in the Entity of the search result. The default value is score.

includeMappedByReferenceIfNoPropertySpecified

boolean

Set whether to get the value of the referenced entity in the Entity of the search result. The default value is false.

BinaryReferenceParser

Use Apache Tika to analyze the contents of BinaryReference.

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.parser.BinaryReferenceParser.

The following BinaryReferenceParser is provided as standard.

The common configuration items for the standard BinaryReferenceParser are as follows (excluding BinaryNameTypeParser).

Common Configurable Items
Item Value Description

continuableExceptions

String, Multiple

When parsing binary information, set the name of the exception class you want to continue processing even if an exception occurs.
The value is the fully qualified class name of the exception to be raised when parsing.

BinaryAutoDetectParser

All types are analyzed using Tika’s AutoDetectParser. However, if there is no dependent library required for analysis, it will be skipped.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryAutoDetectParser to the class. Only common configurable items can be changed.

BinaryHtmlParser

Parser for HTML. Analyze using Tika’s HtmlParser.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser to the class. Only common configurable items can be changed.

BinaryOfficeParser

OfficeDocument(before 2003) Parser. Analyze using Tika’s OfficeParser.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser to the class. Only common configurable items can be changed.

BinaryOOXMLParser

OfficeDocument(OOXML format) Parser。 Analyze using Tika’s OOXMLParser.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser to the class. Only common configurable items can be changed.

BinaryPDFParser

PDF Parser。 Analyze using Tika’s PDFParser.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser to the class. Only common configurable items can be changed.

BinaryTextParser

PlainText Parser。 Analyze using Tika’s TXTParser.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser to the class. Only common configurable items can be changed.

BinaryXMLParser

XML Parser。 Analyze using Tika’s XMLParser.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser to the class. Only common configurable items can be changed.

BinaryNameTypeParser

Returns name and type for all binary files.

Please specify org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser to the class. There is no configurable items.

Settings of LuceneFulltextSearchService

This is the setting about the full-text search features provided by Lucene.

Configurable Items
Item Value Description

indexWriterSetting

IndexWriterSetting, Optional

IndexWriter setting.

directory

String

Specify the root directory where the Index file will be stored. Under the root directory, an Index file will be created for each tenant and entity under the root directory.

luceneFSDirectory

org.apache.lucene.store.SimpleFSDirectory, org.apache.lucene.store.MMapDirectory, org.apache.lucene.store.NIOFSDirectory

Lucene Directory for storing INDEX files in the file system Implementation class.
The Lucene documentation does not recommend using NIOFSDirectory in a Windows environment.
* If not set, the default FSDirectory determined by Lucene will be used.

luceneFSDirectoryMaxChunkSizeMB

int

maxChunkSize for memory mapping used by org.apache.lucene.store.MMapDirectory class.
If not set, the default value determined by Lucene is used.
* If anything other than org.apache.lucene.store.MMapDirectory is selected, this Settings of value is ignored.

analyzerSetting

AnalyzerSetting, Optional

This is the setting class that initializes the analyzer. If the setting is omitted, JapaneseAnalyzerSetting will be applied.

defaultOperator

Operator

Operator. Possible operators are AND or OR.

searcherAutoRefreshTimeMinutes

int

The time interval (minutes) at which the Lucene IndexSearcher (≒ IndexReader) held by iPLAss is automatically updated.
If the default value is "-1" and a value less than "0" is set, automatic update processing will not be executed.

IndexWriterSetting

Please specify org.iplass.mtp.impl.fulltextsearch.lucene.IndexWriterSetting to the class.

Configurable Items
Item Value Description

ramBufferSizeMB

double

Cache size of memory when creating Index. The default value is 64.0.

commitLimit

int

Commit unit when creating Index. If unspecified, commit all items at once.

mergePolicy

org.apache.lucene.index.MergePolicy

Specify an instance of org.apache.lucene.index.MergePolicy.

infoStream

org.apache.lucene.util.InfoStream

Specify an instance of org.apache.lucene.util.InfoStream. We provides a org.iplass.mtp.impl.fulltextsearch.lucene.LoggingInfoStream to output to the DEBUG log, so you can also use it.

AnalyzerSetting

This is the setting that initializes the analyzer.

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.lucene.IndexWriterSetting.

The following AnalyzerSettings are provided as standard.

SimpleAnalyzerSetting

A simple AnalyzerSetting where you can specify the Analyzer class name.

Please specify org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting to the class.

Configurable Items
Item Value Description

className

String

Specify the implementing class of org.apache.lucene.analysis.Analyzer.

JapaneseAnalyzerSetting

An AnalyzerSetting to initialize the JapaneseAnalyzer.

Please specify org.iplass.mtp.impl.fulltextsearch.lucene.JapaneseAnalyzerSetting to the class.

Configurable Items
Item Value Description

className

String

Specify the implementing class of org.apache.lucene.analysis.Analyzer. The default value is org.apache.lucene.analysis.ja.JapaneseAnalyzer.

mode

org.apache.lucene.analysis.ja.JapaneseTokenizer.Mode

Tokenization mode. Please refer to org.apache.lucene.analysis.ja.JapaneseTokenizer.Mode.
If not set, the default value SEARCH is applied.

userDictionary

String

User-defined dictionary. Must be placed on the classpath.
If not set, it will be the same as if not using a user-defined dictionary.

stopwords

String

Stopword definition file. Must be placed on the classpath.
If no set, the definition file in lucene-analyzers-kuromoji-XXX.jar will be used instead.

stoptags

String

Stop tag definition file. Must be placed on the classpath.
If not set, the definition file in lucene-analyzers-kuromoji-XXX.jar will be used instead.

PerEntityAnalyzerSetting

AnalyzerSetting for utilizing different analyzers per entity definition.

Please specify org.iplass.mtp.impl.fulltextsearch.lucene.PerEntityAnalyzerSetting to the class.

Configurable Items
Item Value Description

settingsPerEntity

AnalyzerSetting, in format of Map

Specify the name of the entity definition as key and set the AnalyzerSetting instance as value.

defaultSetting

AnalyzerSetting

Specify the Analyzer to be applied by default. Applies to Entity definitions that are not specified in settingsPerEntity.

Settings of ElasticsearchFulltextSearchService

This is the setting about the full-text search features provided by Elasticsearch.

Configurable Items
Item Value Description

restClientFactory

RestClientFactory

RestClientFactory setting.

analysisFactory

AnalysisFactory

AnalysisFactory setting.

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerProperty setting.

analyzerPropertyPerEntity

AnalyzerProperty, in format of Map

Specify the name of the entity definition as key and set the AnalyzerProperty instance as value.

defaultOperator

Operator

Operator. Possible operators are AND or OR.

RestClientFactory

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.elasticsearch.RestClientFactory.

The following RestClientFactory are provided as standard.

DefaultRestClientFactory

Please specify org.iplass.mtp.impl.fulltextsearch.elasticsearch.DefaultRestClientFactory to the class.

Configurable Items
Item Value Description

elasticsearchUrl

String, Multiple

Elasticsearch server URL

headers

String, in format of Map

Header that can be set when making a request, and can be specified in format of Map.

connectionTimeout

int

ConnectionTimeout value (milliseconds) when establishing http communication. The default value is -1.

soTimeout

int

SoTimeout value (milliseconds) when establishing http communication. The default value is -1.

proxyHost

String

proxyHost for http communication.

proxyPort

int

proxyPort for http communication.

userName

String

userName used for BASIC authentication

password

String

password used for BASIC authentication

AnalysisFactory

This factory class is used when you want to define a custom Analyzer, etc.

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalysisFactory.

The following AnalysisFactory are provided as standard.

DefaultAnalysisFactory

Please specify org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.DefaultAnalysisFactory to the class.

Configurable Items
Item Value Description

analyzer

AnalyzerFactory, in format of Map

Specify the definition name of the entity definition as key and set the AnalyzerFactory instance as value.

charFilter

CharFilterFactory, in format of Map

Specify the definition name of the entity definition as key and set the CharFilterFactory instance as value.

filter

TokenFilterFactory, in format of Map

Specify the definition name of the entity definition as key and set the TokenFilterFactory instance as value.

tokenizer

TokenizerFactory, in format of Map

Specify the definition name of the entity definition as key and set the TokenizerFactory instance as value.

AnalyzerFactory

This factory class is used when you want to define a custom Analyzer. Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalyzerFactory.

The following AnalysisFactory are provided as standard.

CustomAnalyzerFactory

It can define Analyzer by combining charFilter, tokenizer and filter. Please specify org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.CustomAnalyzerFactory to the class.

Configurable Items
Item Value Description

charFilter

String, Multiple

definition names of charFilter

filter

String, Multiple

definition names of filter

tokenizer

String, required

definition name of tokenizer

KuromojiAnalyzerFactory

It can define a customized KuromojiAnalyzer. Please specify org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.analyzer.KuromojiAnalyzerFactory to the class.

Configurable Items
Item Value Description

mode

co.elastic.clients.elasticsearch._types.analysis.KuromojiTokenizationMode

The tokenization mode

userDictionary

String

user_dictionary

CharFilterFactory

This factory class is used when you want to define a custom CharFilter. Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.AnalyzerFactory.

TokenFilterFactory

This factory class is used when you want to define a custom TokenFilter. Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.filter.TokenFilterFactory.

TokenizerFactory

This factory class is used when you want to define a custom Tokenizer. Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.elasticsearch.analysis.tokenizer.TokenizerFactory.

AnalyzerProperty

It is used when specifying Analyzer. Please specify org.iplass.mtp.impl.fulltextsearch.elasticsearch.mappings.AnalyzerProperty to the class.

Configurable Items
Item Value Description

analyzer

String

Analyzer name to use by default

searchAnalyzer

String

Analyzer name used for search

searchQuoteAnalyzer

String

Analyzer name used for searches using phrases

Settings of OpenSearchFulltextSearchService

This is the setting about the full-text search features provided by OpenSearch.

Configurable Items
Item Value Description

restClientFactory

RestClientFactory

RestClientFactory setting.

analysisFactory

AnalysisFactory

AnalysisFactory setting.

defaultAnalyzerProperty

AnalyzerProperty

AnalyzerProperty setting.

analyzerPropertyPerEntity

AnalyzerProperty, in format of Map

Specify the name of the entity definition as key and set the AnalyzerProperty instance as value.

defaultOperator

Operator

Operator. Possible operators are AND or OR.

RestClientFactory

Please specify the implementing class of org.iplass.mtp.impl.aws.fulltextsearch.opensearch.RestClientFactory.

The following RestClientFactory are provided as standard.

DefaultRestClientFactory

Please specify org.iplass.mtp.impl.aws.fulltextsearch.opensearch.DefaultRestClientFactory to the class.

Configurable Items
Item Value Description

openSearchUrl

String, Multiple

OpenSearch server URL

headers

String, in format of Map

Header that can be set when making a request, and can be specified in format of Map.

connectionTimeout

int

ConnectionTimeout value (milliseconds) when establishing http communication. The default value is -1.

soTimeout

int

SoTimeout value (milliseconds) when establishing http communication. The default value is -1.

proxyHost

String

proxyHost for http communication.

proxyPort

int

proxyPort for http communication.

userName

String

userName used for BASIC authentication

password

String

password used for BASIC authentication

httpRequestInterceptorFactory

HttpRequestInterceptorFactory

HttpRequestInterceptorFactory setting. Applies when userName and password values are not set.

HttpRequestInterceptorFactory

The factory class that generates org.apache.http.HttpRequestInterceptor. Please specify the implementing class of org.iplass.mtp.impl.aws.HttpRequestInterceptor.

The following HttpRequestInterceptorFactory are provided as standard.

AWSRequestSigningApacheInterceptorFactory

The factory class that generates com.amazonaws.http.AWSRequestSigningApacheInterceptor. Use when you want to sign requests using IAM credentials instead of BASIC authentication.

For AWSCredentialsProvider used in AWSRequestSigningApacheInterceptor, AWSStaticCredentialsProvider is applied when accessKeyId and secretKey of AWSSetting are set, and DefaultAWSCredentialsProviderChain is applied when not set.

Please specify org.iplass.mtp.impl.aws.AWSRequestSigningApacheInterceptorFactory to the class.

Configurable Items
Item Value Description

serviceName

String

The service name.

region

String

The region name.

AnalysisFactory

This factory class is used when you want to define a custom Analyzer, etc.

Please specify the implementing class of org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalysisFactory.

The following AnalysisFactory are provided as standard.

DefaultAnalysisFactory

Please specify org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory to the class.

Configurable Items
Item Value Description

analyzer

AnalyzerFactory, in format of Map

Specify the definition name of the entity definition as key and set the AnalyzerFactory instance as value.

charFilter

CharFilterFactory, in format of Map

Specify the definition name of the entity definition as key and set the CharFilterFactory instance as value.

filter

TokenFilterFactory, in format of Map

Specify the definition name of the entity definition as key and set the TokenFilterFactory instance as value.

tokenizer

TokenizerFactory, in format of Map

Specify the definition name of the entity definition as key and set the TokenizerFactory instance as value.

AnalyzerFactory

This factory class is used when you want to define a custom Analyzer. Please specify the implementing class of org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalyzerFactory.

The following AnalysisFactory are provided as standard.

CustomAnalyzerFactory

It can define Analyzer by combining charFilter, tokenizer and filter. Please specify org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.CustomAnalyzerFactory to the class.

Configurable Items
Item Value Description

charFilter

String, Multiple

definition names of charFilter

filter

String, Multiple

definition names of filter

tokenizer

String, required

definition name of tokenizer

KuromojiAnalyzerFactory

It can define a customized KuromojiAnalyzer. Please specify org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory to the class.

Configurable Items
Item Value Description

mode

co.elastic.clients.opensearch._types.analysis.KuromojiTokenizationMode

The tokenization mode

userDictionary

String

user_dictionary

CharFilterFactory

This factory class is used when you want to define a custom CharFilter. Please specify the implementing class of org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.AnalyzerFactory.

TokenFilterFactory

This factory class is used when you want to define a custom TokenFilter. Please specify the implementing class of org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.filter.TokenFilterFactory.

TokenizerFactory

This factory class is used when you want to define a custom Tokenizer. Please specify the implementing class of org.iplass.mtp.impl.aws.fulltextsearch.opensearch.analysis.tokenizer.TokenizerFactory.

AnalyzerProperty

It is used when specifying Analyzer. Please specify org.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerProperty to the class.

Configurable Items
Item Value Description

analyzer

String

Analyzer name to use by default

searchAnalyzer

String

Analyzer name used for search

searchQuoteAnalyzer

String

Analyzer name used for searches using phrases

Settings of FulltextSearchSolrService

FulltextSearchSolrService will be removed in the future. It is recommended to use ElasticsearchFulltextSearchService or OpenSearchFulltextSearchService is recommended.

Configurable items for full text search using Solr are listed below.

Configurable Items
Item Value Description

solrUrl

String, Multiple

URL of the prepared solr server.

solrMasterUrl

String

URL of the master server when using the replication function.

highlightPreTag

String

Start tag for highlights.

highlightPostTag

String

The end tag for the highlight.

Example (when using 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"/>

    <!--
        Example of a configuration that uses CJKAnalyzer for some.SampleEntity
        and some.AnotherSampleEntity, and otherwise uses JapaneseAnalyzer.
    -->
    <property name="analyzerSetting" class="org.iplass.mtp.impl.fulltextsearch.lucene.PerEntityAnalyzerSetting">
        <property name="defaultSetting" class="org.iplass.mtp.impl.fulltextsearch.lucene.JapaneseAnalyzerSetting">
            <property name="mode" value="SEARCH" />
            <property name="userDictionary" value="/lucene/userdict.txt" />
            <property name="stopwords" value="/lucene/stopwords.txt" />
            <property name="stoptags" value="/lucene/stoptags.txt" />
        </property>
        <property name="settingsPerEntity">
            <property name="some.SampleEntity" class="org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting">
                <property name="className" value="org.apache.lucene.analysis.cjk.CJKAnalyzer"/>
            </property>
            <property name="some.AnotherSampleEntity" class="org.iplass.mtp.impl.fulltextsearch.lucene.SimpleAnalyzerSetting">
                <property name="className" value="org.apache.lucene.analysis.cjk.CJKAnalyzer"/>
            </property>
        </property>
    </property>

    <property name="defaultOperator" value="AND" />
    <property name="indexWriterCommitLimit" value="-1"/>

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
Example (when using 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>

    <!--
    Example of a configuration that uses my_kuromoji for testEntity, and otherwise uses kuromoji.
    -->
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.fulltextsearch.elasticsearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>

    <property name="redundantTimeMinutes" value="10"/>
    <property name="defaultOperator" value="AND" />

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
Example (when using 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>

    <!--
    Example of a configuration that uses my_kuromoji for testEntity, and otherwise uses kuromoji.
    -->
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.aws.fulltextsearch.opensearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>

    <property name="defaultOperator" value="AND" />

    <property name="binaryParseLimitLength" value="100000"/>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

</service>
Example
<!--
    ■Full-Text Search Service

    useFulltextSearch:              To use full-text search, please set it to true.
    maxRows:                        Set the maximum number of full-text search results.
    throwExceptionWhenOverLimit:    Switches the behavior when the number of records exceeding max limit.
                                    true  -> Displays the message about the excessiveness of the records, and the system will not display the search results.
                                    false -> Displays the message about the excessiveness of the records, and the system will display the search results.
    indexWriterRAMBufferSizeMB: Set the memory cache size when creating an index.
    redundantTimeMinutes:           Index processing is performed on the data after "Last index update date and time-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"/>

    <!-- Set the max character limit for BinaryReference Parser -->
    <property name="binaryParseLimitLength" value="100000"/>

    <!--
        The configuration of BinaryReference Parser. The implementation of
        org.iplass.mtp.impl.fulltextsearch.parser.BinaryReferenceParser
        can be specified as the parser.
        Check Parser corresponding to the type of BinaryReference from the top.
     -->

    <!-- PDF Parser. Analyze with Tika's PDFParser. -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryPDFParser" />
    <!-- OfficeDocument(OOXML format) Parser. Analyze with Tika's OOXMLParser. -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOOXMLParser" />
    <!-- OfficeDocument(before 2003) Parser. Analyze with Tika's OfficeParser. -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryOfficeParser">
        <!-- RTF file parsing exceptions continue to be processed -->
        <property name="continuableExceptions" value="org.apache.poi.poifs.filesystem.NotOLE2FileException" />
    </property>
    <!-- HTML Parser. Analyze with Tika's HtmlParser. -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryHtmlParser" />
    <!-- PlainText Parser. Analyze with Tika's TXTParser. -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryTextParser" />
    <!-- XML Parser. Analyze with Tika's XMLParser. -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryXMLParser" />

    <!-- Use Tika's AutoDetectParser to analyze all types.
        However, if there is no dependency library required for analysis, it will be skipped -->
    <!--
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryAutoDetectParser" />
    -->

    <!-- Return only name and type for all binary files -->
    <property name="binaryParser" class="org.iplass.mtp.impl.fulltextsearch.parser.BinaryNameTypeParser" />

    <!-- using solr -->
    <!--
    <class>org.iplass.mtp.impl.fulltextsearch.FulltextSearchSolrService</class>
    <property name="solrUrl" value="http://ADDRESS:PORT/solr/coreName/" />
     -->

    <!-- using 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 initialization
    <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"/>

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

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

This service manage the settings of the overall performance of the general pages(GEM).

Interface Name

org.iplass.gem.GemConfigService

Implementing Class

For Community Edition
org.iplass.gem.GemConfigService
For Enterprise Edition
org.iplass.gem.EnterpriseGemConfigService

The settings of GemConfigService

The performance of the community edition can be configured with the following items.

Configurable Items
Item Value Description

loadWithReference

boolean

This option defines whether to load the referenced property, when loading the data depending on the parameter of the requests. The default value is false.

formatNumberWithComma

boolean

Whether to format numeric property values ​​with commas in the detail display screen. The default value is true.

csvDownloadMaxCount

int

Maximum number of CSV downloads. The default value is 65535.

uploadableCsvDownloadLoadSize

int

Size of Entity batch loads containing multiplicity multiple references when downloading CSV in Upload format. The default value is 1.

csvDownloadCharacterCode

String, Multiple

CSV download character code. The default value is UTF-8.

csvDownloadQuoteAll

boolean

Set whether to output double quotes when downloading CSV file. The default value is true.

csvDownloadReferenceVersion

boolean

Whether to output the reference items' version in CSV downloads. The default value is true.

uploadableCsvDownloadWithMappedByReference

boolean

Whether to output mapped by reference properties when downloading CSV in Upload format. Default value is false.

csvUploadCommitCount

int

Set the CSV upload commit batch size. The default value is 1000.

csvUploadAsync

boolean

Whether to upload CSV asynchronously. The default value is false. When asynchronous is selected, please set [useQueue] property of RdbQueueService to true.

csvUploadStatusPollingInterval

int

Status polling interval for CSV upload. The default value is 10000 (10 seconds).

searchResultCacheLimit

int

Search internal cache size for obtaining User name when downloading CSV. The default value is 300.

confirmEditSave

boolean

Whether to display a confirmation dialog when saving on the edit screen and bulk update screen. The default value is false.In the case of bulk update that does not use the BulkLayout, a confirmation dialog will be displayed unconditionally.

confirmEditCancel

boolean

Whether to display a confirmation dialog when canceling on the edit screen. The default value is true.

topViewEditCancelBackToTop

boolean

Whether to back to TopView when canceling when transitioning from detail screen to edit screen. The default value is false.(back to the details screen)

Compatible setting up to 3.0.20. In the future, we plan to unify the operation to back to the detail screen.

showSeachCondResetButton

boolean

Whether to show the reset button on the search screen. The default value is true.

searchResultDispRowCount

int

Number of search results to be displayed on the search screen. The default value is 10. It can be overwritten by search results The settings of of individual EntityView definitions.

maxOfDetailSearchItems

int

Maximum number of search items in detail search screen. The default value is 100.

searchInterval

int

Set the search interval to prevent redundant requests. If 0 is set, it will be infinite.(cannot click the search button until the result was retrieved and presented) The default value is 60000 (1 minute).

csvDownloadInterval

int

Set the CSV download interval to prevent redundant requests. If 0 is set, it will be infinite.(cannot click the download button until the result was retrieved and presented) The default value is 60000 (1 minute).

csvDownloadWithFooter

boolean

Whether to output a footer in CSV of general search. The default value is false.

csvDownloadFooter

String

Set CSV download footer wording for general search.

useDisplayLabelItemInSearch

boolean

Whether to use a display label item in search. Use the item that specified as Property used as display label in ReferencePropertyEditor Setting as a search condition in common search or detail search when useDisplayLabelItemInSearch is true.

Setting flag for backward compatibility. This setting flag will be deleted in a future version.

useDisplayLabelItemInCsvDownload

boolean

Whether to use a display label item in CSV download. Use the item that specified as Property used as display label in ReferencePropertyEditor Setting as a csv item when useDisplayLabelItemInCsvDownload is true.

Setting flag for backward compatibility. This setting flag will be deleted in a future version.

showPulldownPleaseSelectLabel

boolean

Whether to display the label "Please select" when the pull-down menu is not selected. The default value is true.

datePickerDefaultOption

String

Datepicker default options. The default value is.
changeMonth:true,changeYear:true,yearRange:"c-10:c+10"

recycleBinMaxCount

int

Maximum number of trash cans displayed. If not specified, the default value is 100. If -1 is specified, there is no limit.

deleteAllCommandBatchSize

int

Batch size when committing bulk deletion. If not specified, the default value is 100. Applicable when the bulk delete commit type is DIVISION.

bulkUpdateAllCommandBatchSize

int

Batch size when committing bulk update. If not specified, the default value is 100. Applicable when the mass update commit type is DIVISION.

binaryDownloadLoggingTargetProperty

BinaryDownloadLoggingTargetProperty, Multiple

Properties to be output as a binary download log.

binaryUploadAcceptMimeTypesPattern

String

Specifies the MIME Type pattern of the files that can be uploaded in the binary properties of the entity. The set value specifies a regular expression pattern.
If not set, the MIME Type of the file will not be checked during upload.
The settings are reflected in the binary properties of all entities.

Configuration example

  • Accept CSV files ^(text/csv)$

  • Accept PDFs and images ^(application/pdf|image/.*)$

See WebFrontendService uploadFileTypeDetector, FileTypeDetector for information on how to determine the MIME Type to be validated.

ImageColors

ImageColorSetting, Multiple

Change the image colors on the search screen, detail screen, menu, etc.

skins

Skin, Multiple

Skins.

themes

Theme, Multiple

Themes.

entityViewHelper

EntityViewHelper

Helper class for displaying search screen and detail screen.

shallowCopyLobData

boolean

Whether to shallow copy lob data when copying entity. If not specified, the default value is false.

autoGenerateShowSystemProperty

boolean

Whether to display the system information section in the automatic generation process of EntityView screen.
The property specified in autoGenerateSystemProperties is output as a read-only item as "System Information" Seciton on the detail/edit screen and search screen. It is not displayed on the new creation screen. The default value is false.

autoGenerateSystemProperties

String

Properties to be displayed in "System Information" section of automatic generation process of EntityView screen. Comma separated. Only the following properties are available.
oid , version , createBy , createDate , updateBy , updateDate , lockedBy

autoGenerateSystemPropertyDisplayPosition

String

"System information" display position for automatic generation processing of EntityView screens. TOP or BOTTOM. The default is TOP.

autoGenerateExcludeOidWhenCustomOid

boolean

In the "System information" of the automatic generation process of EntityView screen, if OID property of Entity is customized, OID should not be displayed. The default value is true.

autoGenerateUseUserPropertyEditor

boolean

Is UserPropertyEditor used for createBy , updateBy , and lockedBy ? The default value is true .

permitRolesToGem

String, Multiple

Gem permit roles in GemAuth. The default value is GemUser and AppAdmin .

permitRolesToNoView

String, Multiple

Permit roles in GemAuth when EntityView is undefined. The default value is AppAdmin .

The settings of EnterpriseGemConfigService

The performance of the enterprise edition can be configured with the following items. Please configure these items along with the settings from community editions.

Configurable Items
Item Value Description

savedListCsvDownloadInterval

int

Set the CSV download interval of the SavedList list overviews to prevent redundant download requests. If 0 is set, the interval will be infinite. The default value is 60000 (1 minute).

entitylistingSearchInterval

int

EntityListing search interval to prevent redundant search requests. If 0 is set, it will be infinite. The default value is 60000 (1 minute).

entitylistingCsvDownloadInterval

int

EntityListing CSV download interval to prevent redundant download requests. If 0 is set, it will be infinite. The default value is 60000 (1 minute).

aggregationCsvDownloadInterval

int

Aggregation CSV download interval. If 0 is set, it will be indefinite. The default value is 60000 (1 minute).

aggregationRawdataCsvDownloadInterval

int

Aggregation raw data CSV download interval. If 0 is set, it will be infinite. The default value is 60000 (1 minute).

showBothAggregationCsvDownloadButton

boolean

Whether to display the Aggregation CSV download button both above and below the summary table. The default value is false.

dividingTableSideAtCrosstabCsvDownload

boolean

Whether to divide and output the table side by CSV download of Aggregation (Crosstab). The default value is false.

dividingTableHeadAtCrosstabCsvDownload

boolean

Whether to output by dividing the header of the table with CSV download of Aggregation (Crosstab). The default value is false.

outputItemLabelCrosstabCsvDownload

boolean

Whether to display header/table-side item names in CSV download of Aggregation (Crosstab). The default value is false.

entitylistingSearchLimit

int

EntityListing’s search limit. The default value is 10.

entitylistingCsvDownloadWithFooter

boolean

Set whether to output footer in CSV download of EntityListing. The default value is false.

entitylistingCsvDownloadFooter

String

Footer wording for CSV of EntityListing.

aggregationCsvDownloadWithFooter

boolean

Whether to output a footer for aggregate CSV downloads. The default value is false.

aggregationCsvDownloadFooter

String

footer wording of the aggregate CSV downloads.

aggregationRawdataCsvDownloadWithFooter

boolean

Whether to output a footer when downloading raw CSV data for aggregation. The default value is false.

aggregationRawdataCsvDownloadFooter

String

Footer wording of raw data aggregate CSV downloads.

confirmUserTaskSubmit

boolean

Whether to display the task confirmation dialog on the workflow task edit screen. The default value is true.

confirmUserTaskCancel

boolean

Whether to display a cancellation confirmation dialog on the workflow task edit screen. The default value is true.

BinaryDownloadLoggingTargetProperty

Please specify org.iplass.gem.BinaryDownloadLoggingTargetProperty to the class.

This property is the output target of the binary download log. The following items can be configured.

Item Value Description

entityName

String

Entity name

propertyName

String

Property Name

ImageColorSetting

Please specify org.iplass.gem.ImageColorSetting to the class.

Image color and corresponding CSS of search screen, detail screen, menu, etc. can be configured with the following items. When adding image color, please create corresponding CSS.

Item Value Description

colorName

String

Image color name.

cssSettings

CssSetting, Multiple

The settings of the CSS corresponding to the skin.

CssSetting

Please specify org.iplass.gem.CssSetting to the class.

The path of the CSS corresponding to the skin can be configured with the following items.

Item Value Description

skinName

String

Skin name.

cssPath

String

CSS file path.

Skin

Please specify org.iplass.mtp.tenant.Skin to the class. The following items can be configured.

Item Value Description

displayName

String

The display name.

skinName

String

Skin name.

pageSkinName

String

The name of the skin for the whole page.

menuSkinName

String

The name of the skin for the menu.

Theme

Please specify org.iplass.mtp.tenant.Theme to the class. The following items can be configured.

Item Value Description

displayName

String

The display name.

themeName

String

Theme name.

EntityViewHelper

the helper class for displaying search screen and detail screen can be configured.

Please specify the implementing class of org.iplass.gem.EntityViewHelper to the class.

As standard implementation, the following EntityViewHelper are provided.

EntityViewHelperImpl

EntityViewHepler for community edition.

Please specify org.iplass.gem.EntityViewHelperImpl to the class. There is no configurable items.

EnterpriseEntityViewHelperImpl

EntityViewHelper for enterprise edition.

Please specify org.iplass.gem.EnterpriseEntityViewHelperImpl to the class. There is no configurable items.

Example
<service>
    <interface>org.iplass.gem.GemConfigService</interface>
    <class>org.iplass.gem.EnterpriseGemConfigService</class>

    <!-- Maximum number of CSV downloads -->
    <property name="csvDownloadMaxCount" value="65535" />

    <!-- CSV download character code -->
    <!--
    UTF8 is set in gem-service-config.xml.
    If you want to add it, please specify any character code in the value referring to the following and make it valid.

    <property name="csvDownloadCharacterCode" value="windows-31j" additional="true" />
    <property name="csvDownloadCharacterCode" value="EUC-JP" additional="true" />
     -->
    <property name="csvDownloadCharacterCode" value="UTF-8"/>

    <!-- Settings about the double quote of CSV downloads
        It is set to true by default. Set to false if you do not want to output double quotes.
        (If line break, [,], ["] and [ ] is included, double quotes are output regardless of the setting)
     -->
    <property name="csvDownloadQuoteAll" value="true"/>

    <!-- CSV download reference item version output -->
    <property name="csvDownloadReferenceVersion" value="true"/>

    <!-- CSV upload batch commit size -->
    <property name="csvUploadCommitCount" value="1000"/>

    <!-- Internal cache size of searches for user name acquisition when downloading CSV -->
    <property name="searchResultCacheLimit" value="300" />

    <!-- Whether to display a confirmation dialog when saving the edit on edit page
    It is set to hide by default. Set to true if you want to display it.
    -->
    <property name="confirmEditSave" value="false"/>

    <!-- Whether to display a confirmation dialog when canceling the edit on edit page
    It is set to display by default. Set to false if you want to hide it.
    -->
    <property name="confirmEditCancel" value="true"/>

    <!-- Whether to show the reset button on the search screen
    It is set to true by default. Set to false if you want to hide it.
    -->
    <property name="showSeachCondResetButton" value="true"/>

    <!-- Number of search results to be displayed on the search screen -->
    <property name="searchResultDispRowCount" value="10"/>

    <!-- Maximum number of search items in detail search screen -->
    <property name="maxOfDetailSearchItems" value="100"/>

    <!-- Search processing interval, infinite (0) / specified milliseconds (1 or more) -->
    <property name="searchInterval" value="60000"/>

    <!-- CSV download interval, infinite (0) / specified milliseconds (1 or more) -->
    <property name="csvDownloadInterval" value="60000"/>

    <!-- EntityListing search processing interval, indefinite (0) / specified milliseconds (1 or more) -->
    <property name="entitylistingSearchInterval" value="60000"/>

    <!-- EntityListing CSV download interval, infinite (0) / specified milliseconds (1 or more) -->
    <property name="entitylistingCsvDownloadInterval" value="60000"/>

    <!-- Aggregation CSV download interval, infinite (0) / specified milliseconds (1 or more) -->
    <property name="aggregationCsvDownloadInterval" value="60000"/>

    <!-- Aggregation raw data CSV download interval, infinite (0) / specified milliseconds (1 or more) -->
    <property name="aggregationRawdataCsvDownloadInterval" value="60000"/>

    <!-- Whether to display the Aggregation CSV download above and below the summary table -->
    <property name="showBothAggregationCsvDownloadButton" value="false"/>

    <!-- Whether the table side is divided for the outputs by CSV download of Aggregation (Crosstab) -->
    <property name="dividingTableSideAtCrosstabCsvDownload" value="false"/>

    <!-- Whether the header side is divided for the outputs by CSV download of Aggregation (Crosstab) -->
    <property name="dividingTableHeadAtCrosstabCsvDownload" value="false"/>

    <!-- Whether to display table side / header side item names in CSV download of Aggregation (Crosstab) -->
    <property name="outputItemLabelCrosstabCsvDownload" value="false"/>

    <!-- Whether to output footer in CSV download for general search -->
    <property name="csvDownloadWithFooter" value="false"/>

    <!-- Wording for the footer of the CSV of general search -->
    <property name="csvDownloadFooter" value=""/>

    <!-- Whether to use a display label item in search -->
    <property name="useDisplayLabelItemInSearch" value="true"/>

    <!-- Whether to use a display label item in CSV download -->
    <property name="useDisplayLabelItemInCsvDownload" value="true"/>

    <!-- EntityListing's search limit -->
    <property name="entitylistingSearchLimit" value="10"/>

    <!-- Whether to output footer in CSV download of EntityListing -->
    <property name="entitylistingCsvDownloadWithFooter" value="false"/>

    <!-- Wording for the footer of the CSV of EntityListing -->
    <property name="entitylistingCsvDownloadFooter" value=""/>

    <!-- Whether to output footer in aggregation CSV downloads-->
    <property name="aggregationCsvDownloadWithFooter" value="false"/>

    <!-- Wording for the footer of the CSV of aggregation -->
    <property name="aggregationCsvDownloadFooter" value=""/>

    <!-- Whether to output footer in aggregation's raw data CSV downloads -->
    <property name="aggregationRawdataCsvDownloadWithFooter" value="false"/>

    <!-- Wording for the footer of the CSV of aggregation's raw data -->
    <property name="aggregationRawdataCsvDownloadFooter" value=""/>

    <!-- Whether to display the task confirmation dialog on the workflow task edit screen
    It is set to display by default. Set to false if you want to hide it.
    -->
    <property name="confirmUserTaskSubmit" value="true"/>

    <!-- Whether to display a cancellation confirmation dialog on the workflow task details screen
    It is set to display by default. Set to false if you want to hide it.
    -->
    <property name="confirmUserTaskCancel" value="true"/>

    <!-- Settings on asynchronous CSV upload  -->
    <!-- If true(asynchronous) was selected, please also set the useQueue property in RdbQueueService to true. -->
    <property name="csvUploadAsync" value="false"/>

    <!-- CSV upload status polling interval, specified in milliseconds -->
    <property name="csvUploadStatusPollingInterval" value="10000"/>

    <!-- Whether to display the "Please select" pull-down box-->
    <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>

    <!-- Binary file upload acceptable MIME Type pattern. Specify a regular expression. -->
    <!-- Configuration example
    <property name="binaryUploadAcceptMimeTypesPattern" value="^(image/.*|application/pdf|text/csv)$" />
    -->

    <!-- Image color for GEM general pages and menu. -->
    <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>

    <!-- Skin definition -->
    <property name="skins" class="org.iplass.gem.Skin">
        <property name="skinName" value="flat" />
        <property name="displayName" value="Flat" />
        <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="Vertical Menu" />
        <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="Horizontal Menu" />
        <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="Horizontal Menu (Drop Down)" />
        <property name="pageSkinName" value="horizontal" />
        <property name="menuSkinName" value="sub-droplist" />
    </property>

    <!-- Theme definition -->
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="black" />
        <property name="displayName" value="Black" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="red" />
        <property name="displayName" value="Red" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="green" />
        <property name="displayName" value="Green" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="blue" />
        <property name="displayName" value="Blue" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightred" />
        <property name="displayName" value="Light Red" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightgreen" />
        <property name="displayName" value="Light Green" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="lightblue" />
        <property name="displayName" value="Light Blue" />
    </property>
    <property name="themes" class="org.iplass.gem.Theme">
        <property name="themeName" value="orange" />
        <property name="displayName" value="Orange" />
    </property>
    <property name="entityViewHelper" class="org.iplass.gem.EnterpriseEntityViewHelperImpl" />
</service>

3.29. InfinispanService

This is the service to manages Infinispan.

Interface Name

org.iplass.mtp.impl.infinispan.InfinispanService

Implementing Class

org.iplass.mtp.impl.infinispan.InfinispanService

The settings of InfinispanService

InfinispanService can be configured with the following items.

Configurable Items
Item Value Description

configurationFile

String

Set the setting file of Infinispan.

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

3.30. InterceptorService

This service manages the interceptors that are called when commands are executed.

Interface Name

org.iplass.mtp.impl.command.InterceptorService

Implementing Class Name

org.iplass.mtp.impl.command.InterceptorService

The Settings of InterceptorService

Set the interceptor to be called for each functional unit to executes commands.

Configurable Items
Item Value Description

invoker

CommandInterceptor, Multiple

The interceptor when the command is explicitly called via CommandInvoker.

web

CommandInterceptor, Multiple

The interceptor of Action.

webApi

CommandInterceptor, Multiple

The interceptor of WebApi.

soap

CommandInterceptor, Multiple

The interceptor of SOAP.

CommandInterceptor

Please specify the implementing class of org.iplass.mtp.command.interceptor.CommandInterceptor.

As the standard implementation, the following CommandInterceptor are provided.

InitialInterceptor

Please specify org.iplass.mtp.impl.webapi.interceptors.InitialInterceptor to the class.

It can be used via webApi, and soap.

Interceptor that sets the language and preview time as the initial process for WebApi requests. There is no configurable items for this item.

AuthInterceptor(WebApi)

Please specify org.iplass.mtp.impl.webapi.interceptors.AuthInterceptor to the class.

It can be used via webApi.

This is the interceptor that performs authentication processing using custom headers. There is no configurable items.

AuthInterceptor(SOAP)

Please specify org.iplass.mtp.impl.webapi.soap.interceptors.AuthInterceptor to the class.

It can be used via soap.

This is the interceptor that performs authentication processing using custom headers. There is no configurable items.

OAuthScopeInterceptor

Please specify org.iplass.mtp.impl.webapi.interceptors.OAuthScopeInterceptor to the class.

It can be used via webApi.

It will check the scope of OAuth2.0. There is no configurable items.

LoggingInterceptor

Please specify org.iplass.mtp.impl.command.interceptors.LoggingInterceptor to the class.

It can be used via invoker, web, and soap.

It is the interceptor that outputs the command execution result to a log. There are no settings can be changed.

LoggingInterceptor(WebApi)

Please specify org.iplass.mtp.impl.webapi.interceptors.LoggingInterceptor to the class.

It can be used via webApi.

It is the interceptor that logs the execution results of the WebApi. The following items can be configured.

Item Value Description

webapiTrace

boolean

Set whether to output the log of WepApi. The default value is true.

logParamName

String, Multiple

Parameter name of the log.

logAttributeName

String, Multiple

RequestContext attributeName of the log.

noStackTrace

String, Multiple

An exception class that does not output a stack trace. When specifying multiple properties, set multiple properties or separate exception classes with a single-byte colon (:).

warnLogThresholdOfSqlExecutionCount

int

The threshold of the executed SQL lines to output logs at WARN level.
If the SQL lines executed exceeds the threshold in one single request, the log will be output at WARN level.
The default value is -1(All logs will be logged at INFO level).

warnLogThresholdOfExecutionTimeMillis

long

The threshold of the execution time (milliseconds) to output logs at WARN level.
If the execution time exceeds the threshold in one single request, the log will be output at WARN level.
The default value is -1(All logs will be logged at INFO level).

TokenInterceptor

Please specify org.iplass.mtp.impl.web.interceptors.TokenInterceptor to the class.

It can be used via web.

It is the interceptor that checks tokens when a request calls the action. There is no configurable items.

TokenInterceptor(WebApi)

Please specify org.iplass.mtp.impl.web.interceptors.TokenInterceptor to the class.

It can be used via webApi.

It is the interceptor that checks tokens when a request reaches WebApi. There is no configurable items.

UnavailableInterceptor

Please specify the org.iplass.mtp.impl.webapi.interceptors.UnavailableInterceptor to the class.

It can be used via webApi, soap.

It is the interceptor to toggle maintenance mode on a tenant basis. There is no configurable items.

TransactionInterceptor

Please specify org.iplass.mtp.impl.command.interceptors.TransactionInterceptor to the class.

It can be used via invoker, web, webApi, soap.

It is the interceptor that performs the transaction.

WebApiMetricsInterceptor

Please specify org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiMetricsInterceptor to the class.

This is the interceptor that records WebAPI latency and SQL execute count as metrics, and is added by default when Micrometer module is applied.

Item Value Description

provider

WebApiMetricsTagsProvider

A class that implements org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiMetricsTagsProvider. This can be specified if you want to customize the tags that are given to metrics. By default, org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiMetricsTagsProvider is used.

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

This is a service for holding IP addresses accessed in the past.

Interface Name

org.iplass.mtp.impl.auth.authenticate.ipaddress.IPAddressHistoryStoreService

Implementing Class

org.iplass.mtp.impl.auth.authenticate.ipaddress.UserEntityIPAddressHistoryStoreService

The settings of UserEntityIPAddressHistoryStoreService

The user can configure about how to retain the IP address accessed in the past in UserEntity.

Configurable Items
Item Value Description

storePropertyName

String

Property name of UserEntity used to hold IP address. The default value is ipAddressHistory.

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

This is the service to manage the implementation of multilingual localizations.

Interface Name

org.iplass.mtp.impl.i18n.I18nService

Implementing Class Name

org.iplass.mtp.impl.i18n.I18nService

Settings of I18nService

I18nService can be configured with the following items.

Configurable Items
Item Value Description

enableLanguages

EnableLanguages, Multiple

Set this to enable specific languages.

defaultLocaleFormat

LocaleFormat

Settings of default locale format.

localeFormat

LocaleFormat, Multiple

Settings of locale format for each language.

languageFonts

LanguageFonts, Multiple

Specify the fonts for each language.

genericFontFamilyList

String, Multiple

A list of strings to be interpreted as a generic font family. If a string matching this setting exists in each font in languageFonts, the font is interpreted as a generic font family.

EnableLanguages

Please specify org.iplass.mtp.impl.i18n.EnableLanguages to the class.

For the enabled language, the following items can be configured.

Item Value Description

languageKey

String

Language Key.

languageName

String

Language Name.

otherLanguageKey

String, Multiple

Other Language Key.

LocaleFormat

Please specify org.iplass.mtp.impl.i18n.LocaleFormat to the class.

For the locale format, the following items can be configured.

Item Value Description

locale

String, Multiple

Corresponding locale.

serverDateFormat

String

Specify the format of the Date on the server.

serverTimeFormat

String

Specify the format of the Time on the server.

browserInputDateFormat

String

Specify the input format of the Date on the browser.

browserInputTimeSecFormat

String

Specify the input format of the Time(Second) on the browser.

browserInputTimeMinFormat

String

Specify the input format of the Time(Minutes) on the browser.

browserInputTimeHourFormat

String

Specify the input format of the Time(Hours) on the browser.

outputDateFormat

String

Specify the format of the date of Entity Data, such as search results and CSV outputs.

outputDateWeekdayFormat

String

Specify the format of the date(Monday, Mon, 1, etc.) of Entity Data, such as search results and CSV outputs.

excelDateFormat

String

The Date format in Excel.

excelTimeFormat

String

The Time format in Excel.

outputTimeSecFormat

String

Date output format of seconds for Entity related outputs, such as search result and CSV output result.

outputTimeMinFormat

String

Date output format of minutes for Entity related outputs, such as search result and CSV output result.

outputTimeHourFormat

String

Date output format of Hours for Entity related outputs, such as search result and CSV output result.

lastNameIsFirst

boolean

Set whether to have the surname in the front.

LanguageFonts

Please specify org.iplass.mtp.impl.i18n.LanguageFonts to the class.

For the language fonts, the following items can be configured.

Item Value Description

language

String

Language

fonts

String, Multiple

Font

Example
<service>
    <interface>org.iplass.mtp.impl.i18n.I18nService</interface>
    <class>org.iplass.mtp.impl.i18n.I18nService</class>

    <!-- Enabled Language -->
    <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" />

        <!--
            The expression used in 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 is available only in outputXXX. It is not available in browserInputDateFormat.
             Beware that it is a exclusive feature for locale of en and en_XX.

            ※Do not change the Server format because it has internal control.
            ※Do not change the Time input format because there is Range control.
         -->

        <!-- Format received as the input value of Date on the Server side (cannot be changed) -->
        <property name="serverDateFormat" value="yyyyMMdd" />
        <!-- Format received as the input value of Time on the server side (cannot be changed) -->
        <property name="serverTimeFormat" value="HHmmssSSS" />

        <!-- Date input format on the browser (can be specified individually by tenant) -->
        <property name="browserInputDateFormat" value="yyyyMMdd" />

        <!-- Time input format on the browser (Time cannot be changed because of the Range control) -->
        <property name="browserInputTimeSecFormat" value="HH:mm:ss" />
        <property name="browserInputTimeMinFormat" value="HH:mm" />
        <property name="browserInputTimeHourFormat" value="HH" />

        <!-- Date type output format (search results, CSV, etc., can be specified individually by tenant) -->
        <property name="outputDateFormat" value="yyyy/MM/dd" />
        <property name="outputDateWeekdayFormat" value="yyyy/MM/dd EEEE" />
        <!-- Date output format in Excel -->
        <property name="excelDateFormat" value="yyyy/M/d" />
        <property name="excelTimeFormat" value="H:mm" />

        <!-- Time type output format (search results, CSV, etc. Individual tenant cannot be specified at present) -->
        <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

This is the service to manage the operations of the saved lists.

Interface Name

org.iplass.mtp.impl.listing.ListingService

Implementing Class Name

org.iplass.mtp.impl.listing.ListingService

The Settings of ListingService

ListingService is configurable with the following items.

Configurable Items
Itme Value Description

automaticConversionToRootFolderMode

boolean

For the migration from the versions before 3.0.15, set it to true if you want the system to automatically migrate to the mode using root folders. The default value is false.

When set to true, the root folder will be generated at the time the saved list features are accessed, and the updates will occur during that time.

Until 3.0.14, the folder for Root was not explicitly created (treated as null), For the purpose of high speed searches when processing the saved lists. We decide to utilize Root folder starting from version 3.0.15. If the folder or saved list has already been registered in 3.0.14 or earlier, the system will operate in a mode that does not use the Root folder. if you want it to work as in 3.0.15 and later.
Once the Root folder has been generated (check if the Root folder has been created in the SavedListFolder entity), then it’s fine to set it back to false.

serializedClassResolver

SerializedClassResolver

Resolver for the class used to deserialize the saved list. This can be used when you want to customize the deserialization process.

SerializedClassResolver

Please specify the implementing class of org.iplass.mtp.impl.listing.SerializedClassResolver.

In a class that implements SerializedClassResolver, implement the Class<?> resolveClass(String serializedClassName) method to return the Class instance resolved from the class name.

Example
<service>
    <interface>org.iplass.mtp.impl.listing.ListingService</interface>

    <!-- For the migration from the versions before 3.0.15, set it to true if you want the system to automatically migrate to the mode using root folders.-->
    <property name="automaticConversionToRootFolderMode" value="false"/>

</service>

3.34. LobStoreService

A service for the persistance of LOB data.

Interface Name

org.iplass.mtp.impl.lob.LobStoreService

Implementing Class Name

org.iplass.mtp.impl.lob.LobStoreService

Settings of LobStoreService

LobStoreService can be configured with the following items.

Configurable Items
Item Value Description

binaryStore

LobStore

Set the LobStore for Binary data.

longTextStore

LobStore

Set the LobStore for long text.

defaultLobStoreName

String

The name of the default Lob store. The default value is default.

manageLobSizeOnRdb

boolean

Whether to manage the Lob size with Rdb (lob_store). The default value is false (do not manage).

temporaryKeepDay

int

Number of days to keep the temporary data. The cleaner will delete data older than the specified value here. The default value is 1.

invalidKeepDay

int

Number of days to keep invalid (non-reference) data. The cleaner will delete data older than specified here. The default value is 0.

cleanCommitLimit

int

Commit batch size of the cleaner deletion process. The default value is 100.

LobStore

Please specify the implementing class of org.iplass.mtp.impl.lob.lobstore.LobStore.

As the standard implementation, the following LobStore are provided.

RdbLobStore

Please specify org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore to the class.

This is the LobStore using RDB. The following items can be configured.

Item Value Description

lobValidator

LobValidator

The validation process corresponding to Lob.

FileLobStore

Please specify org.iplass.mtp.impl.lob.lobstore.file.FileLobStore to the class.

This is the LobStore using files. The following items can be configured.

Item Value Description

rootDir

String

Specify the root directory of where to save the data.

overwriteFile

boolean

Set whether to overwrite the files. The default value is false.(no overwriting)

lobValidator

LobValidator

The validation process corresponding to Lob.

S3LobStore

Please specify org.iplass.mtp.impl.aws.lobstore.s3.S3LobStore to the class.

This is the LobStore using S3. The following items can be configured.

Item Value Description

region

String

The region for S3.

endpoint

String

Specify the S3 endpoint.

bucketName

String

S3 package name.

encryption

S3Encryption

Specify this item when it is needed to encrypt and obfuscate S3 objects.

overwriteFile

boolean

Set whether to overwrite the existing S3 objects.
The default value is false.(no overwriting)

useTransferManager

boolean

Use TransferManager or not. The default value is false

transferManagerConfiguration

TransferManagerConfiguration

The settings of TransferManager

transferManagerThreadPoolSize

int

The size of thread pool that use at TransferManager. When -1 is set, thread pools are created with the default values in the AWS SDK. The default value is -1.

lobValidator

LobValidator

The validation process corresponding to Lob.

requiredTagMap

String, in format of Map

Specify in Map format when checking the required tag value in the S3 object. Set the tag name as key and the tag value as value.

retryTagCheckIntervalMillis

long

Retry interval when checking tags (milliseconds).

retryTagCheckCount

int

The number of retry attempts for checking tags.

TransferManagerConfiguration

Please specify com.amazonaws.services.s3.transfer.TransferManagerConfiguration to the class. So to configure the settings of TransferManager.

S3Encryption

Please specify org.iplass.mtp.impl.aws.lobstore.s3.S3Encryption to the class.

As our standard implementation, the following S3Encryption are provided.

SseS3Encryption

Please specify the implementing class of org.iplass.mtp.impl.aws.lobstore.s3.SseS3Encryption.

Perform the Encryption process with SSE-S3 method. There are no changeable settings available.

SseKmsEncryption

Please specify org.iplass.mtp.impl.aws.lobstore.s3.SseKmsEncryption to the class.

Perform the Encryption process with SSE-KMS methods. The following items can be configured.

Item Value Description

awsKmsKeyId

String

The Key Id for AWS Key Management Service (KMS)S3

MetricsS3LobStore

Please specify org.iplass.mtp.impl.micrometer.metrics.aws.lobstore.s3.MetricsS3LobStore to the class.

It’s S3LobStore with the metric collection function by Micrometer. The same items as S3LobStore can be configured.

AddableMultiLobStore

Please specify org.iplass.mtp.impl.lob.lobstore.multi.AddableMultiLobStore to the class.

LobStore that can be configured as a single LobStore by combining multiple LobStores. The following items can be configured.

Item Value Description

lobStore

LobStore, Multiple

Set LobStore here.

lobValidator

LobValidator

The validation process corresponding to Lob.

LobValidator

Please specify the implementing class of org.iplass.mtp.impl.lob.lobstore.LobValidator.

As the standard implementation, the following LobValidator are provided.

LogLobValidator

Please specify org.iplass.mtp.impl.lob.lobstore.LogLobValidator to the class.

It simply output the log. There are no settings that can be configured.

ProcessLobValidator

Please specify org.iplass.mtp.impl.lob.lobstore.ProcessLobValidator to the class.

Initiated the external process. The following items can be configured.

Item Value Description

command

String, Multiple

Specify the external process parameter.

checksumAlgorithm

String

Specify the algorithms of the checksum. You can chose from: Adler-32/CRC-32/MD5/SHA-1/SHA-256

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

    <!--
        Multiple LobStores can be combined into a single LobStore.
        New addition is performed according to the lobStore defined at the top.
        The system will search references from all lobStores.
        Deletion is also performed on all lobStores.
     -->
    <!--
    <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>
     -->

     <!--
        Specify whether the Lob size is managed by Rdb (lob_store).
        Changed the layout of the lob_store table for size management control in ver1.5.2.
        If the lob_store table cannot be changed in the existing system, it can be avoided by specifying false. -->
    <property name="manageLobSizeOnRdb" value="false" />
</service>

3.35. LoggingService

This service will modify the overall performance of all log services.

Interface Name

org.iplass.mtp.impl.logging.LoggingService

Implementing Class Name

This LoggingService will enable logback for logs.
org.iplass.mtp.impl.logging.logback.LogbackLoggingService

The Settings of LoggingService

The configurable items of log outputs can be configured as depicted below. With the presence of this service, the log output conditions can be modified dynamically whenever the tenant was changed. To enable this feature, it is necessary to enable org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter in the setting file of Logback(logback.xml). Once the feature is enabled, it will be able to switch the log output conditions dynamically via AdminConsole and so on.

Configurable Items
Item Value Description

maxAgeSecondsOfLogCondition

long

Define the maximum effective period of the settings of log output conditions(in seconds). The default is -1 (unlimited).

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

This is a service for managing email template definitions (metadata) and sending emails.

Interface Name

org.iplass.mtp.impl.mail.MailService

Implementing Class Name

Mail transmission by JavaMail
org.iplass.mtp.impl.mail.MailServiceImpl
Mail transmission by Amazon SES
org.iplass.mtp.impl.mail.AWSMailService
Mail transmission by SendGrid
org.iplass.mtp.impl.sendgrid.SendGridMailServiceImpl

Settings of MailServiceImpl

The MailServiceImpl are configurable when using standard mail transmission (JavaMail).
You can set the standard properties defined in JavaMail, the properties of each provider implementation, and the properties extended with iPLAss.

Configurable Items
Item Value Description

mail.smtp.host

String, required

The SMTP server host name.

mail.smtp.port

int

SMTP server port number. the default is 25.

mail.smtp.connectiontimeout

int

Set the timeout threshold for establishing SMTP connections.(in millisecond) The default value is 60000 (1 minutes).

mail.smtp.timeout

int

Set the timeout threshold for communicating with SMTP connections.(in millisecond) The default value is 60000 (1 minutes).

mail.pop3.connectiontimeout

int

Set the timeout threshold for establishing POP3 connections.(in millisecond) The default value is 60000 (1 minutes).

mail.pop3.timeout

int

Set the timeout threshold for communicating with POP3 connections.(in millisecond) The default value is 60000 (1 minutes).

mail.*

-

Other standard properties defined in JavaMail and properties of each provider implementation can be set. such as

mail.host
mail.smtp.from
mail.smtp.auth
mail.transport.protocol
etc.

mail.smtp.popbeforesmtp

boolean

Set true if authenticating by POP should be done before SMTP. The default value is false.
Properties extended with iPLAss.

mail.pop3.auth.id

String

User ID for POP before SMTP authentication.
This Settings of is effective when mail.smtp.popbeforesmtp is true.
Properties extended with iPLAss.

mail.pop3.auth.password

String

User password for POP before SMTP authentication.
This Settings of is effective when mail.smtp.popbeforesmtp is true.
Properties extended with iPLAss.

mail.smtp.auth.id

String

User ID for SMTP authentication.
This Settings of is effective when mail.smtp.auth is true.
Properties extended with iPLAss.

mail.smtp.auth.password

String

Password for SMTP authentication.
This Settings of is effective when mail.smtp.auth is true.
Properties extended with iPLAss.

mail.charset

String

The default charset for mail.
For example, specify utf-8.
Properties extended with iPLAss.

mail.encoding

String

Default encoding for mail.
For example, specify base64.
Properties extended with iPLAss.

debug

boolean

When debugging is enabled, trace is print to the standard output console.

listener

SendMailListener, Multiple

Listener for outgoing mail.

retryIntervalMillis

long

Retry interval when email transmission fails (milliseconds).

retryCount

int

The number of retry attempts for email transmission to fail.

smimeHandler

SmimeHandler

Handler when using S/MIME.

SendMailListener

Please specify the implementing class of org.iplass.mtp.mail.SendMailListener.

As the standard implementation, the following SendMailListener are provided.

LoggingSendMailListener

Please specify org.iplass.mtp.mail.listeners.LoggingSendMailListener to the class.

It’s SendMailListener that logs the mail transmission events. There are no settings that can be configured.

MetricsSendMailListener

Please specify org.iplass.mtp.impl.micrometer.metrics.mail.MetricsSendMailListener to the class.

It’s SendMailListener with the metric collection function by Micrometer. There are no settings that can be configured.

SmimeHandler

When using MailServiceImpl, the standard class to support digital signature and encryption by S/MIME are provided: org.iplass.mtp.impl.mail.smime.SmimeHandler The following configurable items are available:

Item

Value

Description cmsAlgorithmName

String

CMS (Cryptographic Message Syntax) cryptographic algorithm name. The default value is AES128_CBC.

signatureAlgorithmMap

SignatureAlgorithmMap

Mapping of digital signature algorithm.

certStore

SmimeCertStore

SignatureAlgorithmMap

Set the mapping of digital signature algorithm. The following items can be set.

Item Value Description

name

String

The key of digital signature algorithm

value

String

The digital signature algorithm.

Default Settings

name

value

RSA

SHA256withRSA

DSA

SHA256withDSA

EC

SHA256withECDSA

SmimeCertStore

Please specify the implementing class of org.iplass.mtp.impl.mail.smime.SmimeCertStore.

As a standard implementation, a simple implementation based on java.security.KeyStore are provided: org.iplass.mtp.impl.mail.smime.SimpleSmimeCertStore. Certificates stored in KeyStore are treated as trusted, including client certificates. At runtime, only the validity period is checked, and the certificate chain is not verified.

Item

Value

Description

keyStoreType

String

KeyStore type. The default value is PKCS12.

keyStoreProvider

String

KeyStore provider name. If not set, the system will use the first provider that supports the specified KeyStore type from the list of registered security providers, starting with the highest priority provider.

keyStoreFilePath

String

File path of KeyStore where entries for signature creation and encryption are stored.

keyStorePassword

String

KeyStore password.

keyPasswordMap

KeyPasswordMap

Defines the mapping to the password so to restore the key associated with the entry.

keyStoreReloadIntervalMinutes

String

KeyStore reload interval (minutes). The default value is Long.MAX_VALUE.

KeyPasswordMap

Configure about the map to restore the password associated with the entry. The following items can be configured.

Item Value Description

name

String

The alter name of the entry.(the mail address of the sender or the receiver.)

value

String

Password for restoring the private key associated with the entry.

Example
<service>
    <interface>org.iplass.mtp.impl.mail.MailService</interface>
    <class>org.iplass.mtp.impl.mail.MailServiceImpl</class>

    <!-- SMTP Settings  -->
    <!-- SMTP server host -->
    <property name="mail.smtp.host" value="XXXXXXXX"/>
    <!-- SMTP server port normal:25 / submission port:587 / SSL:465 -->
    <property name="mail.smtp.port" value="25"/>
    <!-- Time out Settings -->
    <property name="mail.smtp.connectiontimeout" value="60000"/>
    <property name="mail.smtp.timeout" value="60000"/>

    <!--
        The mail.smtp.host property is recognized in preference to the mail.host property, so if the two values are the same,
        You can send mail with only the mail.smtp.host property.
        However, the mail.host property is used internally to generate a Message-ID header.
        If the mail.host property is not explicitly specified, the Message-ID header may not be generated correctly.
     -->
    <property name="mail.host" value="XXXXXXXX"/>

    <!-- Default Charset -->
    <property name="mail.charset" value="utf-8"/>

    <property name="mail.encoding" value="base64"/>

    <!-- S/MIME Settings -->
    <!-- Use the digital signature and encryption features of  -->
    <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) ■ -->
    <!-- When debugging outgoing mail, enable the followings. -->
    <!--
    <property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
     -->
</service>

Settings of AWSMailService

When using Amazon SES, it is needed to configure about AWSMailService.
When using AWSMailService, AWS authentication settings must be made in AWSSetting. However, note that the clientConfiguration of AWSSetting cannot be applied.

Configurable Items
Item Value Description

mail.charset

String

The default charset for mail.
For example, specify utf-8.

mail.encoding

String

Default encoding for mail.
For example, specify base64.

mail.aws.host

String

SES endpoint can be specified.
If not specified, the default endpoint will be used.

debug

boolean

When debugging is enabled, trace is output to the standard output.

listener

SendMailListener, Multiple

Listener for outgoing mail.

retryIntervalMillis

long

Retry interval when email transmission fails (milliseconds).

retryCount

int

The number of retry attempts for email transmission to fail.

SendMailListener

It is similar to the SendMailListener in MailServiceImpl.

Example

Similar to MailServiceImpl.

Settings of SendGridMailServiceImpl

To use SendGrid, please specify and configure the SendGridMailServiceImpl.

Configurable Items
Item Value Description

checkBounce

boolean

Set whether to check bounce list and block list before sending the mail. The default value is true.

checkBouncePattern

String

The mail address to be checked for bounce list and block list. The format to specify is Regular expression.

httpClientConfig

HttpClientConfig

Settings of HTTP client.

httpTransport

HttpTransport

Settings of the HTTP requests toward WebApi.

mailApiClient

MailClient

Settings of the mail client.

deleteBouncePattern

String

Configure about the mail address that should be deleted if it was in the bounce, block list of the SendGrid. The format to specify is Regular expression.

bounce

BounceClient

Bounce client.

block

BlockClient

Block client.

listener

SendMailListener, Multiple

The listener for sending the mail.

retryIntervalMillis

long

The retry interval when the transmission fails.(in millisecond)

retryCount

int

The number of retry attempts for email transmission to fail.

HttpClientConfig

Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class.

The following items can be configured.

Item Value Description

connectionTimeout

int

Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds).

soTimeout

int

socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds).

poolingMaxTotal

int

Maximum number of pools for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifetime of pooled http connections (milliseconds). The default is unlimited.

proxyHost

String

Proxy server host.

proxyPort

int

Proxy server port number.

httpClientBuilderFactory

HttpClientBuilderFactory

Specify this if you want to create a custom HttpClientBuilder.

HttpClientBuilderFactory

Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.

The following HttpClientBuilderFactory is provided as standard.

HttpTransport

Please specify org.iplass.mtp.impl.sendgrid.apiclient.HttpTransportImpl to the class.

The following items can be configured.

Item Value Description

apiUser

String, required

Set the user ID of SendGrid, or a fixed string: apikey (if you use the API Key instead of a password).

apiKey

String, required

Set the password, or API Key of SendGrid.

webApiRoot

String, required

Set the URL for this SendGrid API.

MailClient

Please specify org.iplass.mtp.impl.sendgrid.apiclient.MailClientImpl to the class.

The following items can be configured.

Item Value Description

charset

String

The charset code of the mail.

BounceClient

Please specify org.iplass.mtp.impl.sendgrid.apiclient.BounceClientImpl to the class.

BounceClientImpl does not have configurable items.

BlockClient

Please specify org.iplass.mtp.impl.sendgrid.apiclient.BlockClientImpl to the class.

BlockClientImpl does not have configurable items.

SendMailListener

It is similar to the SendMailListener in MailServiceImpl.

Example
<service>
    <interface>org.iplass.mtp.impl.mail.MailService</interface>
    <class>org.iplass.mtp.impl.sendgrid.SendGridMailServiceImpl</class>
    <!-- If you don't want to check the bounce list and block list before sending the mail, please set the checkBounce to false. -->
    <!--
    <property name="checkBounce" value="false" />
    -->
    <!-- The mail address to be checked for bounce list and block list. -->
    <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 authentication key -->
        <property name="apiUser" value="yourOwnApiUser" />
        <property name="apiKey" value="yourOwnApiKey" />
        <!-- SendGrid endpoint -->
        <property name="webApiRoot" value="https://api.sendgrid.com/api" />
    </property>

    <property name="mailApiClient" class="org.iplass.mtp.impl.sendgrid.apiclient.MailClientImpl">
        <!-- The charset of the mail -->
        <property name="charset" value="UTF-8" />
    </property>

    <!-- The mail address to be deleted from the list when an address is listed in the SendGrid bounce or block list. -->
    <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

This service manage the settings of the overall performance of the mobile version of the general pages(MDC).

Interface Name

org.iplass.mtp.mdc.MdcConfigService

Implementing Class

org.iplass.mtp.mdc.MdcConfigService

The settings of MdcConfigService

Configurable Items
Item Value Description

formatNumberWithComma

boolean

Whether to format numeric property values ​​with commas in the detail display screen. The default value is true.

searchResultDispRowCount

int

Number of search results to be displayed on the search screen. The default value is 10.

searchInterval

int

Set the search interval to prevent redundant requests. If 0 is set, it will be infinite.(cannot click the search button until the result was retrieved and presented) The default value is 60000 (1 minute).

recycleBinMaxCount

int

Maximum number of trash cans displayed. If not specified, the default value is 100. If -1 is specified, there is no limit.

deleteAllCommandBatchSize

int

Batch size when committing bulk deletion. If not specified, the default value is 100. Applicable when the bulk delete commit type is DIVISION.

themes

Theme, Multiple

Themes.

themeColorSchemes

ThemeColorScheme, In format of Map

Theme color schemes. specify the theme name in key and set the color scheme for each theme in Map format.

displayBreakpoint

DisplayBreakpoint

Display breakpoint. Set the width for each device size.

permitRolesToMdc

String, Multiple

Mdc permit roles in MdcAuth. The default value is MdcUser and AppAdmin .

permitRolesToNoView

String, Multiple

Permit roles in MdcAuth when EntityView is undefined. The default value is AppAdmin .

binaryDownloadLoggingTargetProperty

BinaryDownloadLoggingTargetProperty, Multiple

Properties to be output as a binary download log.

binaryUploadAcceptMimeTypesPattern

String

Specifies the MIME Type pattern of the files that can be uploaded in the binary properties of the entity. The set value specifies a regular expression pattern.
If not set, the MIME Type of the file will not be checked during upload.
The settings are reflected in the binary properties of all entities.

Configuration example

  • Accept CSV files ^(text/csv)$

  • Accept PDFs and images ^(application/pdf|image/.*)$

See WebFrontendService uploadFileTypeDetector, FileTypeDetector for information on how to determine the MIME Type to be validated.

Theme

Please specify org.iplass.mtp.mdc.tenant.Theme to the class. The following items can be configured.

Item Value Description

themeName

String

Theme name.

displayName

String

Display name.

ThemeColorScheme

Please specify org.iplass.mtp.mdc.tenant.ThemeColorScheme to the class. The following items can be configured.

Item Value Description

primary

String

Primary color.

secondary

String

Secondary color.

neutral

String

Neutral color. The default value is #D4D4D4.

success

String

Success color. The default value is #4CAF50.

info

String

Information color. The default value is #2196F3.

warning

String

Warning color. The default value is #FF7D07.

error

String

Error color. The default value is #FF5252.

background

String

Background color. The default value is #F7F7F7.

surface

String

Surface color. The default value is #FFFFFF.

DisplayBreakpoint

Please specify org.iplass.mtp.mdc.DisplayBreakpoint to the class.The following items can be configured.
Sends a request header (X-Mdc-Display-Breakpoint) to identify the display breakpoint when calling WebAPI. This can be used in display determination scripts, etc.

Item Value Description

mobileBreakpoint

String

Mobile breakpoint. Set the item name of the threshold for judging mobile.

thresholds

BreakpointThresholds

threshold.

BreakpointThresholds

Please specify org.iplass.mtp.mdc.BreakpointThresholds to the class. The following items can be configured.

Item Value Description

xs

int

xs threshold (px).

sm

int

sm threshold (px).

md

int

md threshold (px).

lg

int

lg threshold (px).

xl

int

xl threshold (px).

BinaryDownloadLoggingTargetProperty

Please specify org.iplass.mtp.mdc.BinaryDownloadLoggingTargetProperty to the class.

This property is the output target of the binary download log. The following items can be configured.

Item Value Description

entityName

String

Entity name

propertyName

String

Property Name

設定例
<service>
    <interface>org.iplass.mtp.mdc.MdcConfigService</interface>
    <!--  Whether to format numeric property values ​​with commas in the detail display screen -->
    <property name="formatNumberWithComma" value="true" />

    <!-- Number of search results to be displayed on the search screen. -->
    <property name="searchResultDispRowCount" value="10"/>

    <!-- Search processing interval, infinite (0) / specified milliseconds (1 or more) -->
    <property name="searchInterval" value="60000"/>

    <!-- Maximum number of trash cans displayed -->
    <property name="recycleBinMaxCount" value="100" />

    <!-- Batch size when committing bulk deletion. -->
    <property name="deleteAllCommandBatchSize" value="100" />

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

    <!-- Theme color schemes -->
    <property name="themeColorSchemes">
        <property name="green" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#4CAF50" />
            <property name="secondary" value="#DADADA" />
            <property name="accent" value="#0D909B" />
        </property>
        <property name="red" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#F25A4F" />
            <property name="secondary" value="#DADADA" />
            <property name="accent" value="#0D909B" />
        </property>
        <property name="blue" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#14B4FC" />
            <property name="secondary" value="#DADADA" />
            <property name="accent" value="#0D9B6F" />
        </property>
        <property name="orange" class="org.iplass.mtp.mdc.tenant.ThemeColorScheme" >
            <property name="primary" value="#EE961F" />
            <property name="secondary" value="#DADADA" />
            <property name="accent" value="#0D909B" />
        </property>
    </property>

    <!-- Display Setting  -->
    <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 permission role -->
    <property name="permitRolesToMdc" value="MdcUser" />
    <property name="permitRolesToMdc" value="AppAdmin" />

    <!-- MdcAuth Permitted roles when EntityView is undefined -->
    <property name="permitRolesToNoView" value="AppAdmin" />

    <!-- Log output setting for Binary download -->
    <property name="binaryDownloadLoggingTargetProperty">
        <property name="entityName" value="mtp.maintenance.Package" />
        <property name="propertyName" value="archive" />
    </property>

    <!-- Binary file upload acceptable MIME Type pattern. Specify a regular expression. -->
    <!-- Configuration example
    <property name="binaryUploadAcceptMimeTypesPattern" value="^(image/.*|application/pdf|text/csv)$" />
    -->
</service>

3.38. MdcDetailViewService

This service for settings for the mobile version of the Detail pages.

Interface Name

org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService

Implementing Class

org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService

The Settings of MdcDetailViewService

MdcDetailViewService can be configured with the following items.

Configurable Items
Item Value Description

detailViewGenerator

MdcDetailViewHandlerGenerator

Automatic generation setting of screen definition of detail screen.

loadEntityController

LoadEntityController

Entity loading process.

saveEntityController

SaveEntityController

Entity save process.

copyEntityController

CopyEntityController

Entity copy process.

MdcDetailViewHandlerGenerator

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.detail.definition.MdcDetailViewHandlerGenerator.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewHandlerGeneratorImpl. The following items can be configured.

Item Value Description

showSystemSection

boolean

Output System Section when auto-generated.

systemSectionProperties

SectionProperty,Multiple

System Section property. The basic items name and description and version control items (startDate, endDate) are excluded.

systemSectionDisplayPosition

SectionDisplayPosition

The display position of the system Section. Specify enum value of SectionDisplayPosition. Specify one of the following:

TOP

Displayed at the top of the detail screen.

BOTTOM

Displayed at the end of the detail screen.

The default value is TOP.

excludeOidWhenCustomOid

boolean

Hide OIDs if you have customized them.

useUserPropertyEditor

boolean

Use UserPropertyEditor for createBy, updateBy, lockedBy. When using the UserPropertyEditor, the User’s name is displayed instead of the OID.

SectionProperty

This is a setting related to whether or not to display each system property. The following items can be configured.

Item Value Description

propertyName

String

property name

displayView

boolean

Show on detail screen

displayCreate

boolean

Show on the new or copy screen

displayUpdate

boolean

Show on edit screen

LoadEntityController

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.detail.load.LoadEntityController.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.detail.LoadEntityControllerImpl. There are no items that can be set.

SaveEntityController

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.detail.save.SaveEntityController.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.detail.SaveEntityControllerImpl. There are no items that can be set.

CopyEntityController

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.detail.copy.CopyEntityController.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.detail.CopyEntityControllerImpl. The following items can be configured.

Item Value Description

shallowCopyLobData

boolean

Shallow copy Lob data. If true, it refers to the same data as the copy source without copying the entity. If false, copy the entity and refer to the data after copying.

Example
<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">
        <!-- Output System Section -->
        <property name="showSystemSection" value="false" />
        <!-- Properties to output to System 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>
        <!-- Display position of System Section TOP or BOTTOM -->
        <property name="systemSectionDisplayPosition" value="BOTTOM" />
        <!-- Hide OIDs if you have customized OIDs -->
        <property name="excludeOidWhenCustomOid" value="true" />
        <!-- Use UserPropertyEditor for createBy, updateBy, lockedBy -->
        <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">
        <!-- Shallow copy Lob data -->
        <property name="shallowCopyLobData" value="false" />
    </property>
</service>

3.39. MdcSearchViewService

This service for settings for the mobile version of the Search pages.

Interface Name

org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService

Implementing Class

org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService

The Settings of MdcSearchViewService

MdcSearchViewService can be configured with the following items.

Configurable Items
Item Value Description

searchViewGenerator

MdcSearchViewHandlerGenerator

Automatic generation setting of screen definition of search screen.

searchController

SearchController

Search process.

searchSelectListController

SearchSelectListController

Selection process Search process.

deleteListController

DeleteListController

Entity batch deletion process.

trashController

TrashController

Trash operation.

MdcSearchViewHandlerGenerator

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.search.definition.MdcSearchViewHandlerGenerator.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewHandlerGeneratorImpl. The following items can be configured.

Item Value Description

showSystemProperty

boolean

Output System property when auto-generated.

systemProperties

SectionProperty,Multiple

System property. The basic item name and version control items (startDate, endDate) are excluded.

systemPropertyDisplayPosition

SectionDisplayPosition

Display position of the system property. Specify enum value of SystemPropertyDisplayPosition. Specify one of the following:

TOP

Displayed at the top of the search condition.

BOTTOM

Displayed at the end of the search condition.

The default value is TOP.

excludeOidWhenCustomOid

boolean

Hide OIDs if you have customized them.

useUserPropertyEditor

boolean

cUse UserPropertyEditor for createBy, updateBy, lockedBy. When using the UserPropertyEditor, the User’s name is displayed instead of the OID.

SectionProperty

This is a setting related to whether or not to display each system property. The following items can be configured.

Item Value Description

propertyName

String

Property name.

displayCondition

boolean

Whether to display with search conditions.

displayResult

boolean

Whether to display in search results.

SearchController

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.search.search.SearchController.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.search.SearchControllerImpl. There are no items that can be set.

SearchSelectListController

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.search.select.SearchSelectListController.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.search.SearchSelectListControllerImpl. There are no items that can be set.

DeleteListController

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.search.delete.DeleteListController.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.search.DeleteListControllerImpl. There are no items that can be set.

TrashController

Please specify the implementing class of org.iplass.mtp.mdc.view.entityview.trash.TrashController.

As standard implementation, we provided the class:org.iplass.mtp.impl.mdc.view.entityview.search.TrashControllerImpl. There are no items that can be set.

Example
<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">
        <!-- Output System Properties -->
        <property name="showSystemProperty" value="false" />
        <!-- System Properties to Output -->
        <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>
        <!-- Display position of System Properties TOP or BOTTOM-->
        <property name="systemPropertyDisplayPosition" value="BOTTOM" />
        <!-- Hide OIDs if you have customized OIDs -->
        <property name="excludeOidWhenCustomOid" value="true" />
        <!-- Use UserPropertyEditor for createBy, updateBy, lockedBy -->
        <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

A service for managing resource bundles.

Interface Name

org.iplass.mtp.impl.message.MessageService

Implementing Class Name

org.iplass.mtp.impl.message.MessageService

Settings of MessageService

MessageService can be configured with the following items.

Configurable Items
Item Value Description

resourceBundle

ResourceBundleConfig, Multiple

Set the ResourceBundleConfig here.

ResourceBundleConfig

Please specify org.iplass.mtp.impl.message.ResourceBundleConfig to the class.

As the standard implementation, org.iplass.mtp.impl.query.QuerySyntaxRegister are provided. The following items can be configured.

Item Value Description

baseBundleNamePattern

String

Bundle name pattern.

formats

String, Multiple

File format. When mtp.message is specified, Message definition is handled as a resource bundle.

fallbackToSystemLocale

boolean

Whether to fall back the system locale when searching for resource bundles.

Example

<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

This is the service to manage metadata.

Interface Name

org.iplass.mtp.impl.metadata.MetaDataRepository

Implementing Class Name

org.iplass.mtp.impl.metadata.MetaDataRepository

Settings of MetaDataRepository

The metadata can be configured with the following items.

Configurable Items
Item Value Description

resourcePath

String, Multiple

The path of the resource file that defines the metadata in XML.

filePath

String, Multiple

The path of the file that defines metadata in XML.

annotatedClass

String, Multiple

Java class with metadata defined by annotation. MetaDataSeeAlso, CommandClass, AsyncCommand, AsyncCommands, ActionMapping, ActionMappings, Template, Templates, WebApi, WebApis, these annotations are targets.

tenantLocalStore

MetaDataStore

MetaDataStore for managing tenant local metadata.

SharedStore

MetaDataStore

MetaDataStore for managing metadata shared across multiple tenants.

MetaDataStore

Provides a mechanism to manage various metadata.

Please specify the implementing class of org.iplass.mtp.impl.metadata.MetaDataStore.

As the standard implementations, these MetaDataStore are provided.

AnnotationMetaDataStore

Reads metadata from annotation of Java class specified in annotatedClass of MetaDataRepository.

If the Java class annotation is MetaDataSeeAlso, the Java class annotation specified in MetaDataSeeAlso is read. For other annotations, create metadata corresponding to the annotation from the class specified in annototatableMetaDataFactory.

Beware that it is read-only and cannot register/update/delete metadata.

Please specify org.iplass.mtp.impl.metadata.annotation.AnnotationMetaDataStore to the class.

Item Value Description

annotatableMetaDataFactory

AnnotatableMetaDataFactory, Multiple

The class to load the annotation.

XmlResourceMetaDataStore

Metadata is read from the XML file in the class path specified in resourcePath of MetaDataRepository. Similarly, it will also read the XML file data from the filePath.

Beware that it is read-only and cannot register/update/delete metadata.

Please specify org.iplass.mtp.impl.metadata.xmlresource.XmlResourceMetaDataStore to the class. There is no configurable items for this class.

RdbMetaDataStore

This item will manage metadata using a database. MetaDataRepository’s tenantLocalStore is the default setting, and the metadata added/edited by each tenant is managed in the database.

Please specify org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore to the class. There is no configurable items for this class.

CompositeMetaDataStore

The system can manage metadata by switching MetaDataStore for each type.

It is defined in the service-config of blank project(but is commented out). When performing metadata version control on the source control server, please uncomment it. Except for some special metadata, it can be managed as a local file.

Please specify org.iplass.mtp.impl.metadata.composite.CompositeMetaDataStore to the class.

Item Value Description

defaultStoreClass

String

The class name of the default MetaDataStore class. It is a store that manages metadata other than the metadata specified in pathMapping.

pathMapping

MetaDataStorePathMapping, Multiple

Metadata managed by MetaDataStore different from defaultStoreClass.

store

MetaDataStore, Multiple

Class specified in defaultStoreClass and pathMapping store.

XmlFileMetaDataStore

Manage metadata on an XML file basis.

When specifying a relative path, set the working directory to the project root directory in the Eclipse Tomcat startup configuration argument tab.

${workspace_loc:mtp-blank}

Please specify org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore to the class.

Item Value Description

rootPath

String

The root path where the metadata is stored.

fileStorePath

String

Storage location of tenant metadata.

groovySourceStorePath

String

The storage location for UtilityClass Groovy source files. If not specified, it will be saved in fileStorePath.

localTenantId

int

Managed tenant ID.

suffix

String

Set the extension type of the metadata file. The default is ".xml".

VersioningXmlFileMetaDataStore

Manage metadata on an XML file basis. Metadata is assigned a version and generation management is performed.

Please specify org.iplass.mtp.impl.metadata.xmlfile.VersioningXmlFileMetaDataStore to the class.

Item Value Description

fileStorePath

String

Specify the location to store tenant metadata.

versionFormat

String

Specify the format of the version which will be attached to the metadata file name. If not specified, the default will be 000.

suffix

String

Set the extension type of the metadata file. The default is ".xml".

TypeConversionMetaDataStore

It is a mechanism to convert metadata provided by old modules to the current module and make it available.

Please specify org.iplass.mtp.impl.metadata.typeconversion.TypeConversionMetaDataStore to the class.

Item Value Description

store

MetaDataStore

Specify the MetaDataStore that manages the metadata to be converted.

converters

TypeConverter , Multiple

A converter that performs metadata type conversion.

AnnotatableMetaDataFactory

This factory will create the metadata from annotations.

Please specify the implementing class of org.iplass.mtp.impl.metadata.annotation.AnnotatableMetaDataFactory to the class.

As the standard implementations, the following AnnotatableMetaDataFactory will be provided.

MetaCommandClassFactory

It reads CommandClass annotation from the Command.

Please specify org.iplass.mtp.impl.command.MetaCommandClassFactory to the class. There is no configurable items.

MetaAsyncCommandFactory

It reads AsyncCommand annotation from Command.

Please specify org.iplass.mtp.impl.command.async.MetaAsyncCommandFactory to the class. There is no configurable items.

MetaAsyncCommandsFactory

It reads AsyncCommands annotation from Command.

Please specify org.iplass.mtp.impl.command.async.MetaAsyncCommandsFactory to the class. There is no configurable items.

MetaActionMappingFactory

It reads ActionMapping annotation from Command.

Please specify org.iplass.mtp.impl.web.actionmapping.MetaActionMappingFactory to the class. There is no configurable items.

MetaActionMappingsFactory

It reads ActionMappings annotation from Command.

Please specify org.iplass.mtp.impl.web.actionmapping.MetaActionMappingsFactory to the class. There is no configurable items.

MetaTemplateFactory

It reads Template annotation from Command.

org.iplass.mtp.impl.web.template.MetaTemplateFactory. There is no configurable items.

MetaTemplatesFactory

It reads Templates annotation from Command.

org.iplass.mtp.impl.web.template.MetaTemplatesFactory. There is no configurable items.

MetaWebApiFactory

It read WebApi annotation from Command.

Please specify org.iplass.mtp.impl.webapi.MetaWebApiFactory to the class. There is no configurable items.

MetaWebApisFactory

It reads WebApis annotation from Command.

Please specify org.iplass.mtp.impl.webapi.MetaWebApisFactory to the class. There is no configurable items.

MetaDataStorePathMapping

Used when using MetaDataStore other than defaultStoreClass in CompositeMetaDataStore. Map the metadata specified by path Prefix and the MetaDataStore specified by store.

Please specify org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMappin to the class.

Item Value Description

pathPrefix

String

The prefix of the metadata.

store

String

The class name of the store that manages the metadata specified by pathPrefix.

TypeConverter

This is the interface to convert the new and old metadata.

Please specify the implementing class of org.iplass.mtp.impl.metadata.typeconversion.TypeConverter to the class.

Example
<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 ■ -->
    <!--
        Specify the storage location for tenant metadata. You can specify a different destination for UtilityClass Groovy source files.
        When specifying a relative path, set the working directory as the project root directory in the Tomcat startup configuration of Eclipse.
        (Example: ${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>
     -->

    <!-- Using WebAPI(old Metadata) as WebApi(new Metadata) -->
    <!--
    <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

This is a service to collect metrics and link to monitoring systems. The module that uses Micrometer is provided in the standard.
For more information on the metrics that can be collected, see Supported Metrics in the Developer’s Guide

Interface Name

org.iplass.mtp.impl.micrometer.MicrometerService

Implementing Class

org.iplass.mtp.impl.micrometer.MicrometerService

The settings of MicrometerService

MicrometerService can be configured with the following items.

Configurable Items
Item Value Description

enableEntityMetrics

boolean

Specify whether to record the latency and processing count of CRUD operations of Entity as metrics. The default value is true.
To actually collect the metrics, you need to add the Micrometer module’s EntityEventMetricsInterceptor to the interceptor of the EntityService (it is added by default).

entityConfig

TimerConfig

The histograms and percentiles setting for the latency metrics of the Entity’s CRUD operations.

enableActionLatencyMetrics

boolean

Specify whether to record the latency and number of calls of the Action as a metric. The default value is true.
To actually collect the metrics, you need to add the Micrometer module’s ActionMetricsInterceptor to the interceptor of the ActionMappingService (it is added by default).

actionConfig

TimerConfig

The histograms and percentiles setting for the metrics of the Action Latency.

enableWebApiLatencyMetrics

boolean

Specify whether to record the latency and number of calls of the WebAPI as metrics. The default value is true.
To actually collect the metrics, you need to add the Micrometer module WebApiMetricsInterceptor to the InterceptorService webApi, soap (it is added by default).

webApiConfig

TimerConfig

The histograms and percentiles setting for the metrics of the WebAPI Latency.

enableSqlExecutionMetrics

boolean

Specify whether to record the number of times SQL is executed as a metric when calling Action or WebAPI. The default value is true.
To actually collect the metrics, you need to add the Micrometer module’s ActionMetricsInterceptor to the interceptor of the ActionMappingService ,and the Micrometer module WebApiMetricsInterceptor to the InterceptorService webApi, soap (it is added by default).

sqlConfig

DistributionSummaryConfig

The histograms and percentiles setting for the metrics of the numberof times SQL is executed.

enableHttpClientMetrics

boolean

Specify whether to record the request duration and number of requests of each Http Request in HttpClient and Http connection pool statistics as metrics. The default value is true.
To actually collect metrics, you need to specify the Micrometer module MicrometerHttpClientBuilderFactory in the httpClientBuilderFactory of the target HttpClientConfig.

enableCacheStoreMetrics

boolean

Specify whether to record the CacheStore size and the number of hits/misses (Query cache and ActionContent cache only) as metrics. The default value is true.
To actually collect the metrics, you need to specify the target CacheStore in the wrappedStore of the MetricsCacheStoreFactory in the Micrometer module (by default, enable metrics collection for the default CacheStore defined inside the infrastructure).

enableAuthenticationMetrics

boolean

Specify whether to record the number of successful and failed authentication attempts as metrics. The default value is true.
To actually collect the metrics, the loggers of the AuthLoggerService must include the Micrometer module AuthenticationEventMetrics (enabled by default, along with EnterpriseSlf4jAuthLogger).

enableAsyncMetrics

boolean

Specify whether to record the number of successful/unsuccessful asynchronous execution, the number of timeout, execution time as metrics. The default value is true.
To actually collect the metrics, the workerFactory of the RdbQueueService must include the Micrometer module MetricsWorkerFactory.

enableS3Metrics

boolean

Specify whether to record the request duration and number of requests of AWS S3 as metrics. The default value is true.
To actually collect the metrics, the binaryStore of the LobStoreService must include the Micrometer module MetricsS3LobStore.

enableMailMetrics

boolean

Specify whether to record the number of successful/unsuccessful attempts and execution time of the mail transmission events as metrics. The default value is true.
To actually collect the metrics, the listener of the MailService must include the Micrometer module MetricsSendMailListener.

enablePushMetrics

boolean

Specify whether to record the number of successful/unsuccessful attempts and execution time of the push transmission events as metrics. The default value is true.
To actually collect the metrics, the listener of the PushNotificationService must include the Micrometer module MetricsPushNotificationListener.

enableSmsMetrics

boolean

Specify whether to record the number of successful/unsuccessful attempts and execution time of the SMS transmission events as metrics. The default value is true.
To actually collect the metrics, the listener of the SmsService must include the Micrometer module MetricsSendSmsMailListener.

meterBinder

MeterBinder, multiple

The Binder class that registers one or more metrics.

commonTags

String, in format of Map

Tags that are commonly assigned to all metrics, and can be specified in format of Map.

actionPathResolver

PathResolver, multiple

Resolver class for resolving paths that are tied to Action metrics as values of uri and uri_method tags.

webApiPathResolver

PathResolver, multiple

Resolver class for resolving paths that are tied to WebAPI metrics as values of uri and uri_method tags.

customTagActionPathResolver

PathResolver, in format of Map

The tag and PathResolver class that resolves that value can be specified to Action metrics in format of Map by custom.

customTagWebApiPathResolver

PathResolver, in format of Map

The tag and PathResolver class that resolves that value can be specified to WebAPI metrics in format of Map by custom.

customizerClass

MeterRegistryCustomizer

This can be specified when you want to write your own logic to customize the metrics settings.

meterRegistryFactory

MeterRegistryFactory

The Factory class that generates a MeterRegistry that manages and holds metrics.

TimerConfig

Please specify org.iplass.mtp.impl.micrometer.metrics.TimerConfig to the class.

Histograms and percentiles settings for metrics that record the latency or frequency of events.
The following items can be configured. For details on each item, please see Histograms and percentiles.

Item Value Description

publishPercentiles

double, multiple

Settings for publishing the percentile values calculated by the application.

publishPercentileHistogram

boolean

If true, publish a histogram suitable for computing aggregable (across dimensions) percentile approximations. Only ships metrics that are within the range set by minimumExpectedValue and maximumExpectedValue.

maximumExpectedValue

double

The maximum value of the range used to control the number of buckets targated by the histogram.

minimumExpectedValue

double

The minimum value of the range used to control the number of buckets targated by the histogram.

serviceLevelObjectives

long, multiple

Publish a cumulative histogram with buckets defined by SLOs.

DistributionSummaryConfig

Please specify org.iplass.mtp.impl.micrometer.metrics.DistributionSummaryConfig to the class.

Histograms and percentiles settings for metrics that record track the distribution of events.
The following items can be configured. For details on each item, please see Histograms and percentiles.

Item Value Description

publishPercentiles

double, multiple

Settings for publishing the percentile values calculated by the application.

publishPercentileHistogram

boolean

If true, publish a histogram suitable for computing aggregable (across dimensions) percentile approximations. Only ships metrics that are within the range set by minimumExpectedValue and maximumExpectedValue.

maximumExpectedValue

double

The maximum value of the range used to control the number of buckets targated by the histogram.

minimumExpectedValue

double

The minimum value of the range used to control the number of buckets targated by the histogram.

serviceLevelObjectives

double, multiple

Publish a cumulative histogram with buckets defined by SLOs.

EntityEventMetricsInterceptor

Please specify org.iplass.mtp.impl.micrometer.metrics.entity.EntityEventMetricsInterceptor to the class.

This is an interceptor that records the latency and execution count of Entity operations as metrics. This is added by default when the Micrometer module is applied. The following items can be configured.

Item Value Description

provider

EntityEventMetricsTagsProvider

A class that implements org.iplass.mtp.impl.micrometer.metrics.entity.EntityEventMetricsTagsProvider. This can be specified if you want to customize the tags that are given to metrics. By default, org.iplass.mtp.impl.micrometer.metrics.entity.DefaultEntityEventMetricsTagsProvider is used.

MicrometerHttpClientBuilderFactory

Please specify org.iplass.mtp.impl.micrometer.metrics.httpclient.MicrometerHttpClientBuilderFactory to the class.

This is a customized HttpClientBuilderFactory that records the request time and count of each Http request and Http connection pool statistics for the target HttpClient as metrics.
This is configurable when the Micrometer module is added to the dependency. There are no configurable items.

MeterBinder

Please specify the implementation class of io.micrometer.core.instrument.binder.MeterBinder to the class (multiple classes can be specified).

By default, the following MeterBinder included in the core module of the Micrometer is specified. There are no configurable items.

  • 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

In addition, the following MeterBinder are provided as standard.

TomcatMeterBinder

Please specify org.iplass.mtp.impl.micrometer.metrics.tomcat.TomcatMeterBinder to the class.

This is a MeterBinder that registers metrics such as Tomcat threads, sessions, and total number of requests. There are no configurable items.

TomcatDbcp2MeterBinder

Please specify org.iplass.mtp.impl.micrometer.metrics.jdbc.tomcatdbcp2.TomcatDbcp2MeterBinder to the class.

This is a MeterBinder that registers metrics related to the Tomcat dbcp2 (org.apache.tomcat.dbcp.dbcp2) connection pool. The following items can be configured.

Item Value Description

poolName

String

Connection Pool name. The default value is "mtpPool".

CommonsDbcp2MeterBinder

Please specify org.iplass.mtp.impl.micrometer.metrics.jdbc.commonsdbcp2.CommonsDbcp2MeterBinder to the class.

This is a MeterBinder that registers metrics related to the Commons dbcp2(org.apache.commons.dbcp2) connection pool. The following items can be configured.

Item Value Description

poolName

String

Connection Pool name. The default value is "mtpPool".

HikariCPMeterBinder

Please specify org.iplass.mtp.impl.micrometer.metrics.jdbc.hikaricp.HikariCPMeterBinder to the class.

This is a MeterBinder that registers metrics about HikariCP’s connection pool. There are no configurable items.

PathResolver

Please specify the implementation class of org.iplass.mtp.impl.micrometer.metrics.web.PathResolver to the class (multiple classes can be specified).

This is a Resolver class for resolving a Path that is tied to an Action and WebAPI metrics as a URI tag. Please write the logic for resolving the Path from the RequestContext.

Call PathResolver#resolve in the order defined in actionPathResolver (webApiPathResolver), and tie the returned result to the URI tag when a non-null result is returned. If the result of the last call to PathResolver#resolve is null, only the Action name (WebAPI name) will be tied to the URI tag by default (SubPath will not be included).

And call PathResolver#resolve in the order defined in customTagActionPathResolver (customTagWebApiPathResolver), and tie the returned result to the specified tag by custom when a non-null result is returned.

The following PathResolver is defined by default.

DefaultActionPathResolver

Please specify org.iplass.mtp.impl.micrometer.metrics.web.action.DefaultActionPathResolver to the class.

This is a Resolver class that resolves the Path of a standard GEM Action. Returns "Action name + definition name" if the definition name is specified in the parameter mapping. There are no configurable items.

DefaultWebApiPathResolver

Please specify org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiPathResolver to the class.

This is a Resolver class that resolves the path of GEM standard WebAPI and Entity CRUD API. There are no configurable items.

  • For the GEM standard WebAPI, if the definition name is specified in the parameter mapping, "WebAPI name + definition name" is returned.

  • For Entity CRUD API, if SubPath exists, return "WebAPI name + the first path of SubPath".

ActionHierarchicalPathResolver

Please specify org.iplass.mtp.impl.micrometer.metrics.web.action.ActionHierarchicalPathResolver to the class.

About the path of a standard GEM Action, this is a Resolver class that resolves the path that specifies the depth of the hierarchy. Specify depth to specify the hierarchy.
For example, if uri is gem/generic/search/view/test and depth is 2, the value will be gem/generic.
The following items can be configured.

Item Value Description

depth

int

Depth to specify the hierarchy. Specify a value greater than or equal to 1.

WebApiHierarchicalPathResolver

Please specify org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiHierarchicalPathResolver to the class.

About the path of GEM standard WebAPI and Entity CRUD API, this is a Resolver class that resolves the path that specifies the depth of the hierarchy. Specify depth to specify the hierarchy.
For example, if uri is gem/workflow/getUserTaskListParts and depth is 2, the value will be gem/workflow.
The following items can be configured.

Item Value Description

depth

int

Depth to specify the hierarchy. Specify a value greater than or equal to 1.

MeterRegistryCustomizer

Please specify your custom implementation of org.iplass.mtp.impl.micrometer.MeterRegistryCustomizer to the class.

You can write the logic for customizing the metrics settings in the org.iplass.mtp.impl.micrometer.MeterRegistryCustomizer implementation class.

MeterRegistryFactory

Please specify the implementation class of org.iplass.mtp.impl.micrometer.registry.MeterRegistryFactory to the class.

The following MeterRegistryFactory are provided in the standard.

ElasticMeterRegistryFactory

Please specify org.iplass.mtp.impl.micrometer.registry.elastic.ElasticMeterRegistryFactory to the class.

Factory class of io.micrometer.elastic.ElasticMeterRegistry that supports Elasticsearch. To specify this class, please add io.micrometer:micrometer-registry-elastic to a runtime dependency. The following items can be configured.

Item Value Description

configMap

String, in format of Map

Configuration parameters for ElasticMeterRegistry. The main settings are as follows.

  • host : Elasticsearch Host.

  • index : The index where the metrics are stored (default value is "micrometer-metrics").

  • step : Metrics transmission interval (default value is "1m").

For details of all the possible settings, please see JavaDoc of the ElasticConfig.

httpSender

HttpSender

A Class that controls how perform Http calls.

HttpSender

Please specify the implementation class of io.micrometer.core.ipc.http.HttpSender to the class.

The following HttpSender is provided in the standard. If not specified, HttpUrlConnectionSender will be used.

AWSHttpSender

Please specify org.iplass.mtp.impl.aws.micrometer.AWSHttpSender to the class.

This is an implementation class of HttpSender that supports Amazon OpenSearch Service. The access key, secret key, and AWSClient side settings can be configured in AWSSetting. The following items can be configured.

Item Value Description

serviceName

String

Service name. The default value is "es".
If you are using Amazon OpenSearch Service, do not change the default value.

region

String

Region of Amazon OpenSearch Service.

HttpUrlConnectionSender

The class is io.micrometer.core.ipc.http.HttpUrlConnectionSender.

This is the implementation class of HttpSender used by default. Please specify the parameters to configMap in Map format. The following items can be configured.

Item Value Description

connectTimeoutMs

String

Connect timeout (in milliseconds) when establishing a connection. The default value is 1000 (1 second).

readTimeoutMs

String

Read timeout (in milliseconds) when receiving a response The default value is 10000 (10 second).

proxyHost

String

Proxy host for http communication.

proxyPort

int

Proxy port for http communication.

JmxMeterRegistryFactory

Please specify org.iplass.mtp.impl.micrometer.registry.jms.JmxMeterRegistryFactory to the class.

Factory class of io.micrometer.jmx.JmxMeterRegistry that supports JMX. To specify this class, please add io.micrometer:micrometer-registry-jmx to a runtime dependency. The following items can be configured.

Item Value Description

configMap

String, in format of Map

Configuration parameters for JmxMeterRegistry. The main settings are as follows.

  • domain : The JMX domain to publish the metrics to (default value is "metrics").

For details of all the possible settings, please see JavaDoc of the JmxConfig.

tagsAsPrefix

String, multiple

This can be specified to give prefix to all metrics in common.

PrometheusMeterRegistryFactory

Please specify org.iplass.mtp.impl.micrometer.registry.prometheus.PrometheusMeterRegistryFactory to the class.

Factory class of io.micrometer.prometheus.PrometheusMeterRegistry that supports Prometheus. To specify this class, please add io.micrometer:micrometer-registry-prometheus to a runtime dependency. The following items can be configured.

Item Value Description

configMap

String, in format of Map

Configuration parameters for PrometheusMeterRegistry. The main settings are as follows.

  • step : The step interval used to calculate statistics such as maximum and average. To get the most out of the statistics, set the step interval to be close to the Prometheus scrape interval (The default is 1 minute).

For details of all the possible settings, please see JavaDoc of the PrometheusConfig.

CloudWatchMeterRegistryFactory

Please specify org.iplass.mtp.impl.aws.micrometer.registry.cloudwatch.CloudWatchMeterRegistryFactory to the class.

Factory class of io.micrometer.cloudwatch.CloudWatchMeterRegistry that supports Amazon CloudWatch. This class can be specified when an AWS module is added to a dependency. To specify this class, please add io.micrometer:micrometer-registry-cloudwatch to a runtime dependency.
The access key, secret key, and AWSClient side settings can be configured in AWSSetting. The following items can be configured.

Item Value Description

configMap

String, in format of Map

Configuration parameters for CloudWatchMeterRegistry. The main settings are as follows.

  • region : CloudWatch Region.

  • namespace : Namespace to store the submitted custom metrics (default value is "micrometer-namespace").

  • step : Metrics transmission interval (default value is "1m").

For details of all the possible settings, please see JavaDoc of the CloudWatchConfig.

NewRelicMeterRegistryFactory

Please specify org.iplass.mtp.impl.micrometer.registry.newrelic.NewRelicMeterRegistryFactory to the class.

Factory class of com.newrelic.telemetry.micrometer.NewRelicRegistry that supports New Relic. To specify this class, please add com.newrelic.telemetry:micrometer-registry-new-relic to a runtime dependency.
The following items can be configured.

Item Value Description

configMap

String, in format of Map

Configuration parameters for NewRelicRegistry. The main settings are as follows.

  • apiKey : API key.

  • serviceName : The service name.

  • step : Metrics transmission interval (default value is "1m").

For details of all the possible settings, please see JavaDoc of the NewRelicRegistryConfig.

httpSender

HttpSender

A Class that controls how perform Http calls.

LoggingMeterRegistryFactory

Please specify org.iplass.mtp.impl.micrometer.registry.logging.LoggingMeterRegistryFactory to the class.

Factory class of io.micrometer.core.instrument.logging.LoggingMeterRegistry that supports logging. For logging, please specify the logger name as io.micrometer.core.instrument.logging.LoggingMeterRegistry and the log level as INFO in logback.xml.
The following items can be configured.

Item Value Description

configMap

String, in format of Map

Configuration parameters for LoggingMeterRegistry. The main settings are as follows.

  • step : Metrics transmission interval (default value is "1m").

For details of all the possible settings, please see JavaDoc of the LoggingRegistryConfig.

Example
<service>
    <interface>org.iplass.mtp.impl.micrometer.MicrometerService</interface>

    <!-- ■ Custom Metrics Settings ■ -->
    <!-- Latency of Entity CRUD operations -->
    <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>

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

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

    <!-- Number of times SQL is executed for Action and WebAPI -->
    <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>

    <!-- Http request count, latency, and http connection pool metrics in HttpClient -->
    <property name="enableHttpClientMetrics" value="true" />

    <!-- CacheStore size, number of hits/Miss Count -->
    <property name="enableCacheStoreMetrics" value="true" />

    <!-- Number of success/failure authentication attempts -->
    <property name="enableAuthenticationMetrics" value="true" />

    <!-- Number of success/failure asynchronous execution, number of timeout, execution time -->
    <property name="enableAsyncMetrics" value="true" />

    <!-- Execution time and request count of S3 -->
    <property name="enableS3Metrics" value="true" />

    <!-- Number of success/failure and execution time of Mail -->
    <property name="enableMailMetrics" value="true" />

    <!-- Number of success/failure and execution time of Push -->
    <property name="enablePushMetrics" value="true" />

    <!-- Number of success/failure and execution time of 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 ■ -->
    <!--
        Please remove the comment-out for the monitoring system you want to use, and add/change the properties as needed.
    -->
    <!-- for Elastic -->
    <!--
    <property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.elastic.ElasticMeterRegistryFactory">
    -->
        <!-- ■ If want to use Amazon OpenSearch Service, uncomment the following and change the properties. ■ -->
        <!--
        <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

A service for managing the functions of the OAuth2.0 Authorization Server and OpenID Connect Provider.

Interface Name

org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService

Implementing Class

org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService

The settings of OAuthAuthorizationService

OAuthAuthorizationService can be configured with the following items.

Configurable Items
Item Value Description

paramStateRequired

boolean

Set whether the state parameter is required for Authorization Requests.
The default is true.

paramNonceRequired

boolean

Set whether the nonce parameter is required for Authorization Requests.
The default value is false.

forcePKCE

boolean

Set whether the PKCE (Proof Key for Code Exchange by OAuth Public Clients) is required for Public Client.
The default value is true.

forceS256ForCodeChallengeMethod

boolean

Set whether to force the PKCE CodeChallengeMethod to S256.
The default value is true.

defaultConsentTemplateName

String

Specify the template name of the default authorization screen of OAuth scope.

authorizationCodeStore

AuthorizationCodeStore

The settings of AuthorizationCodeStore.

accessTokenStore

OAuthAccessTokenStore

The settings of OAuthAccessTokenStore.

jwtProcessor

JwtProcessor

The settings of JwtProcessor.

jwtKeyStore

JwtKeyStore

The settings of JwtKeyStore.

subjectIdHashAlgorithm

String

Specifies the hashing algorithm when the subject id of resource owner is disclosed to Client.

subjectIdHashAlgorithm

String

Set the salt value when hashing the subject id.

idTokenLifetimeSeconds

long

Specify the expiration date (seconds) of the issued ID Token.
If not specified, the default value is 3600.

AuthorizationCodeStore

Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.code.AuthorizationCodeStore to the class.

As the standard implementation, the following AuthorizationCodeStore are provided.

CacheAuthorizationCodeStore

Please specify org.iplass.mtp.impl.auth.oauth.code.CacheAuthorizationCodeStore to the class.

This item will manage the authentication code with CacheStore. The following options can be configured.

Item Value Description

secureRandomGeneratorName

String

Specify the string generator for the authentication code defined by SecureRandomService. If it was not specified, the SecureRandomGenerator from oauthAuthorizationCodeGenerator will be used.

cacheStoreName

String

Specify the name of the CacheStore defined in CacheService. If not specified, the default value is mtp.oauth.codeStore.

In a cluster environment, please use the CacheStoreFactory that can refer to the same cache from multiple AP servers such as RedisCacheStoreFactory.

timeToLive

long

Specify the expiration date (milliseconds) of the authentication code. If not specified, the default value is 180000 (3 minutes).

OAuthAccessTokenStore

Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.token.OAuthAccessTokenStore to the class.

The following OAuthAccessTokenStore is provided as standard.

OpaqueOAuthAccessTokenStore

Please specify org.iplass.mtp.impl.auth.oauth.token.opaque.OpaqueOAuthAccessTokenStore to the class. The format of AcessToken is Opaque (Handle) format. AcessToken is stored using AuthTokenStore.

For OpaqueOAuthAccessTokenStore, One AcessToken is issued for each Client × ResourceOwner.

The following items can be configured.

Item Value Description

authTokenType

String

Specify the type defined in AccessTokenHandler. If not specified, the default value is OAT. Please refer to the description of AuthTokenService for AccessTokenHandler.

seriesHashAlgorithm

String

Set the hash algorithm for generating a key used to uniquely identify an AccessToken. If not specified, the default value is SHA-256.

seriesHashSalt

String

Set the Salt value used for hashing when generating a key used to uniquely identify an AccessToken. It is recommended to specify a different random character string for each environment.

tokenCreationStrategy

TokenCreationStrategy

Set the TokenCreationStrategy.

RemoteOAuthAccessTokenStore

Please specify org.iplass.mtp.impl.auth.oauth.token.remote.RemoteOAuthAccessTokenStore to the class.

An implementation of TokenStore that calls OAuth 2.0 Token Introspection (RFC7662) on the backend. An iPLAss instance of this setting is applied and will operates as a Resource Server. Obtain an AccessToken from the remotely activated Authorization Server and verify it.

RemoteOAuthAccessTokenStore is read-only. Since the Authorization Server functionality is not implemented, a runtime exception is thrown when calling a method that updates AccessToken.

The following items can be configured.

Item Value Description

introspectionEndpointUrl

String

Specify Introspection Endpoint URL. If the Authorization Server is iPLAss, and it is a multi-tenant application, the endpoint will be different for each tenant. In that case, it is possible to embed the tenant name in the URL with the variable name $ {tenantName}.

Example: https://localhost:8080/mtp/${tenantName}/api/oauth/introspect

authenticationMethod

ClientAuthenticationMethod

Specify the Introspection Endpoint Client (Resource Server) authentication method. Specify one of the following:

CLIENT_SECRET_BASIC

Client authentication via BASIC.

CLIENT_SECRET_POST

Client authentication via POST parameters (client_id, client_secret)

NONE

Do not grant parameters for Client authentication

If not specified, the default value is CLIENT_SECRET_BASIC.

resourceServerId

String

Specify the ID of Resource Server issued from Authorization Server.

resourceServerSecret

String

Specify the Secret of Resource Server issued from Authorization Server.

tenantValidationType

TenantValidationType

Specify the tenant verification method. Please choose one of the following:

NONE

In the situation when Authorization Server is not iPLAss server or when tenant verification is not required.

ID

When the Authorization Server is iPLAss, the system will obtain the tenant ID from the response of Introspection Endpoint and verify if it matches the ResourceServer tenant. It is assumed to be used when the DB and tenant information are shared between Authorization Server and Resource Server.
The tenant ID must be contained in the response with the parameter name tenant_id.

NAME

When the Authorization Server is iPLAss, the system will get the tenant name from the response of Introspection Endpoint and verify if it matches the ResourceServer tenant name. When DB and tenant information are separated between Authorization Server and Resource Server (divided as a set of separate micro-services), It is very difficult to compare the tenant IDs in such case, so the tenant names are utilized to match up and the tenants with same tenant name are regarded as the same tenant.
The tenant name must be contained in the response with the parameter name tenant_name.

If not specified, the default value is NAME.

reloadUser

boolean

Control the acquisition method of user information linked to AccessToken.

If true

The sub value in the response is regarded as oid, and User entity is searched from Resource Server. If the User does not exist, it is denied.

If false

The user information will be retrieved from the response.
If the JSON representation of the User entity is stored in the resource_owner in the response, it will be used.
If it is not stored in resource_owner, the value of sub is set to oid, accountId, and the value of username is set to name as user information.

If nothing specified, the default value is false.

httpClientConfig

HttpClientConfig

Settings related to HTTP connection when calling WebApi.

exponentialBackoff

ExponentialBackoff

Set the Exponential backoff when retrying with ExponentialBackoff class properties.

HttpClientConfig

Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.

Item Value Description

proxyHost

String

Host name when proxy is used.

proxyPort

int

Port number when using proxy.

connectionTimeout

int

Timeout limit in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds).

soTimeout

int

Specify socket timeout limit (SO_TIMEOUT) in milliseconds for HTTP communication. The default value is 30000 (30 seconds).

poolingMaxTotal

int

Maximum pool size for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifespan of pooled http connections (milliseconds). The default is unlimited.

httpClientBuilderFactory

HttpClientBuilderFactory

Specify this if you want to create a custom HttpClientBuilder.

HttpClientBuilderFactory

Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.

The following HttpClientBuilderFactory is provided as standard.

ExponentialBackoff

Please specify org.iplass.mtp.impl.http.ExponentialBackoff to the class. The following items can be configured.

Item Value Description

retryIntervalMillis

int

Specifies the retry interval in milliseconds. The default value is 500.

randomizationFactor

double

Specify the random elements when retrying. If set to 0.5, the value specified for retryIntervalMillis will fluctuate in the range of 25%. The default value is 0.5.

multiplier

double

Exponential element of retry interval when retrying. If 1.5 is set to multiplier and retryIntervalMillis is 500, the second retry is 750ms and the third retry is 1125ms. The default value is 1.5.

maxIntervalMillis

int

Maximum retry interval. The default value is 60000 (1 minute).

maxElapsedTimeMillis

int

Maximum retry execution time. If retry process is not successful during this time, retry processing is completed and the results up to that point are returned to the application. The default value is 300000 (5 minutes).

TokenCreationStrategy

Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.token.opaque.TokenCreationStrategy to the class.

As the standard implementation, the following TokenCreationStrategy are provided.

NewTokenCreationStrategy

Please specify org.iplass.mtp.impl.auth.oauth.token.opaque.NewTokenCreationStrategy to the class.

A new AccessToken is generated for each AccessToken acquisition request. When a new AccessToken is generated, the AccessToken previously issued for the Client and ResourceOwner becomes invalid.

SameTokenCreationStrategy

Please specify org.iplass.mtp.impl.auth.oauth.token.opaque.SameTokenCreationStrategy to the class.

When AccessToken acquisition is requested, if there is existing valid AccessToken issued for the Client and ResourceOwner, the same one will be returned. Since the existing AccessToken is returned, the validity period of the AccessToken may be short at the time of acquisition.

For example, when a user has multiple terminals and they are defined as the same Client, it is possible to avoid a situation in which they fighting for a valid AccessToken.

The following items can be configured.

Item Value Description

retryCount

int

It is possible to set the number of retries when AccessToken issuance fails. If not specified, the default value is 0 (do not retry).

retryIntervalMillis

long

Specify the retry interval (in milliseconds) when retrying. If not specified, the default value is 0.

JwtProcessor

Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.jwt.JwtProcessor to the class.

This configure about the generation of JWT (Json Web Token). As the standard implementation, the followingJwtProcessor are provided.

JjwtProcesor

Please specify org.iplass.mtp.impl.auth.oauth.jwt.JjwtProcesor to the class.

We will utilize the JJWT(Java JWT) library to generate JWT. The following items can be configured.

Item Value Description

useRsaSsaPss

boolean

Specify true if RSASSA-PSS is used instead of RSASSA-PKCS1-v1_5 for the RSA-based signature algorithm. The default value is false if not specified.

The JWT signature method is determined as follows according to the encryption key algorithm used for signing.

Key Algorithm Key Size useRsaSsaPss JWT Signature

RSA

over 4096

false

RS512

RSA

over 3072 and under 4096

false

RS384

RSA

over 2048 and under 3072

false

RS256

EC

over 521

*

ES512

EC

over 384 and under 521

*

ES384

EC

over 256 and under 384

*

ES256

RSA

over 4096

true

PS512

RSA

over 3072 and under 4096

true

PS384

RSA

over 2048 and under 3072

true

PS256

JwtKeyStore

Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.jwt.JwtKeyStore to the class.

For signing to JWT, iPLAss supports public key based encryption signatures. It manages the key pairs (public key / private key). As the standard implementation, the followingJwtKeyStore are provided.

SimpleJwtKeyStore

Please specify org.iplass.mtp.impl.auth.oauth.jwt.SimpleJwtKeyStore to the class.

It is a Java Key Store based JwtKeyStore implementation. It has the following features.

  • KeyStore’s alias is set to kid(Key ID)

  • It manages the key valid period using the valid period of the public key certificate stored in the KeyStore

The following items can be configured.

Item Value Description

keyStoreType

String

KeyStore type. The default value is PKCS12 .

keyStoreProvider

String

KeyStore provider. If not specified, the standard provider will be used.

keyStoreFilePath

String

KeyStore resource path (under classpath) or file path (as a file on the OS).

keyStorePassword

String

KeyStore password.

keyPasswordMap

Map format

When assigning a different keyPassword for each individual Key, define it by specifying an alias name for name and a password for value. If keyPasswordMap is not specified, the value of keyStorePassword is used for keyPassword.

keyStoreReloadIntervalMinutes

int

KeyStore reload interval (minutes) can be configured with the following items. If it is not set, it will not be reloaded.

rollOverType

<< JwtKeyRolloverType >>

Key rollover method can be configured with the following items. The default value is OLDER.

rollOverDaysBeforeExpire

long

Number of days to switch when rollOverType is BEFORE_N_DAYS.

JwtKeyRolloverType

Specify the rollover method when the key’s valid period is about to expire. When multiple (new and old) keys are in KeyStore, this is the method to determine which one to use. The validity period of the key is determined by the validity period of the public key certificate.

OLDER

Use a certificate key with a shorter validity period (NotAfter is old) until the validity period expires

NEWER

Use a certificate key with a longer validity period (NotAfter is newer) among certificates that are within the validity period

BEFORE_N_DAYS

switch to rollOverDaysBeforeExpire days before expiration

Example (when Authorization Server and Resource Server are the same instance)
<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>
Example (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

The service to control the behavior of OData Service.

Interface Name

org.iplass.mtp.impl.webapi.odata.ODataService

Implementing Class

org.iplass.mtp.impl.webapi.odata.ODataServiceImpl

The settings of ODataService

The following item can be configured.

Configurable Items
Item Value Description

queryPaging

int

Set the default paging when querying for OData.

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

This is a service for oid numbering. It employs CounterService for numbering. The setting needs to be changed depending on whether or not the RDB sequence numbering function is available. If there is a sequence function (default setting), set RdbSequenceCounterService, If not (MySQL), use CachableRdbTableCounterService.

Interface Name

org.iplass.mtp.impl.counter.CounterService

Implementing Class Name

With Sequence mechanism
org.iplass.mtp.impl.counter.RdbSequenceCounterService
Without Sequence mechanism
org.iplass.mtp.impl.counter.CachableRdbTableCounterService

RdbSequenceCounterService

RdbSequenceCounterService can be configured with the folloiwing items.

Configurable Items
Item Value Description

sequenceNameMap

SequenceNameMap, Multiple

Mapping of numbering unit and numbering table.

SequenceNameMap

Set mapping of numbering unit and numbering table. The following items can be set.

Item Value Description

name

String

The name of the numbering unit.

value

String

RDB sequence name.

Settings of CachableRdbTableCounterService

CachableRdbTableCounterService can be configured with the following items.

Configurable Items
Item Value Description

separateTransaction

boolean

Specify whether to separate the transaction. The default value is false.

retryCount

int

Number of times to retry when the counter fails. The default value is 3.

counterTypeName

String

Define the type of the counter. The default is defaultCounter.

cacheSize

int

Cache size, the default is 20.

Example
<!-- Default Settings -->
<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

This is the service about the one-time authentication for two-step verifications.

Interface Name

org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService

Implementing Class Name

org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService

Settings of OnetimeCodeGeneratorService

The one time code generator can be configured.

Configurable Items
Item Value Description

generator

OnetimeCodeGenerator, Multiple

Settings of one time authentication code generator.

OnetimeCodeGenerator

Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGenerator to the class.

As standard implementation, we provided the class: org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandOnetimeCodeGenerator which will generate one time code for transmission. There is no configurable items for OutOfBandOnetimeCodeGenerator.

OutOfBandOnetimeCodeGenerator

A one-time authentication code generator that generates authentication code to be sent externally. The following items can be configured.

Item Value Description

name

String

Name of the one time authentication code generator.

maxFailureCount

int

The maximum authentication failure count before aborting. the default is 5.

lifetimeSeconds

long

The effective period for the code generated. The default is 180(3 minutes).

store

OnetimeCodeStore

Define how to store the generated code.

sender

OutOfBandSender

Define how to send the generated code.

strategy

GenerateStrategy

Define the generation process of the one time code generator.

OnetimeCodeStore

Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeStore to the class.

The standard implementation are provided. The class org.iplass.mtp.impl.auth.authenticate.onetime.SessionOntimeCodeStore that can store the generated code is provided. SessionOntimeCodeStore does not have configurable items.

OutOfBandSender

Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandSender to the class.

The standard implementations that can send the code are provided. The class via email is org.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSender. The class via SMS is org.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSender.

MailOutOfBandSender

Please specify org.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSender to the class.

The following items can be configured.

Item Value Description

mailTemplate

String

Specify the template of the mails for sending the one time code.

fromAddress

String

The send from address. Set when using an different email address from the address set in the tenant email settings.

SmsOutOfBandSender

Please specify org.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSender to the class.

The following items can be configured.

Item Value Description

smsTemplate

String

Specify the template of the SMS for sending the one time code.

fromPhoneNumber

String

The send from phone number. Use this items when it is required to specify a different number from what you have configured in SmsService.

GenerateStrategy

Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.outofband.GenerateStrategy to the class.

As standard implementation, the class that can generated onetime code in int numbers are provided: org.iplass.mtp.impl.auth.authenticate.onetime.outofband.NumberGenerateStrategy. For NumberGenerateStrategy, the following item can be configured.

Item Value Description

numberOfDigits

int

Define how many digits for the code. The default is 6.

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

The service for managing the functions of OpenID Connect Relying Party.

Interface Name

org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService

Implementing Class Name

org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService

Settings of OpenIdConnectService

OpenIdConnectService can be configured with the following items.

Configurable Items
Item Value Description

allowedClockSkewMinutes

int

Allowable clock skew time. Default value is 0 (minutes).

jwksCacheLifetimeMinutes

int

The cashe time of jwks. Default value is 360 (minutes).

clientSecretType

String

The type of Client Secret. Default value is OIDCCS.

httpClientConfig

HttpClientConfig

Settings of HTTP client.

HttpClientConfig

Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class.

The following items can be configured.

Item Value Description

connectionTimeout

int

Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds).

soTimeout

int

socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds).

poolingMaxTotal

int

Maximum number of pools for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifetime of pooled http connections (milliseconds). The default is unlimited.

proxyHost

String

Proxy server host.

proxyPort

int

Proxy server port number.

httpClientBuilderFactory

HttpClientBuilderFactory

Specify this if you want to create a custom HttpClientBuilder.

HttpClientBuilderFactory

Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.

The following HttpClientBuilderFactory is provided as standard.

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

This is the service to manage the verification process using email and SMS.

Interface Name

org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService

Implementing Class

org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService

The settings of OutOfBandVerificationService

OutOfBandVerificationService can be configured with the following items.

Configurable Items
Item Value Description

verifier

OutOfBandVerifier, Multiple

The settings of the verifier with OutOfBand method.

OutOfBandVerifier

The settings of the verifier with OutOfBand method.

Please specify org.iplass.wam.impl.outofbandverify.OutOfBandVerifier to the class. The following items can be configured.

Item Value Description

name

String

The name of the OutOfBand

outOfBand

OutOfBand

The settings of the OutOfBand

strategy

VerifyStrategy

The settings of the verifying strategy.

store

VerificationStore

Set where to store the target objects.

OutOfBand

Please specify the implementing class of org.iplass.wam.impl.outofbandverify.outofband.OutOfBand to the class.

As the standard implementation, the following OutOfBands are provided.

MailOutOfBand

The OutOfBand using mail services.

Please specify org.iplass.wam.impl.outofbandverify.outofband.MailOutOfBand to the class. There is no configurable items.

SMSOutOfBand

The OutOfBand using SMS services.

Please specify org.iplass.wam.impl.outofbandverify.outofband.SMSOutOfBand to the class. There is no configurable items.

VerifyStrategy

Please specify the implementing class of org.iplass.wam.impl.outofbandverify.strategy.VerifyStrategy to the class.

As the standard implementation, the following VerifyStrategies are provided.

ActivationURLVerifyStrategy

Verify by activation URL.

Please specify org.iplass.wam.impl.outofbandverify.strategy.ActivationURLVerifyStrategy to the class. There is no configurable items.

OnetimeCodeVerifyStrategy

Verify by one-time code.

Please specify org.iplass.wam.impl.outofbandverify.strategy.OnetimeCodeVerifyStrategy to the class. The following items can be configured.

Item Value Description

numberOfDigits

int

Number of digits of the one time code. The default is 6.

VerificationStore

Please specify the implementing class of org.iplass.wam.impl.outofbandverify.store.VerificationStore to the class.

As the standard implementation, the following VerificationStore are provided.

CacheVerificationStore

Save the verification target in the cache.

Please specify org.iplass.wam.impl.outofbandverify.store.CacheVerificationStore to the class. There is no configurable items.

EntityVerificationStore

Save the verification target in Entity.

Please specify org.iplass.wam.impl.outofbandverify.store.EntityVerificationStore to the class. There is no configurable items.

SessionVerificationStore

Save the verification target in the user’s Session.

Please specify org.iplass.wam.impl.outofbandverify.store.SessionVerificationStore to the class. There is no configurable items.

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

This is the service to manage property.

Interface Name

org.iplass.mtp.impl.entity.property.PropertyService

Implementing Class Name

org.iplass.mtp.impl.entity.property.PropertyService

Settings of PropertyService

PropertyService can be configured with the following items.

Configurable Items
Item Value Description

longTextInlineStoreMaxLength

int

Maximum size (in String.length) for storing LongText type strings internally. The default value is 1024. The maximum size set from the beginning of the character string is retained inside the DataStore record without being saved in the LobStore. If the varcharColumnLength defined in StorageSpaceMap of StoreService is less than longTextInlineStoreMaxLength, the StorageSpaceMap setting takes precedence.

remainInlineText

boolean

Whether to store LongText type strings internally for search. The default value is false. However, the part that exceeds the character string length that can be held inside the record will not be searched.

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

This is a service that performs encryption in units of properties.

Interface Name

org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService

Implementing Class Name

org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService

Settings of PropertyEncryptionService

PropertyEncryptionService can be configured with the following items.

Configurable Items
Item Value Description

encryptionSettings

EncryptionSetting, Multiple

Specify how to encrypt. A standard provided class or a custom EncryptionSetting that implements the EncryptionSetting interface. You can roll over encryption logic by defining multiple encryptionSettings for different versions. Newly stored values are encrypted using the last defined encryptionSettings.

cachePrivateKeyInMemory

boolean

Whether to cache secret key in memory. The default value is false.

logEncryptProperty

boolean

Set whether to log the encrypted property with the value before encryption. The default value is true.

encryptValueLogExpression

String

Indicate how the character string is outputted when encrypted. Default will be "***".

EncryptionSetting

It will define how the encryption is executed.

Please specify the implementing class of org.iplass.mtp.impl.properties.extend.crypt.EncryptionSetting.

For our standard, the following EncryptionSetting are provided.

PBKDF2EncryptionSetting

With this, encryption will be processed by PBKDF2 (Password-Based Key Drivation Function).

Please specify org.iplass.mtp.impl.properties.extend.crypt.PBKDF2EncryptionSetting to the class.

Item Value Description

version

String

Version of encryption algorithms. Specify a unique number if multiple encryptionSettings definitions are employed.

keyFactoryAlgorithm

String

Key generation algorithm. The default value is PBKDF2WithHmacSHA256.

keySalt

String

Salt when generating the key. If not specified, the system default value is used.

keyStretch

int

Number of stretches during key generation. The default value is 2048.

cipherAlgorithm

String

Block encryption algorithm. The default value is AES.

keyLength

int

Key length. The default value is 128.

keyPassword

String

The password string from which the key is generated.

KeyStoreEncryptionSetting

With this, the encryption will be processed by KeyStore file.

Please specify org.iplass.mtp.impl.properties.extend.crypt.KeyStoreEncryptionSetting to the class.

Item Value Description

version

String

Version of encryption algorithm settings. Specify a unique number in multiple encryptionSettings definitions.

cipherAlgorithm

String

Block encryption algorithm. The default value is AES.

keyLength

int

Key length. The default value is 128.

keyStoreType

String

The type of keyStore that stores the private key. The default value is JCEKS.

keyStoreFilePath

String

File path of keyStore file.

keyStorePassword

String

The keyStore password.

keyAlias

String

Alias name of the private key stored in keyStore.

keyPassword

String

Password for obtaining the private key stored in keyStore.

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

Since keyPassword and keyStorePassword are confidential information, handle them with care. Use strategy such as tightening the access rights of the configuration file or obfuscating the configuration file to protect the information please.

3.51. PushNotificationService

This service manages push notification template definitions (Metadata) and push notifications for mobile devices. A module using Firebase Cloud Messaging (FCM) is provided as a standard implementation of the push notification service.

Interface Name

org.iplass.mtp.impl.pushnotification.PushNotificationService

Implementing Class Name

org.iplass.mtp.impl.pushnotification.fcm.FCMPushNotificationService

Settings of FCMPushNotificationService

When you want to use FCM, please configure corresponding items for FCMPushNotificationService.

Configurable Items
Item Value Description

authorizationKey

String, Required

Server key for authentication issued by FCM.

enableRetry

boolean

Whether to retry if the FCM call fails with an error that can be retried. The default value is true if not specified.

exponentialBackoff

ExponentialBackoff

This is for the value setting of ExponentialBackOff when retrying with ExponentialBackoff class property.

registrationIdHandler

RegistrationIdHandler

This set the implementation class of RegistrationIdHandler to process the notification when registrationId does not exist or when FCM notifies a existed registrationId. If it is not specified, nothing will be processed.

httpClientConfig

HttpClientConfig

Settings related to HTTP connection when calling WebApi.

listener

PushNotificationListener, Multiple

The listener when processing PushNotification.

dryRun

boolean

If this parameter is set to true when calling FCM, FCM will not actually send the message in real, thus this is for the purpose to test the request. The default value is false.

endpoint

String

The URL of the endpoint that will make the FCM call. If not specified, the default value is https://fcm.googleapis.com/fcm/send.

ExponentialBackoff

Please specify org.iplass.mtp.impl.http.ExponentialBackoff to the class. The following items can be configured.

Item Value Description

retryIntervalMillis

int

Specifies the retry interval in milliseconds. The default value is 500.

randomizationFactor

double

Random element when retrying. If 0.5, the value specified for retryIntervalMillis will fluctuate in the range of 25%. The default value is 0.5.

multiplier

double

Exponential element of retry interval when retrying. If 1.5 and retryIntervalMillis is 500, the second retry is 750ms and the third retry is 1125ms. The default value is 1.5.

maxIntervalMillis

int

Maximum retry interval. The default value is 60000 (1 minute).

maxElapsedTimeMillis

int

Maximum retry execution time. If retry processing is not successful during this time, retry processing is terminated and the results up to that point are returned to the application. The default value is 300000 (5 minutes).

RegistrationIdHandler

Please specify the implementing class of org.iplass.mtp.pushnotification.fcm.RegistrationIdHandler.

As a standard implementation, the simple log: org.iplass.mtp.impl.pushnotification.fcm.LoggingRegistrationIdHandler is provided. LoggingRegistrationIdHandler does not have configurable items.

HttpClientConfig

Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.

Item Value Description

proxyHost

String

Host name for proxy.

proxyPort

int

Port when using proxy.

connectionTimeout

int

Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds).

soTimeout

int

Specify socket timeout (SO_TIMEOUT) in milliseconds for HTTP communication. The default value is 30000 (30 seconds).

poolingMaxTotal

int

Maximum number of pools for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifetime of pooled http connections (milliseconds). The default is unlimited.

httpClientBuilderFactory

HttpClientBuilderFactory

Specify this if you want to create a custom HttpClientBuilder.

HttpClientBuilderFactory

Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.

The following HttpClientBuilderFactory is provided as standard.

PushNotificationListener

Please specify the implementing class of org.iplass.mtp.pushnotification.PushNotificationListener.

As the standard implementation, the following PushNotificationListener are provided.

MetricsPushNotificationListener

Please specify org.iplass.mtp.impl.micrometer.metrics.pushnotification.MetricsPushNotificationListener to the class.

It’s PushNotificationListener with the metric collection function by Micrometer. There are no settings that can be configured.

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

The service to manage the external hints for EQL.

Interface Name

org.iplass.mtp.impl.query.QueryService

Implementing Class Name

org.iplass.mtp.impl.query.QueryService

Settings of QueryService

QueryService can be configured in the following ways.

Configurable Items
Item Value Description

externalHintFile

String

When using the external hint clauses, this specify the location (Or the resource path on classpath) of the property files of the hints.

externalHints

HintComment, Multiple

set external hint name to name, and set the hints to value.

If the property file path is set in externalHintFile, we can specify the key name and the corresponding hint phrase in this way.

hint1=native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_3)')
hint2=native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_1)')
:
:

To use an external hint in EQL, you can read the hint phrase specified in the property file or externalHints by specifying @hint (keyName) in the EQL statement.

EQL Example

Specify @hint in the EQL statement as shown below.

select /*+ @hint(hint1) */ propA, propB, refX.name from HogeEntity where refX.propFuga='piyo'

Inside, the contents of @hint are expanded as follows.

select /*+ native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_3)') */ propA, propB, refX.name from HogeEntity where refX.propFuga='piyo'

You can also obtain the Hint clause as a Java instance by calling the org.iplass.mtp.entity.query.hint.Hint#externalHint (String key) method.

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

This service manages RdbAdapter, which is an interface for various RDBs.

Interface Name

org.iplass.mtp.impl.rdb.adapter.RdbAdapterService

Implementing Class Name

org.iplass.mtp.impl.rdb.adapter.RdbAdapterService

Settings of RdbAdapterService

The settings for RdbAdapter are listed below.

Configurable Items
Item Value Description

adapter

RdbAdapter

Set standard RdbAdapter

Any text string other than "adapter"

RdbAdapter, Multiple

Set other RdbAdapter

RdbAdapter

Please specify the implementing class of org.iplass.mtp.impl.rdb.adapter.RdbAdapter.

As the standard implementation, these adapter are provided:

  • Oracle based org.iplass.mtp.impl.rdb.oracle.OracleRdbAdapter

  • MySQL based org.iplass.mtp.impl.rdb.mysql.MysqlRdbAdapter

  • PostgreSQL based org.iplass.mtp.impl.rdb.postgresql.PostgreSQLRdbAdapter

  • SQL Server based org.iplass.mtp.impl.rdb.sqlserver.SqlServerRdbAdapter

For each settings of RdbAdapter, these items can be configured.

OracleRdbAdapter

Oracle based RdbAdapter. The following items can be configured.

Item Value Description

lockTimeout

int

Timeout (in seconds) before the row level lock is released. If 0 is set, the system will not wait for lock release (FOR UPDATE NOWAIT). If a negative value is set, it will wait until the lock is released. The default value is 0.

timestampFunction

String

Function to get timestamp. The default value is CURRENT_TIMESTAMP(3).

addMonthsFunction

String

Function to add the month. The default value is ADD_MONTHS.

monthsBetweenFunction

String

Function to get the difference between two dates. The default value is MONTHS_BETWEEN.

isUseSubQueryForIndexJoin

boolean

Whether to perform a join using an Index table using a correlated subquery. The default value is true.

optimizerHint

String

Optimizer hint. The default value is FIRST_ROWS(100).

enableInPartitioning

boolean

Whether to perform conversion processing that relaxes the limit of 1000 IN operators. The default value is false. The relaxation processing is to divide IN (1,2, …​) in units of 1000 (IN (1,2, …​) OR IN (1001, 1002, …​)) and OR That is.

escapeFullwidthWildcard

boolean

Whether to escape the full-width characters % and _. The default value is false. If the version to be used is 11gR2patch2 or earlier, it is treated as a wildcard, so set it true please.

enableBindHint

boolean

Whether to enable the bind hint clause. The default value is true.

alwaysBind

boolean

Whether to always use bind variables when converting EQL to SQL. The default value is true.

thresholdCountOfUsePrepareStatement

int

Threshold for determining whether to use PrepareStatement when multiple updates (additions) are processed at once. The default value is 50.

batchSize

int

Recommended batch size when using batch update. The default value is 100.

maxFetchSize

int

Maximum size to fetch. The default value is 100.

defaultFetchSize

int

Default size of fetch. The default value is 0. If 0 is specified, the actual fetch size depends on the JDBC driver.

defaultQueryTimeout

int

Query timeout (seconds). If 0 is specified, timeout does not occur. The default value is 0.

useFetchFirstClause

boolean

Whether to use FETCH FIRST clause available from Oracle 12c. The default value is true.

rdbTimeZone

String

If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone.

maxViewNameLength

int

Maximum length of view name. The default value is 128.

listaggDefaultSeparator

String

Default separator when using the LISTAGG aggregate function. The default value is , .

bindDateAsString

boolean

Sets whether to bind with String type via the TO_DATE function instead of directly binding with java.sql.Date type when binding Date type with PrepareStatement. Default is true.

This is a control item for the behavior that the time is unintentionally set on the date when daylight saving time is changed when binding as the Date type. When setting the Oracle JDBC driver system property oracle.jdbc.DateZeroTime=true , the bindDateAsString value can be false.
MysqlRdbAdapter

MySQL based RdbAdapter. The following items can be configured.

Item Value Description

useFractionalSecondsOnTimestamp

boolean

Whether to include milliseconds in the timestamp. The default value is true.

supportOptimizerHint

boolean

Define whether to support optimization hints. The default value is true.

optimizeCountQuery

boolean

Define whether to optimize the count query. The default value is true.

localTemporaryTableManageOutsideTransaction

boolean

Specifies whether to manage local temporary tables outside of transactions. The default value is false.

localTemporaryTableCreatedByDataSource

boolean

Specifies whether local temporary tables are created based on the data source. The default value is false.

timestampMethod

String

Get timestamp function. The default value is NOW(3).

enableBindHint

boolean

Whether to enable the bind hint clause. The default value is false.

batchSize

int

Recommended batch size when using batch update. The default value is 100.

thresholdCountOfUsePrepareStatement

int

Threshold for determining whether to use PrepareStatement when multiple updates (additions) are processed at once. The default value is -1.

maxFetchSize

int

Maximum size to fetch. The default value is 100.

defaultFetchSize

int

Default size of fetch. The default value is -1 (meaning not set explicitly). If 0 is specified, the actual fetch size depends on the JDBC driver.

defaultQueryTimeout

int

Query timeout (seconds). If 0 is specified, timeout does not occur. The default value is 0.

supportWindowFunction

boolean

Whether to support Window functions. The default value is true. If using MySQL version 5.7 or earlier, which does not support the Window function, set this to false.

rdbTimeZone

String

If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone.

maxViewNameLength

int

Maximum length of view name. The default value is 64.

listaggDefaultSeparator

String

Default separator when using the LISTAGG aggregate function. The default value is , .

needMultiTableTrick

boolean

When issuing UPDATE/DELETE statements, whether or not measures to improve performance are required when subqueries are used for conditions. The default is false.

It is recommended to enable it if using MySQL 8.0.20 or earlier.
PostgreSQLRdbAdapter

PostgresSQL based RdbAdapter. The following items can be configured.

Item Value Description

supportOptimizerHint

boolean

Define whether to support optimization hints. The default value is false.

timestampFunction

String

Function to get timestamp. The default value is CURRENT_TIMESTAMP(3).

escapeBackslash

boolean

Whether to escape backslashes. The default value is false.

enableBindHint

boolean

Whether to enable the bind hint clauses. The default value is false.

batchSize

int

Recommended batch size when using batch update. The default value is 100.

maxFetchSize

int

Maximum size to fetch. The default value is 100.

defaultFetchSize

int

Default size of fetch. The default value is 10. If 0 is specified, the actual fetch size depends on the JDBC driver.

defaultQueryTimeout

int

Query timeout (seconds). If 0 is specified, timeout will not occur. The default value is 0.

lockTimeout

int

Lock timeout (seconds). If 0 is specified, timeout will not occur. The default value is 0.

rdbTimeZone

String

If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone.

maxViewNameLength

int

Maximum length of view name. The default value is 63.

listaggDefaultSeparator

String

Default separator when using the LISTAGG aggregate function. The default value is , .

useStandardListaggFunction

boolean

Sets whether or not to use the SQL2016 standard-based LISTAGG aggregate function representation. If false, STRING_AGG will be used. The default value is false.

SQLServerRdbAdapter

SQL Server based RdbAdapter. The following items can be configured.

Item Value Description

timestampFunction

String

Function to get timestamp. The default value is GETDATE().

addMonthsFunction

String

Function to add the month. The default value is DATEADD.

monthsBetweenFunction

String

Function to get the difference between two dates. The default value is DATEDIFF.

isUseSubQueryForIndexJoin

boolean

Whether to perform a join using an Index table using a correlated subquery. The default value is true.

enableBindHint

boolean

Whether to enable the bind hint clause. The default value is false.

alwaysBind

boolean

Whether to always use bind variables when converting EQL to SQL. Default is false. In SQL Server, the maximum number of parameters that a procedure can have is 2,100, so when setting it to true, please do not exceed this maximum number.

batchSize

int

Recommended batch size when using batch update. The default value is 100.

thresholdCountOfUsePrepareStatement

int

Threshold for determining whether to use PrepareStatement when multiple updates (additions) are processed at once. The default value is 50.

maxFetchSize

int

Maximum size to fetch. The default value is 100.

defaultFetchSize

int

Default size of fetch. The default value is 0. If 0 is specified, the actual fetch size depends on the JDBC driver.

defaultQueryTimeout

int

Query timeout (seconds). If 0 is specified, timeout will not occur. The default value is 0.

lockTimeout

int

Timeout (in seconds) before the row level lock is released. If 0 is set, it will not wait for the lock to be released (NOWAIT). If a negative value is set, the system will wait until the lock is released. The default value is 0.

optimizerHint

String

Optimizer hint. The default value is FAST 100.

rdbTimeZone

String

If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone.

timeZoneMap

Map format

Defines the mapping between the Java Time Zone ID and the Time Zone ID on SQL Server. Define it by specifying the Java Time Zone ID for name and the SQL Server Time Zone ID for value.

maxViewNameLength

int

Maximum length of view name. The default value is 128.

listaggDefaultSeparator

String

Default separator when using the LISTAGG aggregate function. The default value is , .

Example
<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 :
                Set to true when using Optimizer Hints (available since mysql5.7)
    -->
    <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

This is the queue service using RDB.

Interface Name

org.iplass.mtp.impl.async.rdb.RdbQueueService

Implementing Class Name

org.iplass.mtp.impl.async.rdb.RdbQueueService

Settings of RdbQueueService

The configurable items of RdbQueueService are listed below.

Configurable Items
Item Value Description

useQueue

boolean

Whether to use queue. The default is false.

queue

QueueConfig

Set the queue for asynchronous executions. The standard definition of the queue are depicted below.

default

The default queue used when the queue is not specified by asynchronous task.

csvupload

Queue used for CSV upload in GEM pages.

cleanupHistoryOnInit

boolean

Set whether to delete the history logs when the service was initialized. The default is false.

historyHoldDay

int

Indicate how many days of the history records to be kept when deleting history log. The default is 1.

workerFactory

WorkerFactory

Specify the Factory class that make the worker by custom. If not defined, set org.iplass.mtp.impl.async.rdb.DefaultWorkerFactory.

QueueConfig

Please specify org.iplass.mtp.impl.async.rdb.QueueConfig to the class.

Item Value Description

id

int

A unique ID. 0, 1 are already occupied, so please choose other ids.

name

String

The name for the queue. Displayed when an asynchronous task selects a queue.

resultRemainingTime

long

The time (in milliseconds) threshold to move the task to the history. Tasks older than the time specified from now will be moved. The default value is 86400000 (1 day).

strictSequence

boolean

When GroupingKey is set for a task and strictSequence is true, the task ID is set sequentially for each group.

selectWorkerOnSubmit

boolean

Whether to allocate workers to tasks which GroupingKey is not set. The default value is false.

worker

WorkerConfig

Specify the worker that processes the queue.

WorkerConfig

Please specify org.iplass.mtp.impl.async.rdb.WorkerConfig to the class.

Item Value Description

pollingInterval

long

Queue polling interval in milliseconds. The default value is 30000.

actualWorkerSize

int

You can set the number of actual workers processing the queue in parallel. The default value is 1.

virtualWorkerSize

int

Number of virtual workers to allocate to the queue. The default value is 16.The virtualWorkerSize is set to the same value for the same queue definition in the system. Each virtual worker is assigned to actual workers.

executionTimeout

long

Specify how long until the execution timeout (in milliseconds). The default value is 180000.

restartDelay

long

Task retry interval in milliseconds. The default value is 30000.

maxRetryCount

int

Task retry count. The default is 100.

wakeupOnSubmit

boolean

Whether to start next task immediately after the current task is submitted. The default value is true. Currently only valid when local is set to true.

trace

boolean

Whether to output logs. The default value is true.

local

boolean

Whether to process the task in the queue locally or distributed remotely. The default value is true.

For distributed processing (local=false)

Explicitly specify the worker ID to be executed by this node in a system property of the following form. The worker ID is a sequential number from 0 to a number less than the value specified for actualWorkerSize.

mtp.async.rdb.workers=[queueName]:[id]:[id],…​

Example:
mtp.async.rdb.workers=default:0:2,csvupload:0:2:4

This node executes the tasks assigned to worker IDs 0 and 2 in the default queue and worker IDs 0, 2, and 4 in the csvupload queue.

newProcessPerTask

boolean

Whether or not to run the worker in a new separate process. The default value is false.

javaCommand

String

The Java command for starting a worker in a separate process.

vmArgs

String, Multiple

VM arguments to pass to javaCommand.

redirectFile

String

Indicate the file that is the standard output destination and standard error output destination of the process.

WorkerFactory

Please specify org.iplass.mtp.impl.async.rdb.WorkerFactory to the class.

In standard, the following WorkerFactory are provided.

DefaultWorkerFactory

Please specify org.iplass.mtp.impl.async.rdb.DefaultWorkerFactory to the class.
It’s default WorkerFactory. There is no configurable items.

MetricsWorkerFactory

Please specify org.iplass.mtp.impl.micrometer.metrics.async.MetricsWorkerFactory to the class.
It’s WorkerFactory for collecting metrics. Make the worker that collects the number of successful/unsuccessful asynchronous execution, the number of timeout, execution time as metrics. And it collects the metrics of worker running in the same process.
This is configurable when the Micrometer module is added to the dependency. There is no configurable items.

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

This service manages Redis.

Interface Name

org.iplass.mtp.impl.redis.RedisService

Implementing Class

org.iplass.mtp.impl.redis.RedisService

The settings of RedisService

RedisService can be configured with the following items.

Configurable Items
Item Value Description

redisServers

RedisServer, Multiple

The settings of the Redis server.

RedisServer

The following items can be configured.

Item Value Description

serverName

String

The server name that is the identifier of the RedisServer.

host

String

Host of the Redis server.

port

int

Port number of the Redis server. Default value is 6379.

timeout

long

Connection timeout.

database

int

Database number.

userName

String

User name.

password

String

Password.

ssl

boolean

Set to true for SSL communication. Default value is false.

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

This is a service for adding your own relative range in the search conditions of Aggregation and EntityListing.

Interface Name

org.iplass.mtp.impl.view.relativerange.RelativeRangeService

Implementing Class

org.iplass.mtp.impl.view.relativerange.RelativeRangeService

The settings of RelativeRangeService

RelativeRangeService can be configured with the following items.

Configurable Items
Item Value Description

relativeRanges

RelativeRange, Multiple

Setting custom relative ranges.

RelativeRange

Please specify org.iplass.mtp.view.relativerange.RelativeRange to the class.

A custom relative range. The following items can be set.

Item Value Description

relativeRangeName

String

Custom relative range name.

displayLabel

String

display label.

localizedDisplayLabel

LocalizedDisplayLabel, Multiple

Setting displayLabel for each language.

converter

String

Conversion logic class. Specify the name of the class that implements the org.iplass.mtp.view.relativerange.RelativeRangeConverter interface.

LocalizedDisplayLabel

Please specify org.iplass.mtp.view.relativerange.LocalizedDisplayLabel to the class.

Custom relative ranges for each language. The following items can be set.

Item Value Description

locale

String

Locale.

displayLabel

String

display label.

Example
<service>
    <interface>org.iplass.mtp.impl.view.relativerange.RelativeRangeService</interface>
    <class>org.iplass.mtp.impl.view.relativerange.RelativeRangeService</class>
    <!-- default custom relative range -->
    <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

This service manages receipt reports output.

Interface Name

org.iplass.mtp.impl.report.ReportingEngineService

Implementing Class

org.iplass.mtp.impl.report.ReportingEngineServiceImpl

The settings of ReportingEngineService

ReportingEngineService can be configured with the following items.

Configurable Items
Item Value Description

reportingEngine

ReportingEngine, Multiple

The settings of the report generation engine.

ReportingEngine

Please specify the implementing class of org.iplass.mtp.impl.report.ReportingEngine to the class to the class.

As the standard implementation, the following ReportingEngine are provided.

JasperReportingEngine

An engine for creating reports using Jasper Report.

Please specify org.iplass.mtp.impl.report.JasperReportingEngine to the class. The following items can be configured.

Item Value Description

supportFiles

String, Multiple

Specify the type of the supporting files.

PoiReportingEngine

An engine for creating forms using Apache POI.

Please specify org.iplass.mtp.impl.report.PoiReportingEngine to the class. The following items can be configured.

Item Value Description

supportFiles

String, Multiple

Specify the type of the supporting files.

JxlsReportingEngine

An engine for creating forms using JXLS.

Please specify org.iplass.mtp.impl.report.JxlsReportingEngine to the class. The following items can be configured.

Item Value Description

supportFiles

String, Multiple

Specify the type of the supporting files.

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

This service manages SAML authentication. When operating as an IdP, or when signing a message sent from the SP side to the IdP, the settings of the certificate storage is required.

Interface Name

org.iplass.mtp.impl.auth.authenticate.saml.SamlService

Implementing Class

org.iplass.mtp.impl.auth.authenticate.saml.SamlService

The settings of SamlService

To utilize SAML authentication, SamlService can be configured with the following items.

Configurable Items
Item Value Description

validateSchema

boolean

verify if the SAML message conforms to the XMLSchema definition. The default value is false.

keyStore

SamlKeyStore

The settings of the certificate storage.

setAddressToSubjectConfirmationData

boolean

Whether to include the Address in SubjectConfirmationData of Assertion. The default value is true.

assertionLifetimeMinutes

int

Duration of the SAML assertion. Default value is 5 (minutes).

allowedClockSkewMinutes

int

Allowable clock skew time. Default value is 5 (minutes).

If iPLAss operates in SP mode, it is considered when verifying NotOnOrAfter in the SubjectConfirmationData.

When iPLAss operates in IdP mode, the validity period of the SAML assertion (NotOnOrAfter of SubjectConfirmationData and NotBefore/NotOnOrAfter of Conditions) to be issued is extended by the clock skew time as follows:

NotBefore = IssueInstant - allowedClockSkewMinutes
NotOnOrAfter = IssueInstant + assertionLifetimeMinutes + allowedClockSkewMinutes

SamlKeyStore

When operating as an IdP, corresponding definition is required when signing SAML messages on the SP side (iPLAss side). Private key and certificate (entry and description below) are stored in KeyStore. Multiple entries can be registered. (To support multiple encryption algorithms and for certificate rollover)

Please specify org.iplass.mtp.impl.auth.authenticate.saml.SamlKeyStore to the class. The following items can be configured.

Item Value Description

keyStoreType

String

KeyStore type. The default value is JKS.

keyStoreFilePath

String

File path of KeyStore where entries for signature creation are stored.

keyStorePassword

String

KeyStore password.

keyPassword

String

The keyPassword of the private key.

myCertificate

String, Multiple

The alias of the entry when you want to narrow down the entries used in the signature in the KeyStore.

defaultSignatureAlgorithm

String

Set the default signature algorithm. The default value is SHA256withRSA.

keyStoreReloadIntervalDays

int

Reload interval (number of days) of keyStore file. If not specified, reload will never be performed.

rollOverStrategy

CertificateRollOverStrategy

Rollover method when the validity period of a certificate is approaching. The default value is OLDER.

rollOverDaysBeforeExpire

long

Number of days to switch when rollOverStrategy is BEFORE_N_DAYS.

CertificateRollOverStrategy

Specify the rollover method when the validation period of the certificate is approaching. When multiple (new and old) certificates are found in KeyStore, this is the method to determine which one to use.

OLDER

Use a certificate with a short validation period (NotAfter is old) until the validity period expires.

NEWER

Use a certificate with a longer validation period (NotAfter is new).

BEFORE_N_DAYS

switch to "rollOverDaysBeforeExpire" days before expiration

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

This service manages the definition (Metadata) of scheduled tasks.

Interface Name

org.iplass.mtp.impl.scheduling.ScheduleService

Implementing Class Name

org.iplass.mtp.impl.scheduling.ScheduleService

Settings of ScheduleService

ScheduleService is configurable.

Configurable Items
Item Value Description

systemUserId

String

Specify the user ID of the system, which will execute the scheduled task. The default value is scheduler.

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

A service that manages the execution of dynamic scripts.

Interface Name

org.iplass.mtp.impl.script.ScriptService

Implementing Class Name

org.iplass.mtp.impl.script.GroovyScriptService

Settings of ScriptService

The settings of ScriptService are listed below.

Configurable Items
Item Value Description

debug

boolean

Specify whether to log the script debug information.

initScript

String, Multiple

The initial GroovyScript.

staticImport

String, Multiple

Specify the method to import static GroovyScript.

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

The service to manage the settings of random text array generations.

Interface Name

org.iplass.mtp.impl.util.random.SecureRandomService

Implementing Class Name

org.iplass.mtp.impl.util.random.SecureRandomService

Settings of SecureRandomService

The configurable items for SecureRandomService are listed below.

Configurable Items
Item Value Description

default

SecureRandomGeneratorConfig

Standard settings of SecureRandomGeneratorConfig 。

Any Text Array

SecureRandomGeneratorConfig

This is the settings of SecureRandomGeneratorConfig, which will be used to generate text array. For name, any name of SecureRandomGenerator can be specified.

SecureRandomGeneratorConfig

The Settings for random text generations.

Item Value Description

numBitsOfSecureRandomToken

int

The bit for random text array. The default is 128(bit). If encode has values set or radixOfSecureRandomToken has 64 set, It is processed in multiples of 8.

radixOfSecureRandomToken

int

The base number for random text arrays. The default is 16. The available values are in the range of 2~36 and can also be 64. If encode has values set, the priority goes to encode.

useStrongSecureRandom

boolean

Set whether to call SecureRandom.getInstanceStrong() for SecureRandom. The default is false. If algorithm has values set, the priority goes to algorithms.

algorithm

String

The algorithms for SecureRandom generation. The default is unspecified.

provider

String

The provider for SecureRandom generation. The default is unspecified.

encode

String

The encode for SecureRandom generation. The default is unspecified. The available values are base32 and base64.

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

A service to manage SMS template definitions (metadata) and SMS transmissions. As an implementation of SMS transmission, a module for SMS transmission using Twilio is provided as the standard implementation.

Interface Name

org.iplass.mtp.impl.sms.SmsService

Implementing Class Name

SMS Transmission with Twilio
org.iplass.mtp.impl.sms.twilio.TwilioSmsService

Settings of TwilioSmsService

When using SMS transmission with Twilio, it is required to set TwilioSmsService. At the time when obtaining Twilio contracts, "ACCOUNT SID" and "AUTH TOKEN" are required.

Configurable Items
Item Value Description

accountSid

String, required

ACCOUNT SID.

authToken

String, required

AUTH TOKEN.

region

String

Sets the region for the Twilio service. See here for possible values.

edge

String

Sets the edge location for the Twilio service. See here for possible values.

userAgentExtensions

String, Multiple

Extended User-Agent header settings for requests to Twilio services.

defaultFrom

String

The default send-from tel number.

httpClientConfig

HttpClientConfig

Settings of HTTP client.

listener

SendSmsMailListener, Multiple

The listener for SMS Transmissions.

HttpClientConfig

Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class.

The following items can be configured.

Item Value Description

connectionTimeout

int

Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds).

soTimeout

int

socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds).

poolingMaxTotal

int

Maximum number of pools for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifetime of pooled http connections (milliseconds). The default is unlimited.

proxyHost

String

Proxy server host.

proxyPort

int

Proxy server port number.

httpClientBuilderFactory

HttpClientBuilderFactory

Specify this if you want to create a custom HttpClientBuilder.

HttpClientBuilderFactory

Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.

The following HttpClientBuilderFactory is provided as standard.

SendSmsMailListener

Please specify the implementing class of org.iplass.mtp.sms.SendSmsMailListener.

As the standard implementation, the following SendSmsMailListener are provided.

MetricsSendSmsMailListener

Please specify org.iplass.mtp.impl.micrometer.metrics.sms.MetricsSendSmsMailListener to the class.

It’s SendSmsMailListener with the metric collection function by Micrometer. There are no settings that can be configured.

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

Services of migration tools for StorageSpace.

Interface Name

org.iplass.mtp.impl.tools.storagespace.StorageSpaceService

Implementing Class

org.iplass.mtp.impl.tools.storagespace.StorageSpaceServiceImpl

The settings of StorageSpaceService

StorageSpaceService can be configured with the following items.

Configurable Items
Item Value Description

migrateCommitLimit

int

data commit batch size (number of cases) when migrating StorageSpace.

cleanupCommitLimit

int

Migrated data cleanup batch size (number of cases) after the StorageSpace was fully migrated.

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

The service to configure how to save Entity data permanently.

Interface Name

org.iplass.mtp.impl.datastore.StoreService

Implementing Class Name

org.iplass.mtp.impl.datastore.StoreService

Settings of StoreService

The settings for StoreService are described below.

Configurable Items
Item Value Description

dataStore

DataStore

Settings of DataStore.

DataStore

Please specify the implementing class of org.iplass.mtp.impl.datastore.DataStore to the class.

The following DataStore are provided in standard.

GRdbDataStore

Please specify org.iplass.mtp.impl.datastore.grdb.GRdbDataStore to the class. This is the DataStore for community edition.

The following items can be configured.

Item Value Description

storageSpace

StorageSpaceMap, Multiple

Settings of StorageSpace.

EnterpriseGRdbDataStore

Please specify org.iplass.mtp.impl.datastore.grdb.EnterpriseGRdbDataStore to the class. This is the DataStore for enterprise edition.

The following items can be configured.

Item Value Description

enableWindowFunctionEmulation

boolean

Whether to enable Windows function emulation. The default value is false

storageSpace

StorageSpaceMap, Multiple

Settings of StorageSpace

StorageSpaceMap

The following items can be configured.

Item Value Description

storageSpaceName

String

StorageSpace name displayed when selecting in Entity definition.

tableNamePostfix

String

Suffix added to the table for StorageSpace. Please use only alphanumeric characters. Since MTP and USER are defined by default, set other names.

varcharColumns

int

Number of columns to store string type properties.

decimalColumns

int

Number of columns to store Decimal type properties.

timestampColumns

int

Number of columns for storing Timestamp type properties.

doubleColumns

int

Number of columns to store floating point properties.

useExternalIndexedTable

boolean

Whether to use obj_index tables. The default value is true.

indexedVarcharColumns

int

Index Number of columns to store the specified string type property.

indexedDecimalColumns

int

Index Number of columns to store the specified Decimal type property.

indexedTimestampColumns

int

Index Number of columns to store the specified Timestamp type property.

indexedDoubleColumns

int

Index Number of columns to store the specified floating-point type property.

useExternalUniqueIndexedTable

boolean

Whether to use obj_unique_index tables. The default value is true.

uniqueIndexedVarcharColumns

int

Unique Index Number of columns to store the specified string type property.

uniqueIndexedDecimalColumns

int

Unique Index Number of columns to store the specified Decimal type property.

uniqueIndexedTimestampColumns

int

Unique Index Number of columns to store the specified Timestamp type property.

uniqueIndexedDoubleColumns

int

Unique Index Number of columns to store the specified floating point type property.

varcharColumnLength

int

Set the length of the character string storage column. Used to determine if a LongText value can be stored inline. The default value is -1 (meaning undefined).

customPartition

boolean

Whether to use a partition that is different from the standard partition when using Partition. The default value is false.

tableCount

int

Set a value larger than 0 when you want to physically divide the storage table and performing pseudo partitioning (Not a database partitioning function, but a function that allows iPLAss to allocate physical tables by Entity definition). The default value is 0.

tableAllocator

TableAllocator

TableAllocator settings, which allows you to set the allocation method for each physical table when pseudo-partitioning. The default value is HashingTableAllocator.

TableAllocator

When pseudo-partitioning, it is possible to set the allocation method to the physical table where Entity data is stored.
Please specify the implementing class of org.iplass.mtp.impl.datastore.grdb.TableAllocator to the class.

The following TableAllocator are provided in standard.

HashingTableAllocator

Please specify org.iplass.mtp.impl.datastore.grdb.tableallocators.HashingTableAllocator to the class. The physical table is determined by hashing from tenantId, and metaDataId, which is a unique key for each Entity definition.

The following items can be configured.

Item Value Description

useTenantId

boolean

True if tenantId is used when calculating the hash. Default value is true.

useMetaDataId

boolean

True if metaDataId is used when calculating the hash. Default value is true. If both useTenantId and useMetaDataId are true, both will be used.

RoundRobinTableAllocator

Please specify org.iplass.mtp.impl.datastore.grdb.tableallocators.RoundRobinTableAllocator to the class. Allocate the physical table that has the least number of Entity definitions used in the same tenant among the physical tables that make up the pseudo partition. There are no configurable items.

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

A service for syntax analysis.

Interface Name

org.iplass.mtp.impl.parser.SyntaxService

Implementing Class Name

org.iplass.mtp.impl.parser.SyntaxService

Settings of SyntaxService

SyntaxService can be configured in the following way.

Configurable Items
Item Value Description

syntaxRegister

SyntaxRegister, Multiple

SyntaxRegister Implementing Class Name。

SyntaxRegister

Please specify the implementing class of org.iplass.mtp.impl.parser.SyntaxRegister.

org.iplass.mtp.impl.query.QuerySyntaxRegister is provided as a standard implementation. There is no configurable items for this setting options.

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

This is the service to assign task ID when using RdbQueueService. Depending on the grouping settings of the task, the settings to be imported will change. If no grouping is specified, use the settings of TaskIdCounter. If specified, use the settings of TaskIdCounterGrouping .

Interface Name

org.iplass.mtp.impl.counter.CounterService

Implementing Class Name

No Cache
org.iplass.mtp.impl.counter.RdbTableCounterService
With Cache
org.iplass.mtp.impl.counter.CachableRdbTableCounterService

Settings of RdbTableCounterService

The settings of RdbTableCounterService can be configured in the following way.

Configurable Items
Item Value Description

separateTransaction

boolean

Whether to separate transactions when counting. The default value is false.

retryCount

int

Set the retry count when fail to count. The default is 3.

counterTypeName

String

Specify the name of the counter type. the default is defaultCounter.

Settings of CachableRdbTableCounterService

CachableRdbTableCounterService can be configured in the following way.

Configurable Items
Item Value Description

separateTransaction

boolean

Whether to separate transactions when counting.The default value is false.

retryCount

int

Set the retry count when fail to count. The default is 3.

counterTypeName

String

Specify the name of the counter type. the default is defaultCounter.

cacheSize

int

Cache size. The default is 20.です。

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

This service manages the operating status of tenants.

Interface Name

org.iplass.mtp.impl.tenant.available.TenantAvailableService

Implementing Class

org.iplass.mtp.impl.tenant.available.TenantAvailableService

The settings of TenantAvailableService

TenantAvailableService can be configured with the following items.

Configurable Items
Item Value Description

allwaysAvailableAction

String, Multiple

Actions available during maintenance

Use the alwaysAvailableAction one. We will remove it in the next minor version

alwaysAvailableAction

String, Multiple

Actions available during maintenance

alwaysAvailableWebApi

String, Multiple

WebApi available during maintenance

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

The service that affects all the tenants.

Interface Name

org.iplass.mtp.impl.core.TenantContextService

Implementing Class Name

org.iplass.mtp.impl.core.TenantContextService

Settings of TenantContextService

These settings take effects on all tenants.

Configurable Items
Item Value Description

defaultTenantName

String

Default tenant name.

defaultPasswordPatternErrorMessage

String

Default password format error message.

defaultMailFrom

String

Default email sending From address. Used when the From address is not specified in the tenant settings.

defaultMailFromName

String

Default email sending From address personal name.

sharedTenantId

int

Shared tenant ID. In the case of RDB, this tenant is used as a shared tenant. -1 works as if there is no shared tenant. The default value is -1.

If the Entity definition is changed while the shared tenant is enabled, the corresponding data maintenance process will be executed in accompany with it. However, if the shared Entity definition is changed, maintenance process will be executed for the data of all tenants.

When the database that stores Entity data is shared by multiple project systems, there is a risk that the data of other project systems will be overwritten unintentionally if the shared tenant is enabled.
When enabling the shared tenant, it is recommended not to share the database with other project systems.

localTenantIds

int, Multiple

When shared tenant is enabled, it is possible to specify an specific tenant to perform data maintenance when updating the Entity definition. If it is not set, all tenants (excluding shared tenants) registered in the DB are regarded as individual tenants and data maintenance is performed on all of them.

As explained in the description of sharedTenantId, when enabling a shared tenant, it is recommended to not to share the DB with other project systems, but it is possible to use this localTenantIds when it is difficult. When shared Entity definition is changed, it is possible to limit data maintenance processing to the specified tenant.

Example
<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" />
    -->
    <!--
        When a shared tenant is enabled, we can define specific tenants under that shared tenant.
        If it is not defined, all tenants (excluding shared tenants) registered in the DB will operate as individual tenants.
    -->
    <!--
    <property name ="localTenantIds" value="148" />
    <property name ="localTenantIds" value="149" />
    -->
</service>

3.69. TenantToolService

A service related to tenant management tools.

Interface Name

org.iplass.adminconsole.server.base.service.TenantToolService

Implementing Class

org.iplass.adminconsole.server.base.service.TenantToolService

The settings of TenantToolService

TenantToolService can be configured with the following items.

Configurable Items
Item Value Description

createProcesses

TenantCreateProcess, Multiple

Set the process to be executed when creating a tenant.

tenantRdbManagerParameter

TenantRdbManagerParameter

Set parameters for tenant management functions by RDB.

TenantCreateProcess

Pleas specify the implementing class of org.iplass.mtp.impl.tools.tenant.create.TenantCreateProcess to the class.

The following TenantCreateProcess is provided as our standard implementation.

CreateAdminUserProcess

Create an administrator user.

Please specify org.iplass.mtp.impl.tools.tenant.create.CreateAdminUserProcess to the class. There is no configurable items.

BlankSkipProcess

Create an empty tenant.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.BlankSkipProcess to the class. There is no configurable items.

CreateMenuProcess

Create the initial menu definition.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateMenuProcess to the class. There is no configurable items.

CreateTopViewProcess

Create an initial TopView definition.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateTopViewProcess to the class. There is no configurable items.

CreateAppAdminRoleProcess

Create administrator roles and permission data.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleProcess to the class. There is no configurable items.

CreateGemUserRoleProcess

Create Gem user role and permission data.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleProcess to the class. There is no configurable items.

CreateAppAdminRoleEEProcess

Create authority data for EnterpriseEdition for administrator role.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleEEProcess to the class. There is no configurable items.

CreateGemUserRoleEEProcess

Create EnterpriseEdition permission data for Gem user role.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleEEProcess to the class. There is no configurable items.

CreateAppConsolePermissionProcess

Create App Console permission data for the administrator role and Gem user role.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateAppConsolePermissionProcess to the class. There is no configurable items.

CreateCompleteProcess

Perform tenant creation completing process.

Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateCompleteProcess to the class. There is no configurable items.

TenantRdbManagerParameter

Please specify org.iplass.mtp.impl.tools.tenant.rdb.TenantRdbManagerParameter to the class. The following items can be configured.

項目 説明

deleteRows

Integer

Number of table records deleted when deleting tenants. Default value is 10,000.

Example
<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" />

    <!-- TenartRdbManagerParameter -->
    <property name="tenantRdbManagerParameter" class="org.iplass.mtp.impl.tools.tenant.rdb.TenantRdbManagerParameter">
        <!-- Number of records deleted when deleting tenants. Default value is 10,000 -->
        <!--
        <property name="deleteRows" value="10000" />
        -->
    </property>
</service>

3.70. ValidationService

This is the service to perform input validation.

Interface Name

org.iplass.mtp.impl.validation.ValidationService

Implementing Class Name

org.iplass.mtp.impl.validation.ValidationService

ValidationService

The available settings for ValidationService are listed below.

Configurable Items
Item Value Description

beanValidation

BeanValidationConfig

Set Bean Validation here.

BeanValidationConfig

The settings of Bean Validation will be explained.

Please specify org.iplass.mtp.impl.validation.bean.BeanValidationConfig to the class. The following items can be specified.

Item Value Description

providerClass

String

javax.validation.spi.ValidationProvider’s implementing Class’s Name。

messageInterpolator

MessageInterpolator

set the MessageInterpolator here.

properties

Properties, Multiple

The property specific to provider.

MessageInterpolator

Please specify the implementing class of javax.validation.MessageInterpolator to the class.

In standard, org.iplass.mtp.impl.validation.bean.TenantContextMessageInterpolator is provided. The following items can be specified.

Item Value Description

messageInterpolatorFactory

MessageInterpolatorFactory

MessageInterpolatorFactory’s implementing Class’s Name。

MessageInterpolatorFactory

Please specify org.iplass.mtp.impl.validation.bean.MessageInterpolatorFactory to the class.

In standard, org.iplass.mtp.impl.validation.bean.hibernate.HibernateMessageInterpolatorFactory is provided. The following items can be specified.

Item Value Description

resourceBundleLocator

ResourceBundleLocator

ResourceBundleLocatorのImplementing Class Name。

cachingEnabled

boolean

Whether to enable Cache.

ResourceBundleLocator

Please specify org.hibernate.validator.spi.resourceloading.ResourceBundleLocator to the class.

In standard, org.iplass.mtp.impl.validation.bean.hibernate.MessageResourceBundleLocator. There is no configurable items for this configuration options.

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

This is the service to manage the members Web account.

Interface Name

org.iplass.wam.impl.WamService

Implementing Class

org.iplass.wam.impl.WamService

The settings of WamService

Wam can be configured with the following items.

Configurable Items
Item Value Description

tokenManager

TokenManager

The settings of TokenManager. By default the EntityTokenManager can be utilized.

httpClientConfig

HttpClientConfig_wm

The configs about HTTP clients.

stickySessionCookieName

String

Sticky session’s cookie names.

TokenManager

Please specify the implementing class of org.iplass.wam.api.siteauth.TokenManager to the class.

As standard implementation, the manager that issue the tokens managed in the cache: org.iplass.wam.impl.siteauth.CacheTokenManager; and the manager that issue the token managed by entity: org.iplass.wam.impl.siteauth.EntityTokenManager are provided. CacheTokenManager and EntityTokenManager do not have configurable items.

HttpClientConfig

Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.

Item Value Description

proxyHost

String

Host name when using proxy.

proxyPort

int

port when using proxy.

connectionTimeout

int

Specify the timeout threshold in milliseconds when establishing an HTTP connection. The default value is 30000 (30 seconds).

soTimeout

int

socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds).

poolingMaxTotal

int

Maximum pool size for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifetime of pooled http connections (milliseconds). The default is "unlimited".

httpClientBuilderFactory

HttpClientBuilderFactory

Specify this if you want to create a custom HttpClientBuilder.

HttpClientBuilderFactory

Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.

The following HttpClientBuilderFactory is provided as standard.

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

This is a service that defines the class to be converted from JAXB of WebApi.

Interface Name

org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService

Implementing Class

org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService

The settings of WebApiJaxbService

WebApiJaxbService can be configured with the following items.

Configurable Items
Item Value Description

classToBeBound

String, Multiple

Class to be converted by JAXB in WebApi response.

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

This service manages WebApi definitions (metadata).

Interface Name

org.iplass.mtp.impl.webapi.WebApiService

Implementing Class

org.iplass.mtp.impl.webapi.WebApiService

The settings of WebApiService

WebApi can be configured with the following items.

Configurable Items
Item Value Description

enableDefinitionApi

boolean

Set whether to publish the DefinitionWebApi.

enableBinaryApi

boolean

Set whether to publish the BinaryWebApi.

writeEncodedFilenameInBinaryApi

boolean

Specifies whether to output the filename* attribute in the Content-Disposition response header during BinaryWebApi download operations. false means output the filename attribute. The default value is false.

unescapeFilenameCharacterInBinaryApi

String

Specifies the characters not to escape when outputting the filename* attribute in the Content-Disposition response header during a BinaryWebApi download operation (Alphabet and numbers are unconditionally excluded from escaping).

acceptMimeTypesPatternInBinaryApi

String

Specifies the MIME Type pattern for files that can be uploaded during BinaryWebApi upload operations. The setting value specifies a regular expression pattern.
If not set, the MIME Type of the file will not be checked during upload.

Configuration example

  • Accept CSV files ^(text/csv)$

  • Accept PDFs and images ^(application/pdf|image/.*)$

See WebFrontendService uploadFileTypeDetector, FileTypeDetector for information on how to determine the MIME Type to be validated.

statusMap

StatusMap, Multiple

Setting of the status code to be returned when corresponding exception occurs.

xRequestedWithMap

Map

Set the to-be-checked items and comparable values when configuring X-Requested-With header in WebApi.

cors

CorsConfig

This config item is not recommended. Please utilize the requestRestriction item from WebFrontendService instead.

This item will specify the trusted domain for XHR2(CORS).

StatusMap

The following items are configurable.

Item Value Description

exception

String

Exception class anme

status

int

Exception status code of the occurrence.

CorsConfig

The following items are configurable.

Item Value Description

allowOrigin

String, Multiple

The domain allowing the access.

allowCredentials

boolean

Specify whether to permit the system to credential the authentication information (such as Cookie). The default is false.

Example
<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="-._~" />

    <!-- Binary file upload acceptable MIME Type pattern. Specify a regular expression. -->
    <!-- Configuration example
    <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

A service that manages the overall performance of the Web applications.

Interface Name

org.iplass.mtp.impl.web.WebFrontendService

Implementing Class

org.iplass.mtp.impl.web.WebFrontendService

The settings of WebFrontendService

The common performance of the web application can be configured with the following items.

Configurable Items
Item Value Description

defaultContentType

String

Specify the ContentType to use when the Template’s Content Disposition Type is set to Default. If not defined, the default value will be text/html; charset=utf-8.

defaultClientCacheType

String

Action’s Default client cache. Set CACHE to allow caching or NO_CACHE to disallow it. Defaults to CACHE if not specified.

CACHE_PUBLIC cannot be set in the default client cache. If you want to specify CACHE_PUBLIC, you must specify it in the individual Action definition.

defaultCacheControlType

String

WebAPI’s Default cache control setting. Set CACHE to allow caching or NO_CACHE to disallow it. If not specified, the Cache-Control header is not set.

CACHE_PUBLIC cannot be set in the default cache control configuration. If you want to specify CACHE_PUBLIC, you must do so in a separate WebApi definition.

staticContentPath

String

The root path that stores the static content. If not specified, the application context path (servletContextPath) will be used. Normally, you can leave it unspecified.

excludePath

String, Multiple

Paths to resources that are not managed by iPLAss. Specify with regular expression. The servletContextPath shell not be included in the specified path pattern. In the case of a path that matches, iPLAss (DispatcherFilter) will not perform any operation (tenant confirmation, permission check, execution of Action / WebApi definition, etc.), and it will call doFilter() in the subsequent FilterChain process. Only the static content path, the path of the servlet of your own implementation, etc. shell be specified.

acceptPath

String, Multiple

Resource path accepted by iPLAss. Specify with regular expression. The tenantContextPath shell not be included in the specified path pattern. If this acceptPath is not specified, all resource paths that do not match excludePath will be processed by iPLAss. If this acceptPath is specified, the request path does not match acceptPath, will have a HTTP status 404 returned. Normally, it can be left unspecified, but it can be very useful when you want to limit the Action/WebApi executed for each server. It can also be used in combination with the rejectPath described below.

rejectPath

String, Multiple

The path of the resource that should be denied by iPLAss. Specify with regular expression. The tenantContextPath shell not be included in the specified path pattern. If rejectPath is not specified, all resource paths that do not match excludePath will be processed by iPLAss. Normally, it can be left unspecified, but it can be useful when you want to limit the Action / WebApi executed for each server.

It can be specified in combination with acceptPath.

If acceptPath is not specified: If the path matches rejectPath, HTTP status 404 is returned.

If acceptPath is specified: If the path does not match acceptPath or matches rejectPath, HTTP status 404 is returned.

throughPath

String, Multiple

Specify the resource path that will not be mapped to Actions / WebApi definitions. Specify with regular expression. The tenantContextPath shell not be included in the specified path pattern. If the path matches throughPath path, iPLAss (DispatcherFilter) will perform the tenant confirmation process, but will not call Action / WebApi defined in iPLAss and will call doFilter() in the subsequent FilterChain.

restPath

String

Setting the path of the WebApi. In iPLAss, the resource paths starting with the string specified in restPath are processed as WebApi. The string segment after restPath will be perceived as WebApi name.

requestRestriction

RequestRestriction, Multiple

The user can define the restriction on the HTTP Requests.(i.e. the maximum request body size, the allowed HTTP Methods etc.)

errorUrlSelector

ErrorUrlSelector

ErrorUrlSelector that displays error page.

loginUrlSelector

LoginUrlSelector

LonginUrlSelector that displays the login page.

logoutUrl

String

URL to kick when logging out.

contentDispositionPolicy

ContentDispositionPolicy, Multiple

ContentDisposition output settings.

tempFileDir

String

Temporary file storage path. When not specified, "javax.servlet.context.tempdir" is used.

maxUploadFileSize

long

This config item is not recommended. Please use the requestRestriction instead.

Declare the size limit when uploading the files. If -1 is specified, there is no upper limit. When not specified, it will be set to -1.

uploadFileScanner

FileScanner

The setting to execute virus scan.

uploadFileTypeDetector

FileTypeDetector

Ability to detect the MIME Type (media type) of uploaded files.

isExecMagicByteCheck

boolean

Set whether to perform a magic byte check on the uploaded file.

magicByteChecker

MagicByteChecker

The magic byte check setting of file upload.

directAccessPort

String

Direct access port. For this port, the tenant urlForRequest specification is invalid.

transactionTokenMaxSize

int

Transaction token retention limit.

welcomeAction

String, Multiple

If the action part of the requested URL is "/", the action to be executed instead.

redirectAfterLogin

boolean

Whether to redirect after login for actions accessed without login. When performing a redirect, the action must allow the GET method.

tenantAsDomain

boolean

Resolves the tenant from the FQDN specified in Host of HTTP Header.

fixedTenant

String

Treats the set value as a single fixed tenant.

mdc

String or MdcValueResolver, in format of Map

Configure the value to be set in the MDC of slf4j. Specify the key name of MDC for key, the following String for value, or the class that implements MdcValueResolver.

generateUuid

Generate a UUID for each request and set it in the MDC.

generateInsecureUuid

Generate a unique ID for each request and set it in the MDC. ID can be generated faster than generateUuid, but it is based on pseudo-random numbers.

remoteHost

Set the value of remoteHost from ServletRequest.

remoteAddr

Set the value of remoteAddr from ServletRequest.

header.[headerName]

Set the HTTP header value specified in [headerName].

sessionId

Set the session ID at the start of the request.

maxMultipartParameterCount

long

Sets the maximum number of parameters to be limited for multipart requests such as file uploads. Requests exceeding the parameter limit will be rejected. If you do not want to limit the number of parameters, set -1. The default value is 10,000.

RequestRestriction

Please specify org.iplass.mtp.impl.web.RequestRestriction for class.

The following items can be configured.

Item Value Description

pathPattern

String

Specifies the regular expression for the path to which the constraint is applied. The tenantContextPath is not included in the specified path pattern. Only one RequestRestriction that does not specify pathPattern can be defined. It is possible to define a default constraint to be applied when it does not match the pathPattern of other RequestRestriction definitions.

allowMethods

String, Multiple

Specify the allowed HTTP Method. If set to *, all methods are allowed.

allowContentTypes

String, Multiple

Specify the allowed ContentType of the requests. If set to */*, all types are allowed.

maxBodySize

long

Specify the maximum size of the body contents. If set to -1, it means there is no size limit. If not specified, the default value is -1.

maxFileSize

long

Specify the max size of the upload files.If set to -1, it means there is no size limit. If not specified, the default value is -1.

cors

CorsConfig

Specify the trusted domain for XHR2(CORS).

force

boolean

Declare which one to use in prioritize, When there is specific configurations from Action definition and WebApi definition. If true, this config (the settings of RequestRestriction) will be prioritized. If false, the specific configurations from Action definition and WebApi definition will be prioritized. If not specified, the default value is false.

CorsConfig

The following items can be configured.

Item Value Description

allowOrigin

String, Multiple

Specify the allowed domain of accesses. Wildcards can be specified, such as *.dentsusoken.com.

allowCredentials

boolean

Specify whether to permit the system to credential the authentication information (such as Cookie). The default is false.

ErrorUrlSelector

Please specify the implementing class of org.iplass.mtp.impl.web.ErrorUrlSelector to the class.

The following ErrorUrlSelector is provided as standard.

GemErrorUrlSelector and EnterpriseGemErrorUrlSelector and MdcErrorUrlSelector do not have configurable items.

CompositeErrorUrlSelector

Please specify org.iplass.mtp.impl.web.CompositeErrorUrlSelector to the class.
ErrorUrlSelector that can switch ErrorUrlSelector by path. The following items can be set.

Item Value Description

selectorMap

ErrorUrlSelector, in format of Map

Specify the request path to be processed in Key and the ErrorUrlSelector implementation class in Value.
If the request path (Action name) at the time of the error starts with the value specified in Key (judged by String#startsWith), the ErrorUrlSelector specified in Value determines the template name for the error page. If none of the Keys match, the ErrorUrlSelector whose Key is default is used to determine the template name of the error page. At least, make sure to specify the ErrorUrlSelector whose Key is default.

LoginUrlSelector

Please specify the implementing class of org.iplass.mtp.impl.web.LoginUrlSelector to the class.

The following ErrorUrlSelector is provided as standard.

  • org.iplass.gem.GemLoginUrlSelector

  • org.iplass.mtp.mdc.MdcLoginUrlSelector

GemLoginUrlSelector and MdcLoginUrlSelector do not have configurable items.

ContentDispositionPolicy

Please specify the implementing class of org.iplass.mtp.impl.web.ContentDispositionPolicy to the class. The following items can be configured.

Item Value Description

userAgentKey

String

UserAgent identifier(* by default)。

contentDispositionTypeName

String

ContentDispositionType name(* means all)。

unescapeCharacter

String

Non-escaped characters (Alphabet, numbers are escaped unconditionally).

defaultContentDispositionTypeName

String

Set the default ContentDispositionType name when nothing specified.

useBothFilenameAttributes

boolean

Sets whether to output both filename and filename*. The default value is false.

FileScanner

Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.FileScanner to the class.

As the standard implementation, the class org.iplass.mtp.impl.web.fileupload.DefaultVirusScanner that will scan for virus is provided. For DefaultVirusScanner, the following items can be configured.

Item Value Description

commandPath

String, Required

Specify the path of the virus scan command. The file path of the scan objects are stored in the container specified by ${file}.

timeout

long, Required

Set the timeout (seconds) timer for virus scan.

errorOnTimeout

boolean

Whether to interrupt the process as an error when a timeout occurs. The default value is false.

successExitValue

int, Multiple

Exit code (status) indicating that the scan completed successfully. If specified, if the relevant exit code (status) is not returned, the process will be interrupted as an error.

FileTypeDetector

Please specify the class that implements org.iplass.mtp.impl.web.fileupload.FileTypeDetector.

The following FileTypeDetector is provided as a standard feature.

  • org.iplass.mtp.impl.web.fileupload.DefaultFileTypeDetector

    • This is the standard FileTypeDetector; the MIME Type (media type) is the value sent by the browser.

    • There is no DefaultFileTypeDetector setting item.

  • org.iplass.mtp.impl.web.fileupload.TikaFileTypeDetector

    • This is a FileTypeDetector using Apache Tika. The MIME Type (media type) is determined by verifying the uploaded file with the Tika function.

TikaFileTypeDetector

For TikaFileTypeDetector, the following items can be configured.

Item Value Description

fileUploadTikaAdapter

FileUploadTikaAdapter

An adapter that resolves the Tika dependency used by the file upload function.

FileUploadTikaAdapter

Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapter to the class.

org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapterImpl as the standard adapter implementation.
It is recommended to share Tika instances to avoid inconsistencies due to differences in Tika settings for MediaType(MimeType) that can be extracted by TikaFileTypeDetector and file types that can be inspected by TikaMagicByteChecker.
To share an instance, bean-define an implementation class for the FileUploadTikaAdapter interface and reference it in the TikaFileTypeDetector and TikaMagicByteChecker properties.

For FileUploadTikaAdapterImpl, the following items can be configured.

Item Value Description

tikaConfigXml

String

Specify the Apache Tika configuration file (tika-config.xml) to be used by the file upload function. Specify the Mime type definition file (tika-mimetypes.xml) within the Apache Tika configuration file to use customized definitions.

Please check official site for how to define the configuration files tika-config.xml and tika-mimetypes.xml.

MagicByteChecker

Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.MagicByteChecker to the class.

The following MagicByteChecker is provided as a standard feature.

  • org.iplass.mtp.impl.web.fileupload.DefaultMagicByteChecker

    • It is provided as a standard implementation of MagicByteChecker. If the rule that match the condition (mine type and extension) is specified, it checks if magic byte that is defined in that rule match.

  • org.iplass.mtp.impl.web.fileupload.TikaMagicByteChecker

    • MagicByteChecker is an Apache Tika-based MagicByteChecker that extracts definition information from Apache Tika’s Mime type configuration (tika-mimetypes.xml) and performs extension and magic byte checking.

    • When using TikaMagicByteChecker, it is recommended that FileTypeDetector be set to TikaFileTypeDetector.

DefaultMagicByteChecker

For DefaultMagicByteChecker, the following items can be configured.

Item Value Description

magicByteRule

MagicByteRule, Multiple

The rule to check magic bytes.

MagicByteRule

Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.MagicByteRule to the class. The following items can be configured.

Item Value Description

mimeType

MagicByteRuleCondition

Mime type condition

extension

MagicByteRuleCondition

Extension condition

magicByte

String, Multiple

Specify the beginning of magic byte to compare.

MagicByteRuleCondition

Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.MagicByteRuleCondition to the class. The following items can be configured.

Item Value Description

useRegex

boolean

Set whether to use regular expressions for conditional comparison. If true, it checks the value of pattern as a regular expression pattern. If false, it compares the value of pattern as a string. The default value is false.

pattern

String, Required

The pattern value of the condition

TikaMagicByteChecker

For TikaMagicByteChecker, the following items can be configured.

Item Value Description

fileUploadTikaAdapter

FileUploadTikaAdapter, Required

An adapter that resolves the Tika dependency used by the file upload function.

checkExtension

boolean

Check setting if the extension of the uploaded file is included in the extensions defined for the Tika Mime type. The default setting is to check (true).

readMagicLength

int

Byte length to be read during magic byte check. Default setting is 65,536.

throwExceptionIfMimeTypeIsNull

boolean

If the Tika Mime type cannot be found, a check error is made. The default setting is not to check for errors (false).

throwExceptionIfFileCannotRead

boolean

If the target file cannot be read during the magic byte check, a check error is generated. The default setting is not to check for errors (false).

substitutionMediaType

in format of Map

If a specific Mime type is used for the magic byte check, it is replaced with another Mime type. name attribute is the Mime type to be substituted, and value attribute is the Mime type after the substitute.

As a specific example, "application/vnd.apple.keynote.13" cannot detect the Mime type and cannot perform the magic byte check. To perform the magic byte check, it must be changed to "application/vnd.apple.keynote".

MdcValueResolver

Please specify the implementing class of org.iplass.mtp.impl.web.mdc.MdcValueResolver.

The following MdcValueResolver is provided as standard.

UuidMdcValueResolver

Please specify org.iplass.mtp.impl.web.mdc.UuidMdcValueResolver for class.

An MdcValueResolver that generates a UUID. The following items can be configured.

Item Value Description

secure

boolean

Whether to use SecureRandom to generate UUID. The default value is true. If false, ID can be generated at high speed, but it will be based on pseudo-random numbers.

In the setting of WebFrontendService to mdc, in String, Specifying generateUuid sets the UuidMdcValueResolver with secure=true. Specifying generateInsecureUuid sets the UuidMdcValueResolver with secure=false.

RemoteHostMdcValueResolver

Please specify org.iplass.mtp.impl.web.mdc.RemoteHostMdcValueResolver for class.

Get the value of remoteHost from ServletRequest.
In the setting of WebFrontendService to mdc, in String, RemoteHostMdcValueResolver is set by specifying remoteHost.

RemoteAddrMdcValueResolver

Please specify org.iplass.mtp.impl.web.mdc.RemoteAddrMdcValueResolver for class.

Get the value of remoteAddr from ServletRequest.
In the setting of WebFrontendService to mdc, in String, RemoteAddrMdcValueResolver is set by specifying remoteAddr.

HttpHeaderMdcValueResolver

Please specify org.iplass.mtp.impl.web.mdc.HttpHeaderMdcValueResolver for class.

Get the value of the HTTP header from ServletRequest. The following items can be configured.

Item Value Description

headerName

String

HTTP header name to get.

In the setting of WebFrontendService to mdc, in String, HttpHeaderMdcValueResolver with headerName=[headerName] is set by specifying in the format header.[headerName].

SessionIdMdcValueResolver

Please specify org.iplass.mtp.impl.web.mdc.SessionIdMdcValueResolver for class.

Set the ID of the session already created at the start of the request.
In the setting of WebFrontendService to mdc, in String, SessionIdMdcValueResolver is set by specifying sessionId.

AmznTraceIdMdcValueResolver

Please specify org.iplass.mtp.impl.aws.web.mdc.AmznTraceIdMdcValueResolver for class.

Gets the specific field value of the X-Amzn-Trace-Id value set in the HTTP header. The following items can be configured.

Item Value Description

field

String

The field name to get. Specify Root or Self.

Example
<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" />
    <!-- Definition of paths that are not processed by DispatcherFilter -->
    <!-- static contents -->
    <property name="excludePath" value="(/errorhtml/.*)|(/images/.*)|(/scripts/.*)|(/styles/.*)|(/favicon.ico)|(/webjars/.*)" />
    <!-- servlet implementation -->
    <property name="excludePath" value="(/checkStatus)|(/cmcs)" />

    <!-- permit only the gem module -->
    <property name="acceptPath" value="/gem/.*" />
    <property name="acceptPath" value="/api/gem/.*" />

    <!-- WebApi (REST) path's definition -->
    <property name="restPath" value="/api/" />


    <!-- The default RequestRestriction Definition -->
    <property name="requestRestriction">
        <property name="allowMethods" value="*" />
        <property name="allowContentTypes" value="*/*" />
        <property name="force" value="false" />
    </property>

    <!-- The RequestRestriction definition under api/sample(WebApi)-->
    <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">
            <!-- Allow CORS from https://sample.iplass.org、https://sample2.iplass.org -->
            <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 to kick at logout -->
    <property name="logoutUrl" value="logout" />
    <!-- The settings of the error pages -->
    <property name="errorUrlSelector" class="org.iplass.gem.GemErrorUrlSelector" />
    <!-- The settings of the login pages -->
    <property name="loginUrlSelector" class="org.iplass.gem.GemLoginUrlSelector" />
    <!-- Set the temporary file storage path. If not specified, "javax.servlet.context.tempdir" will be used. -->
    <!--
    <property name="tempFileDir" value="/tmp" />
    -->
    <!-- Direct access port Tenant urlForRequest specification is invalid for this port -->
    <!--
    <property name="directAccessPort" value="8080" />
    -->
    <!-- When the Web client DEBUG mode is specified, the error details are displayed when the error occurs in a WebApi access. -->
    <!--
    <property name="clientMode" value="DEBUG" />
    -->

    <!-- Configurations about ContentDisposition output -->
    <!-- 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 -->
    <!-- For IE11, INLINE, it will not escape blanks-->
    <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>
    <!--
        When adding, specify the character that is not escaped for each userAgentKey and contentDispositionTypeName.
        contentDispositionTypeName: * | ATTACHMENT | INLINE
        unescapeCharacter: The characters to exclude besides letters and numbers
    -->
    <!--
    <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>
    -->

    <!-- Virus scan execution -->
    <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>

    <!--
    Tika adapter for FileUpload function.

    Assumes that the instance is shared by TikaFileTypeDetector and TikaMagicByteChecker.
    If tikaConfigXml is not specified, the default configuration of apache tika will work.
    -->
    <!--
    <bean name="tikaAdapter" class="org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapterImpl">
        <property name="tikaConfigXml" value="/tika-config.xml" />
    </bean>
    -->

    <!-- File type (MIME Type/Media Type) detection function -->
    <!-- Default. The following instances are also set if unspecified. -->
    <!--
    <property name="uploadFileTypeDetector" class="org.iplass.mtp.impl.web.fileupload.DefaultFileTypeDetector" />
    -->
    <!-- File type (MIME Type/Media Type) detection using Apache Tika. Enabling bean tikaAdapter. -->
    <!--
    <property name="uploadFileTypeDetector" class="org.iplass.mtp.impl.web.fileupload.TikaFileTypeDetector">
        <property name="fileUploadTikaAdapter" ref="tikaAdapter" />
    </property>
    -->

    <!-- Whether to execute MagicByteCheck -->
    <property name="isExecMagicByteCheck" value="true" />
    <!-- MagicByteCheck execution -->
    <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>

    <!--
    MagicByteCheck processing using Apache Tika. bean tikaAdapter is enabled.
    When using this check function, it is recommended to use Tika for MimeType detection and MagicByteCheck processing.
    To use tika for MimeType detection, change property uploadFileTypeDetector to 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>
    -->

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

This is the service to manage the ebhookTemplate definitions(Metadata) and the corresponding Webhook behaviors.

Interface Name

org.iplass.mtp.impl.webhook.WebhookService

Implementing Class Name

org.iplass.mtp.impl.webhook.WebhookServiceImpl

Configurations of WebhookService

To utilize Webhook, it is required to configure the WebhookService

Configurable Items
Item Value Description

retry

boolean

Indicate whether to retry the connection when failed.

retryMaximumAttempts

int

(When retrying)Indicate the maximum retry limit.

retryInterval

int

(When retrying)Indicate the time interval between each retry attempts.

hmacHashAlgorithm

String

The hash algorithm used to generate HMAC key. If not specified, "HmacSHA256" will be used in default.

hmacDefaultHeaderName

String

The default header to store the HMAC key. If not specified, "X-IPLASS-HMAC" will be used. If the header name is customized in WebhookTemplate definition, the customized name will be used in priority.

httpClientConfig

HttpClientConfig

Config about the HTTP connection when sending Webhook.

HttpClientConfig

Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.

Item Value Description

connectionTimeout

int

Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds).

soTimeout

int

socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds).

poolingMaxTotal

int

Maximum number of pools for http connections. The default value is 20.

poolingDefaultMaxPerRoute

int

Maximum number of http connections per domain. The default value is 2.

poolingTimeToLive

int

Lifetime of pooled http connections (milliseconds). The default is unlimited.

proxyHost

String

Proxy server host.

proxyPort

int

Proxy server port number.

httpClientBuilderFactory

HttpClientBuilderFactory

Specify this if you want to create a custom HttpClientBuilder.

HttpClientBuilderFactory

Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.

The following HttpClientBuilderFactory is provided as standard.

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

This is the service to manage the performance of the workflow.

Interface Name

org.iplass.mtp.impl.workflow.WorkflowService

Implementing Class Name

org.iplass.mtp.impl.workflow.WorkflowService

Settings of WorkflowService

This is the configuration of WorkflowService.

Configurable Items
Item Value Description

workflowInstanceStore

WorkflowInstanceStore

The method to manage workflow instance.

historyLogStore

HistoryLogStore

The method to manage workflow’s history log

queueForWorkflow

String

Set the queue name for the workflow.

WorkflowInstanceStore

Please specify the implementing class of org.iplass.mtp.impl.workflow.WorkflowInstanceStore to the class.

In standard, org.iplass.mtp.impl.workflow.store.EntityWorkflowInstanceStore are provided. The workflow instance will be managed as a entity. There is no configurable items for this configuration options.

HistoryLogStore

Please specify the implementing class of org.iplass.mtp.impl.workflow.HistoryLogStore to the class.

In standard, the following HistoryLogStore ar provided.

LoggerHistoryLogStore

The history of workflow will be managed as logs.

Please specify org.iplass.mtp.impl.workflow.store.LoggerHistoryLogStore to the class. There is no configurable items for this configuration options.

EntityHistoryLogStore

The history of workflow will be managed as Entity.

Please specify org.iplass.mtp.impl.workflow.store.EntityHistoryLogStore to the class. There is no configurable items for this configuration options.

Example
<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. Log(Slf4j/Logback)

iPLAss is utilizing Slf4j/Logback to satisfy the needs of log output.

4.1. Logger Name

iPLAss outputs the following logs as standard. If necessary, specify the log logger name to be output to the log file etc. in logback.xml.

  • Logs for Events

    Logger Name Output Content

    mtp.audit

    Logs related to data operations.

    mtp.audit.admin

    Logs related to AdminConsole operations. Output for file download operations ( mtp.audit.admin.download ) and AuditLog data maintenance operations ( mtp.audit.admin.auditlog ).

    mtp.audit.download

    Logs related to file download operations.

    mtp.audit.porting.entity

    Logs related to entity operations.

    mtp.audit.porting.metadata

    Logs related to metadata operations.

    mtp.audit.porting.pack

    Logs related to package operations.

  • Logs for Authentication

    Logger Name Output Content

    mtp.auth

    Logs related to authentication related events.

  • Execution Logs

    Logger Name Output Content

    mtp.action

    Execution log for the call to Action. Outputs execution time, query execution count, error description, etc.

    mtp.webapi

    Execution log for the call to Web API. Outputs execution time, query execution count, error description, etc.

    mtp.async

    Execution log for asynchronous execution. Outputs execution time, error description, etc.

  • Logs for Fatal Errors

    Logger Name Output Content

    mtp.fatal

    Logs about fatal errors.

    mtp.fatal.cube

    Logs of errors that occurred in the Cube functions.

    mtp.fatal.async

    Logs of errors that occurred during asynchronous executions.

    mtp.fatal.async.rdb

    Write Logs when asynchronous execution get interrupted or exceeds the number of retries.

    mtp.fatal.async.rdb.processworker

    Logs of errors that occurred during asynchronous executions.

    mtp.fatal.asynctask

    Write Logs when the execution of asynchronous tasks get interrupted.

    mtp.fatal.mail

    Logs of errors that occurred during email transmissions.

    mtp.fatal.cluster

    Logs of errors that occurred during inter-cluster communications.

    mtp.fatal.classloader

    Log of errors that occurred in GroovyScript ClassLoader.

  • Logs for GroovyScript

    Logger Name Output Content

    mtp.script.out

    Log is output by println() method of variable binding of "out".

  • Logs for SQL

    Logger Name Output Content

    org.iplass.mtp.impl.rdb.connection

    Logs of SQL execution time and warning.

4.2. diagnostic context

In iPLAss, the following information is logged by the diagnostic context (MDC).

Key Name Log Format Output Values

taskId

%X{taskId}

TaskID

user

%X{user}

User(Client ID)

tenant

%X{tenant}

Tenant ID

tenantName

%X{tenantName}

Tenant Name

action

%X{action}

Action Name

command

%X{command}

Command Name

webapi

%X{webapi}

WebApi Name

traceId

%X{traceId}

When applying iplass-ee-aws module, output Root of X-Amzn-Trace-Id.
In addition, the output value can be set with WebFrontendService.

impersonatedUser

%X{impersonatedUser}

Impersonated User

4.3. filter

In the context of iPLAss, org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter is provided. By enabling this TurboFilter, it is possible to modify the log output conditions dynamically corresponding to each tenant.

The Settings of 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. Structured Logging

Logs can be output in JSON format using the Logstash Logback Encoder. Action/WebAPI execution time, number of queries issued, etc. are also output as attributes.

The Settings of 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>