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

/aws-service-config.xml

The default config files for aws related contents. Can be used by Enterprise Edition. It is bundled in the iplass-ee-aws library.

AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025.
iPLAss recommends deprecating the AWS SDK for Java 1.x-based library iplass-ee-aws and moving to the AWS SDK for Java 2.x-based library iplass-ee-aws2.
If you are using this configuration, please migrate to the library iplass-ee-aws2 configuration.
The library iplass-ee-aws will be removed in the future.

/aws2-service-config.xml

The default config files for aws related contents. Can be used by Enterprise Edition. It is bundled in the iplass-ee-aws2 library.

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

    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

    boolean

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

    If multiple attributes related to bean creation are specified at the same time, the order of precedence is as follows

    ref > builder > class > value

    However, when a property definition is inherited from a parent configuration file, the value of ref defined in the inherited source is not inherited.

  • 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 can be specified multiple times

    Set the definition of the nested property.

    arg

    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.

(Deprecated)SecretsManagerPropertyValueCoder

Get the setting value registered in the secret of AWS Secrets Manager. Class is included in the iplass-ee-aws library.
Use the default credential provider chain for AWS credentials.
For more information, see AWS SDK for Java 1.x Using the Default Credential Provider Chain.

SecretsManagerPropertyValueCoder

Get the setting value registered in the secret of AWS Secrets Manager. Class is included in the iplass-ee-aws2 library.
Use the default credential provider chain for AWS credentials.
For more information, see AWS SDK for Java 2.x Default credentials provider chain.

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)

(Deprecated)org.iplass.mtp.impl.aws.secretsmanager.SecretsManagerPassphraseSupplier

Get from the passphrase registered in the secret of AWS Secrets Manager. Class is included in the iplass-ee-aws library.
Use the default credential provider chain for AWS credentials.
For more information, see AWS SDK for Java 1.x Using the Default Credential Provider Chain.

AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025.
iPLAss recommends deprecating the AWS SDK for Java 1.x-based library iplass-ee-aws and moving to the AWS SDK for Java 2.x-based library iplass-ee-aws2.
If you are using this function, please migrate your settings to org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPassphraseSupplier in the library iplass-ee-aws2.
The library iplass-ee-aws will be removed in the future.

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

Get from the passphrase registered in the secret of AWS Secrets Manager. Class is included in the iplass-ee-aws2 library.
Use the default credential provider chain for AWS credentials.
For more information, see AWS SDK for Java 2.x Default credentials provider chain.

PropertyFilePassphraseSupplier is applied when not specified.

passphrase

Specify a passphrase when using PropertyFilePassphraseSupplier.

aws.secretName

Specify the secret name when using SecretsManagerPassphraseSupplier.

Example 1: Using default obfuscation settings

This is an example of setting a passphrase only.

Example of crypt.properties
passphrase=hogehoge
Example 2: Using SecretsManagerPassphraseSupplier obfuscation settings

This is an example of defining a passphrase in AWS Secrets Manager and using its value.

Example of AWS Secrets Manager configuration ( SecretName = test/passphrase/example2 )
{ "passphrase": "passphrase_value" } (1)
1 Define a key/value named passphrase in SecretsManager.
Example of crypt.properties
passphraseSupplier=org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPassphraseSupplier
aws.secretName=test/passphrase/example2 (1)
1 The secret can be obtained by setting the secret name test/passphrase/example2 registered in AWS Secrets Manager. In this example, passphrase_value is the passphrase.
(Deprecated)SecretsManagerPropertyValueCoder

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

AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025.
iPLAss recommends deprecating the AWS SDK for Java 1.x-based library iplass-ee-aws and moving to the AWS SDK for Java 2.x-based library iplass-ee-aws2.
If you are using this function, please migrate your settings to SecretsManagerPropertyValueCoder in the library iplass-ee-aws2.
The library iplass-ee-aws will be removed in the future.

Items Value

aws.secretName

Specify the secret name.

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/propertyValueCoder/example (1)
1 The relevant secret can be obtained by setting the secret name test/propertyValueCoder/example registered in AWS Secrets Manager.

Please also check Get Setting Values with AWS Secrets Manager as well.

SecretsManagerPropertyValueCoder

Please specify org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPropertyValueCoder to the class.

Items Value

aws.secretName

Specify the secret name.

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.core.config.secretsmanager.awsv2.SecretsManagerPropertyValueCoder
aws.secretName=test/propertyValueCoder/example (1)
1 The relevant secret can be obtained by setting the secret name test/propertyValueCoder/example registered in AWS Secrets Manager.

Please also check Get Setting Values with AWS Secrets Manager as well.

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.

Configuration for AWS Secrets Manager

Pre-register in Key-Value format. This example assumes that the secret name is set as test/propertyValueCoder/example.

{
    "xxxservice_secret_password": "secret_password_value",
    "xxxservice_secret_key": "secret_key_value"
}
Configuration for crypt.properties

Sets the SecretsManagerPropertyValueCoder and the registered secret name.

propertyValueCoder=org.iplass.mtp.impl.core.config.secretsmanager.awsv2.SecretsManagerPropertyValueCoder (1)
aws.secretName=test/propertyValueCoder/example (2)
1 In this example, SecretsManagerPropertyValueCoder is set.
2 Set the secret name test/propertyValueCoder/example registered in AWS Secrets Manager.
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.

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

        <property name="simpleValue" value="value123" />
        <property name="password" value="xxxservice_secret_password" encrypted="true" /> (1)
        <property name="key" value="xxxservice_secret_key" encrypted="true" /> (2)
    </service>
</serviceDefinition>
1 The "xxxservice_secret_password" set in the value attribute of the property element is the AWS Secrets Manager key. The value will be set to secret_password_value.
2 The "xxxservice_secret_key" set in the value attribute of the property element is the AWS Secrets Manager key. The value is set to secret_key_value.

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.

EntityFileUploadService

Services related to file 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 MDC version of the GEM pages.

MdcDetailViewService

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

MdcSearchViewService

This service for settings for the MDC 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

(Deprecated)AWSSetting

This service manages AWS settings. Manage AWS SDK for Java 1.x settings.

AWSSetting

This service manages AWS settings. Manage AWS SDK for Java 2.x 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.

GoogleCloudSettings

This service manages GoogleCloud settings.

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. (Deprecated)AWSSetting

This is the service to manage the settings of AWS.

AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025.
iPLAss recommends deprecating the AWS SDK for Java 1.x-based library iplass-ee-aws and moving to the AWS SDK for Java 2.x-based library iplass-ee-aws2.
If you are using this function, please migrate your settings to AWSSetting in the library iplass-ee-aws2.
The library iplass-ee-aws will be removed in the future.

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

This is the service to manage the settings of AWS. This service manages the AWS SDK for Java 2.x configuration.

Interface Name

org.iplass.mtp.impl.awsv2.AWSSetting

Implementing Class

org.iplass.mtp.impl.awsv2.AWSSetting

The settings of AWSSetting

AWSSetting can be configured with the following items.

Configurable Items
Item Value Description

credentialsProviderFactory

CredentialsProviderFactory

Configuration for generating AwsCredentialsProvider. If not set, DefaultCredentialsProviderFactory will be set.

clientConfig

AWSClientConfig

Default settings that apply to the entire AWS SDK client. Configure AWS regions and communication settings.

CredentialsProviderFactory

Please specify the implementing class of org.iplass.mtp.impl.awsv2.CredentialsProviderFactory to the class.
As the standard implementation, the following CredentialsProviderFactory are provided.

DefaultCredentialsProviderFactory

Please specify org.iplass.mtp.impl.awsv2.DefaultCredentialsProviderFactory to the class.
Create AWS credentials using the default credentials provider chain. There are no configurable items.
For more information, see AWS SDK for Java 2.x Default credentials provider chain.

StaticCredentialsProviderFactory

Please specify org.iplass.mtp.impl.awsv2.StaticCredentialsProviderFactory to the class.
Create AWS credentials using the access key created by AWS. The following items can be set

Item Value Description

accessKeyId

String

Set the Access key ID of the access key.

secretAccessKey

String

Set the Secret access key of the access key.

AWSClientConfig

Please specify org.iplass.mtp.impl.awsv2.AWSClientConfig to the class.
Specifies the AWS SDK client settings. If the client supporting the AWS service can also be configured individually, the individually configured value will take precedence.

Item Value Description

proxyScheme

String

Set the proxy scheme, either http or https.

proxyHost

String

Set the proxy host name.

proxyPort

Integer

Sets the proxy port number. If unspecified, the default port of proxyScheme is set.

connectionTimeoutMillis

Long

Sets the HttpClient connection timeout in milliseconds.

socketTimeoutMillis

Long

Sets the HttpClient socket timeout in milliseconds.

maxConnections

Integer

HttpClient Sets the maximum number of connections.

connectionAcquisitionTimeoutMillis

Long

Sets the pool connection acquisition timeout in milliseconds.

maxPendingConnectionAcquires

Integer

Sets the allowable number of pool connections waiting to be acquired.

apiCallTimeoutMillis

Long

Sets the API overall execution timeout in milliseconds for the entire call, including API retries.
For more information, see Best Practices Configure API timeouts.

apiCallAttemptTimeoutMillis

Long

Set the API execution timeout (in milliseconds), which is the amount of time it takes for HTTP enforcement of a single API execution.
Normally, set a value smaller than apiCallTimeoutMillis.
For more information, see Best Practices Configure API timeouts.

defaultsMode

String

Set Smart configuration defaults. For more information, see HttpClient Smart configuration defaults.

endpointOverride

String

Configure service endpoints, intended for use in non-AWS environments such as localstack.

region

String

Set the AWS region.

Example
<service>
    <interface>org.iplass.mtp.impl.awsv2.AWSSetting</interface>
    <class>org.iplass.mtp.impl.awsv2.AWSSetting</class>

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

    <!--
        Default settings for Aws client. All setting values are optional. Can also be set by individual services, and if so, the values set by individual services take precedence.
    -->
    <!--
    <property name="clientConfig" class="org.iplass.mtp.impl.awsv2.AWSClientConfig">
        <property name="proxyScheme" value="http" />
        <property name="proxyHost" value="proxy.domain" />
        <property name="proxyPort" value="8080" />
        <property name="connectionTimeoutMillis" value="3000" />
        <property name="socketTimeoutMillis" value="3000" />
        <property name="maxConnections" value="5" />
        <property name="connectionAcquisitionTimeoutMillis" value="60000" />
        <property name="maxPendingConnectionAcquires" value="20" />
        <property name="apiCallTimeoutMillis" value="10000" />
        <property name="apiCallAttemptTimeoutMillis" value="3000" />
        <property name="defaultsMode" value="auto" />
        <property name="endpointOverride" value="[setYourDefaultEndpoint]" />
        <property name="region" value="[setYourDefaultRegion]" />
    </property>
    -->
</service>

3.14. BinaryMetaDataService

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

reloadThreadPoolSize

int

Number of threads to perform cache reload processing. The default is 4.

defaultFactory

CacheStoreFactory

Settings of CacheStoreFactory

Text string (excluding defaultFactory and reloadThreadPoolSize)

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.16. 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.17. 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 10000 (10 seconds).

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

This service manages CSV uploads

Interface Name

org.iplass.mtp.impl.fileport.CsvUploadService

Implementing Class

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

This service manages Excel or CSV uploads

Interface Name

org.iplass.mtp.impl.fileport.EntityFileUploadService

Implementing Class

org.iplass.mtp.impl.fileport.EntityFileUploadService

The settings of EntityFileUploadService

EntityFileUploadService can be configured with the following items.

Configurable Items
Item Value Description

showErrorLimitCount

int

Maximum number of fike 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 file 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.fileport.EntityFileUploadService</interface>
    <class>org.iplass.mtp.impl.fileport.EntityFileUploadService</class>
    <!-- Maximum number of file 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 file, is OrderBy always specified?
        For SQLServer, specify true.
    -->
    <property name="mustOrderByWithLimit" value="false"/>
</service>

3.24. EntityCsvImportService

The service manages CSV import of Entity.

Interface Name

org.iplass.mtp.impl.fileport.EntityCsvImportService

Implementing Class

org.iplass.mtp.impl.fileport.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.fileport.EntityCsvImportService</interface>

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

3.25. 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.26. 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.27. 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.28. 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.

csvDownloadFooter

String

Set CSV download footer wording for Entity CRUD API.

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

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

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

</service>

3.29. FulltextSearchService

The service is for full-text searches. As a full-text search implementation, full-text search using Lucene, Elasticsearch and OpenSearch 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
(Deprecated) Full-text Search Using OpenSearch
org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService
Full-text Search Using OpenSearch
org.iplass.mtp.impl.fulltextsearch.opensearch.OpenSearchFulltextSearchService

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

long

maxChunkSize for memory mapping used by org.apache.lucene.store.MMapDirectory class.
If not set, the default value determined by Lucene is used.
* If the value of the item luceneFSDirectory is not org.apache.lucene.store.MMapDirectory, this setting 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-analysis-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-analysis-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. The operators that can be set are AND, OR, 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

(Deprecated) Settings of OpenSearchFulltextSearchService

This is the setting about the full-text search features provided by OpenSearch.
To use this function, please add the library iplass-ee-aws.

AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025.
iPLAss recommends deprecating the AWS SDK for Java 1.x-based library iplass-ee-aws and moving to the AWS SDK for Java 2.x-based library iplass-ee-aws2.
With the support of iplass-ee-aws2, the opensearch functionality has been transferred to iplass-ee-opensearch.
If you are using this function, please migrate your settings to Settings of OpenSearchFulltextSearchService in the library iplass-ee-opensearch.
The library iplass-ee-aws will be removed in the future.

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. The operators that can be set are AND, OR, 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

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

This is the setting about the full-text search features provided by OpenSearch.
To use this function, please add the library iplass-ee-opensearch.

Configurable Items
Item Value Description

restClientFactory

RestClientFactory

RestClientFactory setting.

transportFactory

OpenSearchTransportFactory

Sets the class that creates the OpenSearchTransport instance. If set at the same time as restClientFactory, the restClientFactory setting takes precedence.

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. The operators that can be set are AND, OR, And or Or.

RestClientFactory

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.opensearch.RestClientFactory.

he following RestClientFactory are provided as standard.

DefaultRestClientFactory

Please specify org.iplass.mtp.impl.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

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.opensearch.HttpRequestInterceptorFactory.
Factory class that generates org.apache.http.HttpRequestInterceptor for Apache HttpComponents4.
There are no functions provided as standard.

OpenSearchTransportFactory

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.opensearch.OpenSearchTransportFactory.
Factory class that generates org.opensearch.client.transport.OpenSearchTransport for OpenSearch Client.
The following OpenSearchTransportFactory is provided by default.

AwsSdk2OpenSearchTransportFactory

Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.openserarch.awsv2.AwsSdk2OpenSearchTransportFactory.
Used to sign requests with AWS IAM credentials. Authentication information uses the AWSSetting setting.
The following items can be set

Configurable Items
Item Value Description

host

String

Set the host name of the service. Set the value excluding the scheme ( https:// ).

serviceName

String

Service Name. The service to be used determines the set value.

  • es (Amazon OpenSearch)

  • aoss (Amazon OpenSearch Serverless)

region

String

Specify the region where the service was built.

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.opensearch.analysis.AnalysisFactory.

The following AnalysisFactory are provided as standard.

DefaultAnalysisFactory

Please specify org.iplass.mtp.impl.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.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.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.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory to the class.

Configurable Items
Item Value Description

mode

org.opensearch.client.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.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.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.fulltextsearch.opensearch.analysis.tokenizer.TokenizerFactory.

AnalyzerProperty

It is used when specifying Analyzer. Please specify org.iplass.mtp.impl.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

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 (Deprecated)(when using OpenSearchFulltextSearchService)
<!-- OpenSearch configuration using classes from the iplass-ee-aws project. This configuration is deprecated. -->
<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 (when using OpenSearchFulltextSearchService)
<!-- OpenSearch configuration using classes from the iplass-ee-opensearch project. -->
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <class>org.iplass.mtp.impl.fulltextsearch.opensearch.OpenSearchFulltextSearchService</class>

    <property name="useFulltextSearch" value="true" />
    <property name="maxRows" value="1000" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

    <property name="restClientFactory" class="org.iplass.mtp.impl.fulltextsearch.opensearch.DefaultRestClientFactory" >
        <property name="openSearchUrl" value="{SCHEME}://{ADDRESS}:{PORT}"/>
        <property name="userName" value="openSearchUserName" />
        <property name="password" value="openSearchPassword" />
    </property>

    <!-- To use AWS authentication, comment out restClientFactory and enable the following settings. AWSSetting must also be set. -->
    <!--
    <property name="transportFactory"  class="org.iplass.mtp.impl.fulltextsearch.openserarch.awsv2.AwsSdk2OpenSearchTransportFactory">
        <property name="host" value="{ADDRESS}:{PORT}" />
        <property name="serviceName" value="es or aoss" />
        <property name="region" value="ap-northeast-1" />
    </property>
    -->


    <property name="analysisFactory" class="org.iplass.mtp.impl.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>

    <!--
    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.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 lunece
    directory:
        Set save directory of the index information.
    analyzer:
        Set the analyzer to use

    □ use to Elasticsearch
    elasticsearchUrl:
        Set url of Elasticsearch server.
    defaultAnalyzerProperty:
        Set the analyzer to use

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

    □ use to OpenSearch
    When setting DefaultRestClientFactory to restClientFactory
        openSearchUrl:
            Set url of OpenSearch server.
    When setting AwsSdk2OpenSearchTransportFactory to transportFactory
        host:
            Set url of OpenSearch server without scheme.
    defaultAnalyzerProperty:
        Set the analyzer to use
-->
<service>
    <interface>org.iplass.mtp.impl.fulltextsearch.FulltextSearchService</interface>
    <property name="useFulltextSearch" value="false" />
    <property name="maxRows" value="1000" />
    <property name="highlightPreTag" value="&lt;b style=&quot;background:aquamarine&quot;&gt;" />
    <property name="highlightPostTag" value="&lt;/b&gt;" />
    <property name="throwExceptionWhenOverLimit" value="true"/>

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

    <!-- (Deprecated) 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>
    -->

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

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

    <property name="analysisFactory" class="org.iplass.mtp.impl.fulltextsearch.opensearch.analysis.DefaultAnalysisFactory">
        <property name="analyzer" >
            <property name="my_kuromoji" class="org.iplass.mtp.impl.fulltextsearch.opensearch.analysis.analyzer.KuromojiAnalyzerFactory">
                <property name="mode" value="Search"/>
                <property name="method" value="Nfc"/>
            </property>
        </property>
    </property>
    <property name="defaultAnalyzerProperty" >
        <property name="analyzer" value="kuromoji"/>
    </property>
    <property name="analyzerPropertyPerEntity" >
        <property name="testEntity" class="org.iplass.mtp.impl.fulltextsearch.opensearch.mappings.AnalyzerProperty">
            <property name="analyzer" value="my_kuromoji"/>
        </property>
    </property>
    -->
</service>

3.30. GemConfigService

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.

fileSupportType

FileSupportType

File format to be used for download and upload. Specify from CSV EXCEL SPECIFY. The default value is CSV.

csvDownloadMaxCount

int

Maximum number of file downloads. The default value is 65535.

uploadableCsvDownloadLoadSize

int

Size of Entity batch loads containing multiplicity multiple references when downloading file 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 file downloads. The default value is true.

uploadableCsvDownloadWithMappedByReference

boolean

Whether to output mapped by reference properties when downloading file in Upload format. Default value is false.

csvUploadCommitCount

int

Set the file upload commit batch size. The default value is 1000.

csvUploadAsync

boolean

Whether to upload file asynchronously. The default value is false. When asynchronous is selected, please set useQueue of RdbQueueService to true.

csvUploadStatusPollingInterval

int

Status polling interval for file upload. The default value is 10000 (10 seconds).

searchResultCacheLimit

int

Search internal cache size for obtaining User name when downloading file. 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 file 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 s 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 file download. Use the item that specified as Property used as display label in ReferencePropertyEditor Setting as a file 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.

richTextLibrary

String

Default rich text library to be used with StringPropertyEditor’s RichText type. Specifies QUILL or CKEDITOR. The default value is QUILL.

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>

    <!-- File format to be used for download and upload. Specify from `CSV` `EXCEL` `SPECIFY` -->
    <property name="fileSupportType" value="CSV" />

    <!-- Maximum number of file 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"/>

    <!-- File download reference item version output -->
    <property name="csvDownloadReferenceVersion" value="true"/>

    <!-- File upload batch commit size -->
    <property name="csvUploadCommitCount" value="1000"/>

    <!-- Internal cache size of searches for user name acquisition when downloading file -->
    <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"/>

    <!-- File 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 file 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 file upload  -->
    <!-- If true(asynchronous) was selected, please also set the useQueue property in RdbQueueService to true. -->
    <property name="csvUploadAsync" value="false"/>

    <!-- File 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.31. GoogleCloudSettings

This service manages GoogleCloud settings.

Interface Name

org.iplass.mtp.impl.googlecloud.GoogleCloudSettings

Implementing Class

org.iplass.mtp.impl.googlecloud.GoogleCloudSettings

The settings of GoogleCloudSettings

GoogleCloudSettings can be configured with the following items.

Configurable Items
Item Value Description

credentialsFactory

GoogleCredentialsFactory, Required

Set the class to generate GoogleCredentials.

GoogleCredentialsFactory

This class implements the interface org.iplass.mtp.impl.googlecloud.GoogleCredentialsFactory.

The following GoogleCredentialsFactory features are provided as standard features.

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

    • This function generates authentication information using a private key file for service accounts.

The settings of ServiceAccountSecretKeyGoogleCredentialsFactory

Set the org.iplass.mtp.impl.googlecloud.ServiceAccountSecretKeyGoogleCredentialsFactory.

It is assumed that the service account private key file will be used for authentication when using a non-Google environment.
If you use the Google environment, please consider a method other than a service account private key file. cf. Best practices for managing service account keys

ServiceAccountSecretKeyGoogleCredentialsFactory can be configured with the following items.

項目 説明

serviceAccountSecretKeyFilePath

String, Required

Set the path (physical file path or resource path) to the service account private key file obtained from the Google Cloud environment.

scope

String, Multiple

Scope to be set for GoogleCredentials. Check OAuth 2.0 Scopes for Google APIs for available scopes.

proxyHost

String

Host name when using proxy.

proxyPort

int

port when using proxy.

Example
<!-- GoogleCloudSettings -->
<service>
    <interface>org.iplass.mtp.impl.googlecloud.GoogleCloudSettings</interface>
    <class>org.iplass.mtp.impl.googlecloud.GoogleCloudSettings</class>

    <property name="credentialsFactory" class="org.iplass.mtp.impl.googlecloud.ServiceAccountSecretKeyGoogleCredentialsFactory">
        <!-- Set up a private key file (json) for the service account -->
        <property name="serviceAccountSecretKeyFilePath" value="/path/to/service-account.json" />
        <property name="scope" value="https://www.googleapis.com/auth/datastore" />
        <property name="scope" value="https://www.googleapis.com/auth/cloud-platform" />
        <property name="scope" value="https://www.googleapis.com/auth/firebase.messaging" />
        <!-- Setting when using proxy -->
        <property name="proxyHost" value="xxxxxx.dentsusoken.com" />
        <property name="proxyPort" value="8080" />
    </property>
</service>

3.32. 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 (XML) of Infinispan. The setting file can be a classpath resource path or a file path. See the Schema reference at Infinispan Document for details on the setting file.

infinispan.serialization.allowList.class

String, Multiple

When using Infinispan to send and receive messages, set the class names that are allowed to be serialized when managing cache information in an Infinispan cluster. The class name should be set to the fully qualified class name.

infinispan.serialization.allowList.regex

String, Multiple

When using Infinispan to send and receive messages, set a regular expression pattern for class names that are allowed to be serialized when cache information is managed by an Infinispan cluster.

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

    <!-- To add your own class to message sending/receiving data and cache information, set the class. -->
    <!--
    <property name="infinispan.serialization.allowList.class" value="package.path.Class" />
    <property name="infinispan.serialization.allowList.regex" value="^(\[L|)package\.path\..*(;|)$" />
    -->
</service>

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

detectAbandonedStream

boolean

Specifies whether to detect and close the InputStream/OutputStream used for input/output of binary data. The default value is false .

logAbandoned

boolean

When detectAbandonedStream is true , whether to output a stack trace to identify the location where the stream was created. The default value is false .

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.

(Deprecated)S3LobStore

Please specify org.iplass.mtp.impl.aws.lobstore.s3.S3LobStore to the class.

AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025.
iPLAss recommends deprecating the AWS SDK for Java 1.x-based library iplass-ee-aws and moving to the AWS SDK for Java 2.x-based library iplass-ee-aws2.
If you are using this function, please migrate your settings to S3LobStore in the library iplass-ee-aws2.
The library iplass-ee-aws will be removed in the future.

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