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.
<?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.
|
||
/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.
<?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.
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.
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.
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.
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.
<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.
<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 Implementationimport 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:
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 is applied when not specified. |
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.
PropertyFilePassphraseSupplier is applied when not specified. |
||
passphrase |
Specify a passphrase when using PropertyFilePassphraseSupplier. |
||
aws.secretName |
Specify the secret name when using SecretsManagerPassphraseSupplier. |
This is an example of setting a passphrase only.
passphrase=hogehoge
This is an example of defining a passphrase in AWS Secrets Manager and using its value.
{ "passphrase": "passphrase_value" } (1)
1 | Define a key/value named passphrase in SecretsManager. |
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. |
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. |
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:
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.
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:
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 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 |
-Dmtp.config.crypt=/crypt.properties
<context-param> <param-name>mtp.config.crypt</param-name> <!-- ■ crypt config file ■ --> <param-value>/crypt.properties</param-value> </context-param>
import org.iplass.mtp.runtime.EntryPoint;
:
:
//initialize EntryPoint on application startup
EntryPoint entryPoint = EntryPoint.builder()
.config("/app-service-config.xml")
.crypt("/crypt.properties").build();
We will use the Encoder for Obfuscation. The crypt.properties will be utilized when obfuscating. Passphrase will be directly inputted from the console.
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 the setting value registered in the secret of AWS Secrets Manager when using SecretsManagerPropertyValueCoder.
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"
}
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. |
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 \\ .
|
<?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 |
<?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 |
<?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 |
---|---|
A service for executing tasks asynchronously inside the platform. |
|
This service performs asynchronous execution using HttpMessageChannel for cluster communication. |
|
This service outputs registration, update, and deletion for Entity as an operation log. |
|
This service manages authentication-related loggers. |
|
This is the service for authentication. |
|
A service for managing authentication tokens. |
|
This service performs AutoNumber type numbering. |
|
This is a service to tell system not to store binary format metadata in memory as a byte array. |
|
Cache service. |
|
The service for the communication between clusters. |
|
This is a service for database connection. |
|
Cube aggregation service. |
|
Standard asynchronous execution service using the queue feature of RDB. |
|
the Service that manages entities. |
|
Full text search service. |
|
Multilingual localization service. |
|
The service that manages the interceptors called when commands are executed. |
|
The service to manage the operation of saved lists. |
|
The service to store LOB data permanently. |
|
The service to modify the overall performance of all log services. |
|
The service to send mail. |
|
The service to manage resource bundles. |
|
The service to manage Metadata. |
|
The service for oid auto number feature. |
|
The service to generate verification code for two-step-verification. |
|
The service to manage property. |
|
The service of property-wised encryption. |
|
The service to provide push notification to mobile terminals. |
|
This service manages EQL external hint phrases. |
|
This service manages RdbAdapter, which is an interface with various RDBs. |
|
This is a queue service using RDB. |
|
This service manages the definition (metadata) of scheduled tasks. |
|
The service to manage dynamic script. |
|
This service manages settings for generating random character strings. |
|
This is a service for sending SMS. |
|
A service that persists Entity data. |
|
A service for parsing. |
|
This service auto-assigns task IDs. |
|
It is the service that sets the behavior of the entire tenant. |
|
It is a service for performing input check。 |
|
The service managing webhook operations. |
|
The service managing workflow operations. |
2.2. Web Services
Such as Action and WebApi, these Web related services are managed.
Name | Description |
---|---|
It is the service that manages the interceptor called when a request is sent from the browser. |
|
The service to manage CSV uploads. |
|
Services related to CSV import of Entity. |
|
Services related to file import of Entity. |
|
This service manages EntityWebApi. |
|
This is a service for storing IP addresses accessed in the past. |
|
The service for managing the functions of the OAuth2.0 Authorization Server and OpenID Connect Provider. |
|
The service for managing the functions of OpenID Connect Relying Party. |
|
This service manages report output(such as receipts). |
|
A service for SAML authentication. |
|
This service manages the operating status of tenants. |
|
This service manages WebApi. |
|
This is a service that defines the class to be converted in JAXB of WebApi. |
|
A service that manages the overall operation of Web applications. |
|
The service to control the behavior of OData Service. |
2.3. Gem services
Gem(Generic Entity Manager) page related services.
Name | Description |
---|---|
Aggregation Services. |
|
The services to manage the major templates of Cube aggregation. |
|
The service to manage EntityListing mechanism. |
|
The service for general settings for GEM pages. |
|
This service for general settings for the MDC version of the GEM pages. |
|
This service for settings for the MDC version of the Detail pages. |
|
This service for settings for the MDC version of the Search pages. |
|
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 |
---|---|
A service related to AdminConsole operation logs. |
|
The service for general settings of AdminConsoleService. |
2.5. Tools services
The services related all kind of tools.(AdminConsole tools and batches.)
Name | Description |
---|---|
Services related to Entity data tools. |
|
Services related to StorageSpace migration tools. |
|
A service related to tenant management tools. |
2.6. Other services
The service group for other plug-in modules.
Name | Description |
---|---|
This service manages AWS settings. Manage AWS SDK for Java 1.x settings. |
|
This service manages AWS settings. Manage AWS SDK for Java 2.x settings. |
|
The service to manage InfinispanService. |
|
The service to manage RedisService. |
|
The service to manage robot-access prevention by reCAPTCHA. |
|
This is a service for verification using email and SMS. |
|
Web membership management service. |
|
This service for collecting metrics and linking to a monitoring system. |
|
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. |
Please specify the implementing class of org.iplass.mtp.web.interceptor.RequestInterceptor to the class.
As the standard implementation, the followingRequestInterceptor are provided.
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.
Please specify org.iplass.mtp.impl.web.interceptors.ActionCacheInterceptor to the class.
This is the interceptor that performs caching. There is no configurable settings.
Please specify org.iplass.mtp.impl.web.interceptors.AuthInterceptor to the class.
This is the interceptor that performs authentication. There is no configurable settings.
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 (:). |
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. |
warnLogThresholdOfExecutionTimeMillis |
long |
The threshold of the execution time (milliseconds) to output logs at WARN level. |
This is the interceptor that performs maintenance checks. here is no configurable settings.
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 |
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. |
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
|
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 |
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
|
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 |
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
org.iplass.mtp.impl.entity.auditlog.LoggerAuditLoggingService
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 |
Set an individual MaskTarget to be used when masking logs. |
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 |
Sets the mask method |
Specify the implementing class of org.iplass.mtp.impl.entity.auditlog.LogMaskHandler. The following MaskHandler is provided by default.
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. |
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 |
maskRegex |
String |
A regular expression pattern. The string can be a pattern from |
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 |
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) |
Please specify the implementing classs of org.iplass.mtp.impl.auth.log.AuthLogger.
As for common standards, the following AuthLoggers are provided.
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 |
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. |
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.
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
org.iplass.mtp.impl.auth.AuthService
org.iplass.mtp.impl.auth.EnterpriseAuthService
Settings for AuthService
These are the setting items for AuthService.
Configurable items
Item | Value | Description |
---|---|---|
userSessionStore |
Specifying the store objects which manage the user sessions. |
|
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.
Please specify the implementation of org.iplass.mtp.impl.auth.authenticate.UserSessionStore for class.
org.iplass.mtp.impl.auth.authenticate.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
The default value is |
Please specify the implementation of org.iplass.mtp.impl.auth.authorize.AuthorizationProvider to the class.
org.iplass.mtp.impl.auth.authorize.builtin.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. |
Please specify the implementation of org.iplass.mtp.impl.auth.authorize.builtin.AuthorizationContextHandler to the class.
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
A class to manage the WebApi privilege permissions.
Please specify org.iplass.mtp.impl.auth.authorize.builtin.action.ActionAuthContextHandler to the class.
A class to manage the WebApi privilege permissions.
Please specify org.iplass.mtp.impl.auth.authorize.builtin.cube.CubeAuthContextHandler to the class.
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. |
A class to manage the WebApi privilege permissions.
Please specify org.iplass.mtp.impl.auth.authorize.builtin.webapi.WebApiAuthContextHandler to the class.
A class to manage the workflow privilege permissions.
Please specify org.iplass.mtp.impl.auth.authorize.builtin.workflow.WorkflowAuthContextHandler to the class.
Please specify the implementation of org.iplass.mtp.impl.auth.authenticate.AuthenticationProvider to the class.
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
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 |
updatable |
boolean |
Whether to use the account management module. The default value is true.
|
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: |
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 |
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 |
stretchCount |
int |
Number of stretches when doing password hash. The default value is 1000. |
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 |
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. |
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.
|
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. |
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.
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 |
refer to BuiltinAuthenticationProvider |
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 |
accountHandleClassForTrust |
String |
Specify the AccountHandle implementing classs to call for upgrading the trusted authentication.
For instance |
userEntityResolver |
UserEntityResolver |
Set the acquisition method for user Entity after successful authentication. You can specify one of the following: |
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.
|
bearerTokenHeaderOnly |
boolean |
Set to true only when you want to restrain the system to get the Bearer Token only from the HTTP Header. |
authTokenType |
String |
Specify the AuthTokenHandler’s type that will be handled by the BearerTokenAutoLoginHandler which are defined by AuthTokenService. |
Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.
For more details, please refer to DefaultUserEntityResolver.
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.
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 |
refer to BuiltinAuthenticationProvider |
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 |
accountHandleClassForTrust |
String |
Specify AccountHandle implementing class for upgrading trusted authentication.
For instance |
userEntityResolver |
UserEntityResolver |
Set the acquisition method of user Entity after successful authentication. You can specify one of the following: |
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.
Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.
For more details, please refer to DefaultUserEntityResolver.
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.
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 |
refer to BuiltinAuthenticationProvider |
accounts |
AccountConfig, Multiple |
Settings baout the account information. |
tenantIds |
int, Multiple |
A tenant that can be logged into the account specified in |
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 |
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
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 |
refer to BuiltinAuthenticationProvider |
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: DefaultUserEntityResolver (Default) 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. |
Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.
For more details, please refer to DefaultUserEntityResolver.
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.
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.
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 |
refer to BuiltinAuthenticationProvider |
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. DefaultUserEntityResolver (Default) 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. |
Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.
For more details, please refer to DefaultUserEntityResolver.
Please specify org.iplass.mtp.impl.auth.authenticate.AccountBaseUserEntityResolver to the class.
UserエンティティがDB上に存在せずともログイン可能とします。 oid、accountId、nameにJEEコンテナが返却したPrincipalオブジェクトのnameをセットしたUserエンティティを疑似的に生成します。 roleAsGroupが指定されている場合、当該roleはグループコードとして設定されます。
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.
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 |
Please refer to BuiltinAuthenticationProvider. |
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. DefaultUserEntityResolver (Default) 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. |
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. |
Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.
For more details, please refer to DefaultUserEntityResolver.
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.
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. |
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.
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="(&(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="(&(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>
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 |
Please refer to BuiltinAuthenticationProvider |
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 |
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. DefaultUserEntityResolver (Default) 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. |
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
Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.
For more details, please refer to DefaultUserEntityResolver.
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.
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.
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 |
refer to BuiltinAuthenticationProvider |
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. DefaultUserEntityResolver (Default) 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. |
Please specify org.iplass.mtp.impl.auth.authenticate.DefaultUserEntityResolver to the class.
For more details, please refer to DefaultUserEntityResolver.
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.
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.
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 |
refer to BuiltinAuthenticationProvider |
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. |
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. |
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.
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.
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 (※). OnetimeCodeAuthenticationProvider ※ When using the login authentication provided by iPLAss GEM module |
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.
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) |
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. |
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.
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.
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. |
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 |
handler |
AuthTokenHandler, Multiple |
The configuration for AuthTokenHandler. |
Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.token.AuthTokenStore to the class.
In standard, the following AuthTokenStore are provided.
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). |
authTokenStore |
The actual AuthTokenStore that stores the authentication token. |
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 |
authTokenStore |
The actual AuthTokenStore that stores the authentication token. |
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
|
Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.token.AuthTokenHandler.
The following AuthTokenHandler is provided in the standard.
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, |
type |
String |
Type. If it is not set, it will be |
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, |
visible |
boolean |
Whether it is visible via |
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. |
stretchCount |
int |
Number of stretches. The default is 1. |
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, |
type |
String |
Type. If not set, it will be |
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, |
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, |
type |
String |
Type. If it is not set, it will be |
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. |
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, |
refreshTokenStore |
String |
Set the name of the AuthTokenStore used to store the RefreshToken. If not specified, |
type |
String |
Set the type to identify AccessToken. If not set, it will be |
refreshTokenType |
String |
RefreshToken type. If not set, it will be |
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, |
refreshTokenSecureRandomGeneratorName |
String |
SecureRandomService Specify the the Token string generator of RefreshToken defined in.
If not set, |
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, |
type |
String |
Defines the type. |
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, |
oldCredentialValidDays |
int |
Valid period (days) of Credentials generated in the past can be specified. If not specified, the past Credential will be destroyed immediately. |
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, |
type |
String |
The type indicator for WebhookAuthToken. The default value is |
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, |
type |
String |
Type. If not set, it will be |
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, |
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
org.iplass.mtp.impl.counter.RdbTableCounterService
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 |
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 |
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. |
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 |
The settings of AWSClient side(default) |
|
configurationMap |
ClientConfiguration、in format of Map |
Individual settings for the AWSClient side. If not configured individually, the default |
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 |
Configuration for generating AwsCredentialsProvider. If not set, DefaultCredentialsProviderFactory will be set. |
|
clientConfig |
Default settings that apply to the entire AWS SDK client. Configure AWS regions and communication settings. |
Please specify the implementing class of org.iplass.mtp.impl.awsv2.CredentialsProviderFactory to the class.
As the standard implementation, the following CredentialsProviderFactory are provided.
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.
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. |
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. |
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. |
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 |
Settings of CacheStoreFactory |
|
Text string (excluding |
CacheStoreFactory, Multiple |
specific Settings of CacheStoreFactory。 |
Please specify the implementing class of org.iplass.mtp.impl.cache.store.CacheStoreFactory.
As our standard implementation, the following CacheStoreFactory implementations are provided.
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. |
This is the CacheStoreFactory using Rdb. The following items can be configured.
Item | Value | Description |
---|---|---|
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 |
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. |
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. |
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 |
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 |
Settings of CacheKeyResolver。 |
|
cacheIndexResolver |
CacheKeyResolver, Multiple |
Settings of CacheKeyResolver of the indexes. |
store |
Settings of CacheStoreFactory |
|
listener |
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). |
CacheStoreFactory that delays reflection to the back-end CacheStore while the transaction is valid. The following items can be configured.
Item | Value | Description |
---|---|---|
backendStore |
Settings of the back end’s CacheStoreFactory. |
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. |
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 |
Connection pool configuration (using Apache Commons-pool2). |
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)
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 |
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. |
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.
Please specify org.iplass.mtp.impl.counter.CachableRdbTableCounterServicea$CounterCacheKeyResolver to the class.
The CacheKeyResolver of CounterKey type. There is no configurable items.
Please specify org.iplass.mtp.impl.cache.store.keyresolver.IntegerCacheKeyResolver to the class.
CacheKeyResolver of Integer type. There is no configurable items.
Please specify org.iplass.mtp.impl.entity.cache.QueryCacheKeyResolver to the class.
CacheKeyResolver of Query type. There is no configurable items.
Please specify org.iplass.mtp.impl.cache.store.keyresolver.StringCacheKeyResolver to the class.
CacheKeyResolver of text strings type. There is no configurable items.
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. |
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 |
Settings of the message channel of the communication between clusters. |
Please specify the implementing class of org.iplass.mtp.impl.cluster.channel.MessageChannel.
As standard, the following MessageChannel are provided.
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. 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.
|
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). |
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.
|
clusterName |
String |
Specify the JGroups cluster name. The node specifying same cluster will be the member of the corresponding cluster. |
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
<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>
<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>
<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
org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory
org.iplass.mtp.impl.rdb.connection.DataSourceConnectionFactory
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. |
warnLogBefore |
boolean |
Specify whether to output the advance warning log. |
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. |
transactionIsolationLevel |
String |
Transaction isolation level. The following can be set.
|
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 |
clientInfoMaxLength |
int |
Specifies the maximum number of characters to be set in the clientInfo of Connection.
-1 means no limit. |
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. |
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 |
jndienv.<key Name> |
String, Multiple |
JNDI’s environment property |
dataSource |
javax.sql.DataSource |
Specify an class instance of the implementations of javax.sql.DataSource. |
warnLogThreshold |
int |
Time threshold (milliseconds) to output warning log. |
warnLogBefore |
boolean |
Specify whether to output the warning log in advance. |
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. |
transactionIsolationLevel |
String |
Transaction isolation level. The following can be selected:
|
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 |
clientInfoMaxLength |
int |
Specifies the maximum number of characters to be set in the clientInfo of Connection.
-1 means no limit. |
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. |
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 |
replicaDataSourceName |
String, Multiple |
Data Source Name of the read replica |
jndienv.<key Name> |
String, Multiple |
JNDI’s environment property |
dataSource |
javax.sql.DataSource |
Specify an class instance of the implementations of javax.sql.DataSource. |
replicaDataSource |
javax.sql.DataSource, Multiple |
Specify an class instance of the implementations of javax.sql.DataSource. |
warnLogThreshold |
int |
Time threshold (milliseconds) to output warning log. |
warnLogBefore |
boolean |
Specify whether to output the warning log in advance. |
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. |
transactionIsolationLevel |
String |
Transaction isolation level. The following can be selected:
|
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 |
clientInfoMaxLength |
int |
Specifies the maximum number of characters to be set in the clientInfo of Connection.
-1 means no limit. |
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. |
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 |
defaultUpdateTargetVersionForNoneVersionedEntity |
TargetVersion |
Default TargetVersion when updating a non-version controlled Entity, default value is |
mustOrderByWithLimit |
boolean |
Sets whether OrderBy is always specified when downloading CSV in upload format, if a maximum number limit is specified. Default value is If you are using SQLServer, specify
|
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
|
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 |
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 |
Please specify the implementing class of org.iplass.mtp.impl.aggregation.cube.engine.inmemory.fact.load.LoadStrategy.
The following LoadStrategy is provided as standard.
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.
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.
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. |
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} < 10 THEN '0' WHEN ${1} < 20 THEN '10' WHEN ${1} < 30 THEN '20' WHEN ${1} < 40 THEN '30' WHEN ${1} < 50 THEN '40' WHEN ${1} < 60 THEN '50' WHEN ${1} < 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} < 10 THEN '0' WHEN ${1} < 20 THEN '10' WHEN ${1} < 30 THEN '20' WHEN ${1} < 40 THEN '30' WHEN ${1} < 50 THEN '40' WHEN ${1} < 60 THEN '50' WHEN ${1} < 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 |
defaultUpdateTargetVersionForNoneVersionedEntity |
TargetVersion |
Default TargetVersion when updating a non-version controlled Entity, default value is |
mustOrderByWithLimit |
boolean |
Sets whether OrderBy is always specified when downloading file in upload format, if a maximum number limit is specified. Default value is If you are using SQLServer, specify
|
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 |
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 |
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. |
Please specify the implementing class of org.iplass.mtp.entity.interceptor.EntityInterceptor.
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 |
||
canCreateUserWithSpecificPassword |
boolean |
Allow password specification on Insert of User entity? Default value is
|
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.
|
||
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.
|
||
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
org.iplass.mtp.impl.fulltextsearch.lucene.LuceneFulltextSearchService
org.iplass.mtp.impl.fulltextsearch.elasticsearch.ElasticsearchFulltextSearchService
org.iplass.mtp.impl.aws.fulltextsearch.opensearch.OpenSearchFulltextSearchService
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 |
|
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 |
includeMappedByReferenceIfNoPropertySpecified |
boolean |
Set whether to get the value of the referenced entity in the Entity of the search result. The default value is |
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).
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. |
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.
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.
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.
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.
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.
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.
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.
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 |
|
Lucene Directory for storing INDEX files in the file system Implementation class. |
luceneFSDirectoryMaxChunkSizeMB |
long |
maxChunkSize for memory mapping used by |
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 |
searcherAutoRefreshTimeMinutes |
int |
The time interval (minutes) at which the Lucene IndexSearcher (≒ IndexReader) held by iPLAss is automatically updated. |
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 |
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.
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. |
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 |
mode |
org.apache.lucene.analysis.ja.JapaneseTokenizer.Mode |
Tokenization mode. Please refer to |
userDictionary |
String |
User-defined dictionary. Must be placed on the classpath. |
stopwords |
String |
Stopword definition file. Must be placed on the classpath. |
stoptags |
String |
Stop tag definition file. Must be placed on the classpath. |
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 |
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 setting. |
|
analysisFactory |
AnalysisFactory setting. |
|
defaultAnalyzerProperty |
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 |
Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.elasticsearch.RestClientFactory.
The following RestClientFactory are provided as standard.
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 |
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.
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. |
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.
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 |
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 |
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.
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.
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.
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. |
Configurable Items
Item | Value | Description |
---|---|---|
restClientFactory |
RestClientFactory setting. |
|
analysisFactory |
AnalysisFactory setting. |
|
defaultAnalyzerProperty |
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 |
Please specify the implementing class of org.iplass.mtp.impl.aws.fulltextsearch.opensearch.RestClientFactory.
The following RestClientFactory are provided as standard.
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 setting. Applies when userName and password values are not set. |
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.
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. |
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.
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. |
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.
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 |
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 |
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.
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.
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.
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 setting. |
|
transportFactory |
Sets the class that creates the OpenSearchTransport instance. If set at the same time as restClientFactory, the restClientFactory setting takes precedence. |
|
analysisFactory |
AnalysisFactory setting. |
|
defaultAnalyzerProperty |
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 |
Please specify the implementing class of org.iplass.mtp.impl.fulltextsearch.opensearch.RestClientFactory.
he following RestClientFactory are provided as standard.
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 setting. Applies when userName and password values are not set. |
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.
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.
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.
For more information, see Connecting to Amazon OpenSearch Service | Serverless. |
region |
String |
Specify the region where the service was built. |
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.
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. |
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.
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 |
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 |
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.
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.
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.
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="<b style="background:aquamarine">" />
<property name="highlightPostTag" value="</b>" />
<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
org.iplass.gem.GemConfigService
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 |
||
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 |
||
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 |
||
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)
|
||
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
|
||
useDisplayLabelItemInCsvDownload |
boolean |
Whether to use a display label item in file download. Use the item that specified as
|
||
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. |
||
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. Configuration example
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 |
||
ImageColors |
ImageColorSetting, Multiple |
Change the image colors on the search screen, detail screen, menu, etc. |
||
skins |
Skin, Multiple |
Skins. |
||
themes |
Theme, Multiple |
Themes. |
||
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. |
||
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. |
||
autoGenerateSystemPropertyDisplayPosition |
String |
"System information" display position for automatic generation processing of EntityView screens.
|
||
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 |
||
autoGenerateUseUserPropertyEditor |
boolean |
Is UserPropertyEditor used for |
||
permitRolesToGem |
String, Multiple |
Gem permit roles in GemAuth.
The default value is |
||
permitRolesToNoView |
String, Multiple |
Permit roles in GemAuth when EntityView is undefined.
The default value is |
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. |
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 |
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. |
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. |
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. |
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. |
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.
EntityViewHepler for community edition.
Please specify org.iplass.gem.EntityViewHelperImpl to the class. There is no configurable items.
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. |
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.
-
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 |
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. |
Please specify the implementing class of org.iplass.mtp.command.interceptor.CommandInterceptor.
As the standard implementation, the following CommandInterceptor are provided.
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.
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.
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.
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.
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.
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. |
warnLogThresholdOfExecutionTimeMillis |
long |
The threshold of the execution time (milliseconds) to output logs at WARN level. |
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.
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.
It can be used via webApi, soap.
It is the interceptor to toggle maintenance mode on a tenant basis. There is no configurable items.
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.
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 |
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 |
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. |
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. |
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. |
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 When set to
|
||
serializedClassResolver |
Resolver for the class used to deserialize the saved list. This can be used when you want to customize the deserialization process. |
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 |
Set the LobStore for Binary data. |
|
longTextStore |
Set the LobStore for long text. |
|
defaultLobStoreName |
String |
The name of the default Lob store. The default value is |
manageLobSizeOnRdb |
boolean |
Whether to manage the Lob size with Rdb (lob_store). The default value is |
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 |
invalidKeepDay |
int |
Number of days to keep invalid (non-reference) data. The cleaner will delete data older than specified here. The default value is |
cleanCommitLimit |
int |
Commit batch size of the cleaner deletion process. The default value is |
detectAbandonedStream |
boolean |
Specifies whether to detect and close the InputStream/OutputStream used for input/output of binary data. The default value is |
logAbandoned |
boolean |
When detectAbandonedStream is |
Please specify the implementing class of org.iplass.mtp.impl.lob.lobstore.LobStore.
As the standard implementation, the following LobStore are provided.
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 |
The validation process corresponding to Lob. |
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 |
The validation process corresponding to Lob. |
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. |
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 |
Specify this item when it is needed to encrypt and obfuscate S3 objects. |
|
overwriteFile |
boolean |
Set whether to overwrite the existing S3 objects. |
useTransferManager |
boolean |
Use TransferManager or not. The default value is |
transferManagerConfiguration |
The settings of TransferManager |
|
transferManagerThreadPoolSize |
int |
The size of thread pool that use at TransferManager. When |
lobValidator |
The validation process corresponding to Lob. |
|
requiredTagMap |
String, in format of Map |
Specify in Map format when checking the required tag value in the S3 object. Set the tag name as key and the tag value as value. |
retryTagCheckIntervalMillis |
long |
Retry interval when checking tags (milliseconds). |
retryTagCheckCount |
int |
The number of retry attempts for checking tags. |
Please specify com.amazonaws.services.s3.transfer.TransferManagerConfiguration to the class. So to configure the settings of TransferManager.
Please specify org.iplass.mtp.impl.aws.lobstore.s3.S3Encryption to the class.
As our standard implementation, the following S3Encryption are provided.
Please specify the implementing class of org.iplass.mtp.impl.aws.lobstore.s3.SseS3Encryption.
Perform the Encryption process with SSE-S3 method. There are no changeable settings available.
Please specify org.iplass.mtp.impl.aws.lobstore.s3.SseKmsEncryption to the class.
Perform the Encryption process with SSE-KMS methods. The following items can be configured.
Item | Value | Description |
---|---|---|
awsKmsKeyId |
String |
The Key Id for AWS Key Management Service (KMS)S3 |
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3LobStore to the class.
This is the LobStore using S3.
The following items can be configured.
Item | Value | Description |
---|---|---|
bucketName |
String, required |
S3 bucket name. |
s3controller |
S3 control function. If not set, the default value is S3AsyncClientController. |
|
clientConfig |
Manage S3 client settings. Configure AWS regions and communication settings. Used to initialize S3Controller and S3ClientFactory. |
|
overwriteFile |
boolean |
Set whether to overwrite the existing S3 objects. |
keyPrefix |
String |
Set a prefix to the S3 object key. Example result with and without prefix when object key is "object/key/file.dat"
Set the prefix according to Object key naming guidelines. |
lobValidator |
The validation process corresponding to Lob. |
|
requiredTagMap |
String, in format of Map |
Specify in Map format when checking the required tag value in the S3 object. Set the tag name as key and the tag value as value. |
retryTagCheckIntervalMillis |
long |
Retry interval when checking tags (milliseconds). |
retryTagCheckCount |
int |
The number of retry attempts for checking tags. |
Please specify the implementing class of org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3Controller to the class.
As the standard implementation, the following S3Controller are provided.
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3SyncClientController to the class.
S3 control function using S3Client. Uses authentication information and client settings managed in AWSSetting. The following items can be set.
Item | Value | Description |
---|---|---|
s3ClientFactory |
Specify the S3 synchronization client generation function. If not set, the default value is S3SyncClientFactory. |
|
requestConfigureList |
S3RequestConfigure, Multiple |
Additional settings are configured at the time the S3 request is executed. |
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3AsyncClientController to the class.
S3 control function using S3AsyncClient. Uses authentication information and client settings managed in AWSSetting. The following items can be set.
Item | Value | Description |
---|---|---|
s3ClientFactory |
Specify S3 asynchronous client generation functionality. If not set, the default value is S3AsyncClientFactory. |
|
requestConfigureList |
S3RequestConfigure, Multiple |
Additional settings are configured at the time the S3 request is executed. |
Please specify the implementing class of org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3ClientFactory to the class.
As the standard implementation, the following S3ClientFactory are provided.
-
Class to generate synchronous clients
-
Class to generate asynchronous clients
The maximum size of an S3 object part is 5GB. This is the maximum object size for clients that do not support transparent multipart. Please refer to S3 clients in the AWS SDK for Java 2.x for S3 Client selection. |
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3SyncClientFactory to the class.
Transparent multipart operation is not supported.
Generate S3Client for the synchronization client. There are no configuration items.
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3AsyncClientFactory to the class.
Transparent multipart operation can be enabled by configuration.
Generates an asynchronous client, S3AsyncClient. The following items can be configured.
Item | Value | Description |
---|---|---|
multipartEnabled |
Boolean |
If set to true, enables multipart. If not set, the default value is false. |
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3AsyncCrtClientFactory to the class.
Transparent multipart operation is supported.
Generates an asynchronous client, S3AsyncClient. The client generated by this function is AWS CRT-based S3 client. There are no configuration items.
If performance of S3 operations is important to you, we recommend using a CRT-based client.
CRT-based clients use native libraries. Therefore, please make sure that the system runs on the platform you are using.
The addition of the library software.amazon.awsdk.crt:aws-crt
is required to use the feature.
For more information, see Add dependencies to use the AWS CRT-based S3 client.
Please specify the implementing class of org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3RequestConfigure to the class.
Specify if you want to add additional settings to GetObjectRequest, PutObjectRequest, DeleteObjectRequest, HeadObjectRequest, or GetObjectTaggingRequest.
As the standard implementation, the following S3RequestConfigure are provided.
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3PutRequestEncryptionSseKmsConfigure to the class.
Set SSE-KMS encryption when executing S3 PutObjectRequest. Set the following items
Item | Value | Description |
---|---|---|
awsKmsKeyId |
String |
Set the KMS key ID. Setting this will configure encryption using the specified key. |
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3PutRequestEncryptionSseS3Configure to the class.
Set SSE-S3 encryption when executing S3 PutObjectRequest. There are no configuration items.
Please specify org.iplass.mtp.impl.lob.lobstore.s3.awsv2.S3RequestMetricPublisherConfigure to the class. Add a setting for Micrometer to collect metrics when executing S3 requests.
If you are using CRT-based S3Client (S3AsyncCrtClientFactory), metrics collection by Micrometer is not available. |
Please specify org.iplass.mtp.impl.micrometer.metrics.aws.lobstore.s3.MetricsS3LobStore to the class.
It’s S3LobStore with the metric collection function by Micrometer. The same items as S3LobStore can be configured.
AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025. |
Please specify org.iplass.mtp.impl.lob.lobstore.multi.AddableMultiLobStore to the class.
LobStore that can be configured as a single LobStore by combining multiple LobStores. The following items can be configured.
Item | Value | Description |
---|---|---|
lobStore |
LobStore, Multiple |
Set LobStore here. |
lobValidator |
The validation process corresponding to Lob. |
Please specify the implementing class of org.iplass.mtp.impl.lob.lobstore.LobValidator.
As the standard implementation, the following LobValidator are provided.
Please specify org.iplass.mtp.impl.lob.lobstore.LogLobValidator to the class.
It simply output the log. There are no settings that can be configured.
Please specify org.iplass.mtp.impl.lob.lobstore.ProcessLobValidator to the class.
Initiated the external process. The following items can be configured.
Item | Value | Description |
---|---|---|
command |
String, Multiple |
Specify the external process parameter. |
checksumAlgorithm |
String |
Specify the algorithms of the checksum. You can chose from: Adler-32/CRC-32/MD5/SHA-1/SHA-256 |
Example
<service>
<interface>org.iplass.mtp.impl.lob.LobStoreService</interface>
<property name="lobDao" class="org.iplass.mtp.impl.lob.EncryptLobDao" />
<property name="defaultLobStoreName" value="defaultStore" />
<property name="defaultStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
</property>
<!--
<property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
<property name="rootDir" value="D:\tmp\fileLobStore" />
<property name="overwriteFile" value="false" />
</property>
<property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore">
</property>
-->
<!--
Multiple LobStores can be combined into a single LobStore.
New addition is performed according to the lobStore defined at the top.
The system will search references from all lobStores.
Deletion is also performed on all lobStores.
-->
<!--
<property name="binaryStore" class="org.iplass.mtp.impl.lob.lobstore.multi.AddableMultiLobStore">
<property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
<property name="rootDir" value="D:\tmp\fls2" />
</property>
<property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.file.FileLobStore">
<property name="rootDir" value="D:\tmp\fls1" />
</property>
<property name="lobStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore" />
</property>
-->
<!--
Specify whether the Lob size is managed by Rdb (lob_store).
Changed the layout of the lob_store table for size management control in ver1.5.2.
If the lob_store table cannot be changed in the existing system, it can be avoided by specifying false. -->
<property name="manageLobSizeOnRdb" value="false" />
</service>
3.38. LoggingService
This service will modify the overall performance of all log services.
Interface Name
org.iplass.mtp.impl.logging.LoggingService
Implementing Class Name
org.iplass.mtp.impl.logging.logback.LogbackLoggingService
The Settings of LoggingService
The configurable items of log outputs can be configured as depicted below.
With the presence of this service, the log output conditions can be modified dynamically whenever the tenant was changed.
To enable this feature, it is necessary to enable org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter
in the setting file of Logback(logback.xml).
Once the feature is enabled, it will be able to switch the log output conditions dynamically via AdminConsole and so on.
Configurable Items
Item | Value | Description |
---|---|---|
maxAgeSecondsOfLogCondition |
long |
Define the maximum effective period of the settings of log output conditions(in seconds). The default is -1 (unlimited). |
Example
<service>
<interface>org.iplass.mtp.impl.logging.LoggingService</interface>
<class>org.iplass.mtp.impl.logging.logback.LogbackLoggingService</class>
<property name="maxAgeSecondsOfLogCondition" value="86400" />
</service>
3.39. MailService
This is a service for managing email template definitions (metadata) and sending emails.
Interface Name
org.iplass.mtp.impl.mail.MailService
Implementing Class Name
org.iplass.mtp.impl.mail.MailServiceImpl
org.iplass.mtp.impl.aws.AWSMailService
org.iplass.mtp.impl.mail.ses.awsv2.SesMailService
org.iplass.mtp.impl.sendgrid.SendGridMailServiceImpl
org.iplass.mtp.impl.sendgridv3.SendGridV3MailService
Settings of MailServiceImpl
The MailServiceImpl are configurable when using standard mail transmission (JavaMail).
You can set the standard properties defined in JavaMail, the properties of each provider implementation, and the properties extended with iPLAss.
Configurable Items
Item | Value | Description |
---|---|---|
mail.smtp.host |
String, required |
The SMTP server host name. |
mail.smtp.port |
int |
SMTP server port number. the default is 25. |
mail.smtp.connectiontimeout |
int |
Set the timeout threshold for establishing SMTP connections.(in millisecond) The default value is 60000 (1 minutes). |
mail.smtp.timeout |
int |
Set the timeout threshold for communicating with SMTP connections.(in millisecond) The default value is 60000 (1 minutes). |
mail.pop3.connectiontimeout |
int |
Set the timeout threshold for establishing POP3 connections.(in millisecond) The default value is 60000 (1 minutes). |
mail.pop3.timeout |
int |
Set the timeout threshold for communicating with POP3 connections.(in millisecond) The default value is 60000 (1 minutes). |
mail.* |
- |
Other standard properties defined in JavaMail and properties of each provider implementation can be set. such as
|
mail.smtp.popbeforesmtp |
boolean |
Set true if authenticating by POP should be done before SMTP. The default value is false. |
mail.pop3.auth.id |
String |
User ID for POP before SMTP authentication. |
mail.pop3.auth.password |
String |
User password for POP before SMTP authentication. |
mail.smtp.auth.id |
String |
User ID for SMTP authentication. |
mail.smtp.auth.password |
String |
Password for SMTP authentication. |
mail.charset |
String |
The default charset for mail. |
mail.encoding |
String |
Default encoding for mail. |
debug |
boolean |
When debugging is enabled, trace is print to the standard output console. |
listener |
SendMailListener, Multiple |
Listener for outgoing mail. |
retryIntervalMillis |
long |
Retry interval when email transmission fails (milliseconds). |
retryCount |
int |
The number of retry attempts for email transmission to fail. |
smimeHandler |
Handler when using S/MIME. |
Please specify the implementing class of org.iplass.mtp.mail.SendMailListener.
As the standard implementation, the following SendMailListener are provided.
Please specify org.iplass.mtp.mail.listeners.LoggingSendMailListener to the class.
It’s SendMailListener that logs the mail transmission events. There are no settings that can be configured.
Please specify org.iplass.mtp.impl.micrometer.metrics.mail.MetricsSendMailListener to the class.
It’s SendMailListener with the metric collection function by Micrometer. There are no settings that can be configured.
When using MailServiceImpl, the standard class to support digital signature and encryption by S/MIME are provided: org.iplass.mtp.impl.mail.smime.SmimeHandler The following configurable items are available:
Item |
Value |
Description |
cmsAlgorithmName |
String |
CMS (Cryptographic Message Syntax) cryptographic algorithm name. The default value is |
signatureAlgorithmMap |
Mapping of digital signature algorithm. |
|
certStore |
Store class that stores certificates and private keys used in S / MIME. |
Set the mapping of digital signature algorithm. The following items can be set.
Item | Value | Description |
---|---|---|
name |
String |
The key of digital signature algorithm |
value |
String |
The digital signature algorithm. |
Default Settings
name |
value |
RSA |
SHA256withRSA |
DSA |
SHA256withDSA |
EC |
SHA256withECDSA |
Please specify the implementing class of org.iplass.mtp.impl.mail.smime.SmimeCertStore.
As a standard implementation, a simple implementation based on java.security.KeyStore are provided: org.iplass.mtp.impl.mail.smime.SimpleSmimeCertStore. Certificates stored in KeyStore are treated as trusted, including client certificates. At runtime, only the validity period is checked, and the certificate chain is not verified.
Item |
Value |
Description |
keyStoreType |
String |
KeyStore type. The default value is |
keyStoreProvider |
String |
KeyStore provider name. If not set, the system will use the first provider that supports the specified KeyStore type from the list of registered security providers, starting with the highest priority provider. |
keyStoreFilePath |
String |
File path of KeyStore where entries for signature creation and encryption are stored. |
keyStorePassword |
String |
KeyStore password. |
keyPasswordMap |
Defines the mapping to the password so to restore the key associated with the entry. |
|
keyStoreReloadIntervalMinutes |
String |
KeyStore reload interval (minutes). The default value is |
Configure about the map to restore the password associated with the entry. The following items can be configured.
Item | Value | Description |
---|---|---|
name |
String |
The alter name of the entry.(the mail address of the sender or the receiver.) |
value |
String |
Password for restoring the private key associated with the entry. |
Example
<service>
<interface>org.iplass.mtp.impl.mail.MailService</interface>
<class>org.iplass.mtp.impl.mail.MailServiceImpl</class>
<!-- SMTP Settings -->
<!-- SMTP server host -->
<property name="mail.smtp.host" value="XXXXXXXX"/>
<!-- SMTP server port normal:25 / submission port:587 / SSL:465 -->
<property name="mail.smtp.port" value="25"/>
<!-- Time out Settings -->
<property name="mail.smtp.connectiontimeout" value="60000"/>
<property name="mail.smtp.timeout" value="60000"/>
<!--
The mail.smtp.host property is recognized in preference to the mail.host property, so if the two values are the same,
You can send mail with only the mail.smtp.host property.
However, the mail.host property is used internally to generate a Message-ID header.
If the mail.host property is not explicitly specified, the Message-ID header may not be generated correctly.
-->
<property name="mail.host" value="XXXXXXXX"/>
<!-- Default Charset -->
<property name="mail.charset" value="utf-8"/>
<property name="mail.encoding" value="base64"/>
<!-- S/MIME Settings -->
<!-- Use the digital signature and encryption features of -->
<property name="smimeHandler" class="org.iplass.mtp.impl.mail.smime.SmimeHandler">
<property name="cmsAlgorithmName" value="AES128_CBC" />
<property name="signatureAlgorithmMap">
<property name="RSA" value="SHA256withRSA" />
<property name="DSA" value="SHA256withDSA" />
<property name="EC" value="SHA256withECDSA" />
</property>
<property name="certStore" class="org.iplass.mtp.impl.mail.smime.SimpleSmimeCertStore" >
<property name="keyStoreType" value="yourOwnKeyStoreType" />
<property name="keyStoreProvider" value="yourOwnKeyStoreProvider" />
<property name="keyStoreFilePath" value="yourOwnKeyStoreFilePath" />
<property name="keyStorePassword" value="yourOwnKeyStorePassword" />
<property name="keyPasswordMap">
<property name="test1@contract.dentsusoken.com" value="yourOwnKeyPassword1" />
<property name="test2@contract.dentsusoken.com" value="yourOwnKeyPassword2" />
</property>
<property name="keyStoreReloadIntervalMinutes" value="60" />
</property>
</property>
<!-- ■ for develop only (additional="true) ■ -->
<!-- When debugging outgoing mail, enable the followings. -->
<!--
<property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
-->
</service>
(Deprecated) Settings of AWSMailService
When using Amazon SES, it is needed to configure about AWSMailService.
When using AWSMailService, AWS authentication settings must be made in AWSSetting. However, note that the clientConfiguration of AWSSetting cannot be applied.
AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025. |
Configurable Items
Item | Value | Description |
---|---|---|
mail.charset |
String |
The default charset for mail. |
mail.encoding |
String |
Default encoding for mail. |
mail.aws.host |
String |
SES endpoint can be specified. |
debug |
boolean |
When debugging is enabled, trace is output to the standard output. |
listener |
SendMailListener, Multiple |
Listener for outgoing mail. |
retryIntervalMillis |
long |
Retry interval when email transmission fails (milliseconds). |
retryCount |
int |
The number of retry attempts for email transmission to fail. |
It is similar to the SendMailListener in MailServiceImpl.
Example
Similar to MailServiceImpl.
Settings of SesMailService
When using Amazon SES, it is needed to configure about SesMailService.
Uses authentication information and client settings managed in AWSSetting. The following items can be configured.
Configurable Items
Item | Value | Description |
---|---|---|
mail.charset |
String |
The default charset for mail. |
mail.encoding |
String |
Default encoding for mail. |
listener |
SendMailListener, Multiple |
Listener for outgoing mail. |
smimeHandler |
Handler when using S/MIME. |
|
retryIntervalMillis |
long |
Retry interval when email transmission fails (milliseconds). |
retryCount |
int |
The number of retry attempts for email transmission to fail. |
clientConfig |
Manage SES client settings. Configure AWS regions and communication settings. |
Example
<service>
<interface>org.iplass.mtp.impl.mail.MailService</interface>
<class>org.iplass.mtp.impl.mail.ses.awsv2.SesMailService</class>
<depend>org.iplass.mtp.impl.awsv2.AWSSetting</depend>
<property name="mail.charset" value="utf-8"/>
<property name="mail.encoding" value="base64"/>
<property name="retryIntervalMillis" value="0" />
<property name="retryCount" value="0" />
<property name="clientConfig" class="org.iplass.mtp.impl.awsv2.AWSClientConfig">
<property name="region" value="[setYourSesRegion]" />
</property>
</service>
Settings of SendGridMailServiceImpl
SendGridMailServiceImpl will be removed in the future. It is recommended to use SendGridV3MailService. |
To use SendGrid Web API v2, please specify and configure the SendGridMailServiceImpl.
Configurable Items
Item | Value | Description |
---|---|---|
checkBounce |
boolean |
Set whether to check bounce list and block list before sending the mail. The default value is true. |
checkBouncePattern |
String |
The mail address to be checked for bounce list and block list. The format to specify is Regular expression. |
httpClientConfig |
Settings of HTTP client. |
|
httpTransport |
Settings of the HTTP requests toward WebApi. |
|
mailApiClient |
Settings of the mail client. |
|
deleteBouncePattern |
String |
Configure about the mail address that should be deleted if it was in the bounce, block list of the SendGrid. The format to specify is Regular expression. |
bounce |
Bounce client. |
|
block |
Block client. |
|
listener |
SendMailListener, Multiple |
The listener for sending the mail. |
retryIntervalMillis |
long |
The retry interval when the transmission fails.(in millisecond) |
retryCount |
int |
The number of retry attempts for email transmission to fail. |
Please specify org.iplass.mtp.impl.sendgrid.apiclient.HttpTransportImpl to the class.
The following items can be configured.
Item | Value | Description |
---|---|---|
apiUser |
String, required |
Set the user ID of SendGrid, or a fixed string: |
apiKey |
String, required |
Set the password, or API Key of SendGrid. |
webApiRoot |
String, required |
Set the URL for this SendGrid API. |
Please specify org.iplass.mtp.impl.sendgrid.apiclient.MailClientImpl to the class.
The following items can be configured.
Item | Value | Description |
---|---|---|
charset |
String |
The charset code of the mail. |
Please specify org.iplass.mtp.impl.sendgrid.apiclient.BounceClientImpl to the class.
BounceClientImpl does not have configurable items.
Please specify org.iplass.mtp.impl.sendgrid.apiclient.BlockClientImpl to the class.
BlockClientImpl does not have configurable items.
It is similar to the SendMailListener in MailServiceImpl.
Example
<service>
<interface>org.iplass.mtp.impl.mail.MailService</interface>
<class>org.iplass.mtp.impl.sendgrid.SendGridMailServiceImpl</class>
<!-- If you don't want to check the bounce list and block list before sending the mail, please set the checkBounce to false. -->
<!--
<property name="checkBounce" value="false" />
-->
<!-- The mail address to be checked for bounce list and block list. -->
<property name="checkBouncePattern" value=".*@ldap.dentsusoken.com|.*@contract.dentsusoken.com" />
<property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
<property name="connectionTimeout" value="30000" />
<property name="soTimeout" value="30000" />
<!-- ■ for develop only ■ -->
<!--
<property name="proxyHost" value="proxyhost.dentsusoken.com" />
<property name="proxyPort" value="8080" />
-->
</property>
<property name="httpTransport" class="org.iplass.mtp.impl.sendgrid.apiclient.HttpTransportImpl">
<!-- SendGrid authentication key -->
<property name="apiUser" value="yourOwnApiUser" />
<property name="apiKey" value="yourOwnApiKey" />
<!-- SendGrid endpoint -->
<property name="webApiRoot" value="https://api.sendgrid.com/api" />
</property>
<property name="mailApiClient" class="org.iplass.mtp.impl.sendgrid.apiclient.MailClientImpl">
<!-- The charset of the mail -->
<property name="charset" value="UTF-8" />
</property>
<!-- The mail address to be deleted from the list when an address is listed in the SendGrid bounce or block list. -->
<property name="deleteBouncePattern" value=".*@ldap.dentsusoken.com|.*@contract.dentsusoken.com" />
<property name="bounce" class="org.iplass.mtp.impl.sendgrid.apiclient.BounceClientImpl" />
<property name="block" class="org.iplass.mtp.impl.sendgrid.apiclient.BlockClientImpl" />
<!-- ■ for develop only (additional="true") ■ -->
<!--
<property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
-->
</service>
Settings of SendGridV3MailService
To use SendGrid Web API v3, please specify and configure the SendGridV3MailService.
Configurable Items
Item | Value | Description |
---|---|---|
apiKey |
String, required |
Set the API Key of SendGrid. |
charset |
String |
The default charset for mail. |
httpClientConfig |
Settings of HTTP client. |
|
listener |
SendMailListener, Multiple |
The listener for sending the mail. |
retryIntervalMillis |
long |
The retry interval when the transmission fails.(in millisecond) |
retryCount |
int |
The number of retry attempts for email transmission to fail. |
Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class.
The following items can be configured.
Item | Value | Description |
---|---|---|
connectionTimeout |
int |
Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds). |
soTimeout |
int |
socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds). |
poolingMaxTotal |
int |
Maximum number of pools for http connections. The default value is 20. |
poolingDefaultMaxPerRoute |
int |
Maximum number of http connections per domain. The default value is 2. |
poolingTimeToLive |
int |
Lifetime of pooled http connections (milliseconds). The default is unlimited. |
proxyHost |
String |
Proxy server host. |
proxyPort |
int |
Proxy server port number. |
httpClientBuilderFactory |
Specify this if you want to create a custom HttpClientBuilder. |
Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.
The following HttpClientBuilderFactory is provided as standard.
It is similar to the SendMailListener in MailServiceImpl.
Example
<service>
<interface>org.iplass.mtp.impl.mail.MailService</interface>
<class>org.iplass.mtp.impl.sendgridv3.SendGridV3MailService</class>
<!-- HttpClient Settings -->
<property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
<property name="connectionTimeout" value="30000" />
<property name="soTimeout" value="30000" />
<!-- ■ for develop only ■ -->
<!--
<property name="proxyHost" value="proxyhost.dentsusoken.com" />
<property name="proxyPort" value="8080" />
-->
</property>
<!-- SendGrid authentication key -->
<property name="apiKey" value="yourOwnApiKey" />
<!-- The charset of the mail -->
<property name="charset" value="UTF-8" />
<!-- ■ for develop only (additional="true") ■ -->
<!--
<property name="listener" class="org.iplass.mtp.mail.listeners.LoggingSendMailListener" additional="true"/>
-->
</service>
3.40. MdcConfigService
This service manage the settings of the overall performance of the MDC version of the general pages.
Interface Name
org.iplass.mtp.mdc.MdcConfigService
Implementing Class
org.iplass.mtp.mdc.MdcConfigService
The settings of MdcConfigService
Configurable Items
Item | Value | Description |
---|---|---|
formatNumberWithComma |
boolean |
Whether to format numeric property values with commas in the detail display screen. The default value is true. |
searchResultDispRowCount |
int |
Number of search results to be displayed on the search screen. The default value is 10. |
searchInterval |
int |
Set the search interval to prevent redundant requests. If 0 is set, it will be infinite.(cannot click the search button until the result was retrieved and presented) The default value is 60000 (1 minute). |
recycleBinMaxCount |
int |
Maximum number of trash cans displayed. If not specified, the default value is 100. If -1 is specified, there is no limit. |
deleteAllCommandBatchSize |
int |
Batch size when committing bulk deletion. If not specified, the default value is 100. Applicable when the bulk delete commit type is DIVISION. |
shallowCopyLobData |
boolean |
Shallow copy Lob data.
If |
displayBreakpoint |
Display breakpoint. Set the width for each device size. |
|
permitRolesToMdc |
String, Multiple |
Mdc permit roles in MdcAuth.
The default value is |
permitRolesToNoView |
String, Multiple |
Permit roles in MdcAuth when EntityView is undefined.
The default value is |
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. Configuration example
See WebFrontendService uploadFileTypeDetector, FileTypeDetector for information on how to determine the MIME Type to be validated. |
Please specify org.iplass.mtp.mdc.DisplayBreakpoint to the class.The following items can be configured.
Sends a request header (X-Mdc-Display-Breakpoint
) to identify the display breakpoint when calling WebAPI. This can be used in display determination scripts, etc.
Item | Value | Description |
---|---|---|
mobileBreakpoint |
String |
Mobile breakpoint. Set the item name of the threshold for judging mobile. |
thresholds |
threshold. |
Please specify org.iplass.mtp.mdc.BreakpointThresholds to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
xs |
int |
xs threshold (px). |
sm |
int |
sm threshold (px). |
md |
int |
md threshold (px). |
lg |
int |
lg threshold (px). |
xl |
int |
xl threshold (px). |
Please specify org.iplass.mtp.mdc.BinaryDownloadLoggingTargetProperty to the class.
This property is the output target of the binary download log. The following items can be configured.
Item | Value | Description |
---|---|---|
entityName |
String |
Entity name |
propertyName |
String |
Property Name |
設定例
<service>
<interface>org.iplass.mtp.mdc.MdcConfigService</interface>
<!-- Whether to format numeric property values with commas in the detail display screen -->
<property name="formatNumberWithComma" value="true" />
<!-- Number of search results to be displayed on the search screen. -->
<property name="searchResultDispRowCount" value="10"/>
<!-- Search processing interval, infinite (0) / specified milliseconds (1 or more) -->
<property name="searchInterval" value="60000"/>
<!-- Maximum number of trash cans displayed -->
<property name="recycleBinMaxCount" value="100" />
<!-- Batch size when committing bulk deletion. -->
<property name="deleteAllCommandBatchSize" value="100" />
<!-- Shallow copy Lob data when copying entity data on detail view -->
<property name="shallowCopyLobData" value="false" />
<!-- Display Setting -->
<property name="displayBreakpoint" class="org.iplass.mtp.mdc.DisplayBreakpoint">
<property name="mobileBreakpoint" value="md" />
<property name="thresholds" class="org.iplass.mtp.mdc.BreakpointThresholds" >
<property name="xs" value="0" />
<property name="sm" value="600" />
<property name="md" value="960" />
<property name="lg" value="1264" />
<property name="xl" value="1904" />
</property>
</property>
<!-- MdcAuth Mdc permission role -->
<property name="permitRolesToMdc" value="MdcUser" />
<property name="permitRolesToMdc" value="AppAdmin" />
<!-- MdcAuth Permitted roles when EntityView is undefined -->
<property name="permitRolesToNoView" value="AppAdmin" />
<!-- Log output setting for Binary download -->
<property name="binaryDownloadLoggingTargetProperty">
<property name="entityName" value="mtp.maintenance.Package" />
<property name="propertyName" value="archive" />
</property>
<!-- Binary file upload acceptable MIME Type pattern. Specify a regular expression. -->
<!-- Configuration example
<property name="binaryUploadAcceptMimeTypesPattern" value="^(image/.*|application/pdf|text/csv)$" />
-->
</service>
3.41. MdcDetailViewService
This service for settings for the MDC version of the Detail pages.
Interface Name
org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService
Implementing Class
org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService
The Settings of MdcDetailViewService
MdcDetailViewService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
autoGenerateConfig |
Automatic generation setting of screen definition of detail screen. |
Please specify the class org.iplass.mtp.mdc.view.entityview.detail.definition.AutoGenerateDetailViewConfig.
The following items can be configured.
Item | Value | Description |
---|---|---|
showSystemSection |
boolean |
Output System Section when auto-generated. |
systemSectionProperties |
SectionProperty,Multiple |
System Section property. The basic items name and description and version control items (startDate, endDate) are excluded. |
systemSectionDisplayPosition |
SectionDisplayPosition |
The display position of the system Section. Specify enum value of SectionDisplayPosition. Specify one of the following:
The default value is |
excludeOidWhenCustomOid |
boolean |
Hide OIDs if you have customized them. |
useUserPropertyEditor |
boolean |
Use UserPropertyEditor for createBy, updateBy, lockedBy. When using the UserPropertyEditor, the User’s name is displayed instead of the OID. |
This is a setting related to whether or not to display each system property. The following items can be configured.
Item | Value | Description |
---|---|---|
propertyName |
String |
property name |
displayView |
boolean |
Show on detail screen |
displayCreate |
boolean |
Show on the new or copy screen |
displayUpdate |
boolean |
Show on edit screen |
Example
<service>
<interface>org.iplass.mtp.impl.mdc.view.entityview.detail.MdcDetailViewService</interface>
<!-- Auto Generate Config -->
<property name="autoGenerateConfig" class="org.iplass.mtp.mdc.view.entityview.detail.definition.AutoGenerateDetailViewConfig">
<!-- Output System Section -->
<property name="showSystemSection" value="false" />
<!-- Properties to output to System Section -->
<property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
<property name="propertyName" value="oid" />
<property name="displayView" value="false" />
<property name="displayCreate" value="false" />
<property name="displayUpdate" value="false" />
</property>
<property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
<property name="propertyName" value="state" />
<property name="displayView" value="false" />
<property name="displayCreate" value="false" />
<property name="displayUpdate" value="false" />
</property>
<property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
<property name="propertyName" value="createDate" />
<property name="displayView" value="false" />
<property name="displayCreate" value="false" />
<property name="displayUpdate" value="false" />
</property>
<property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
<property name="propertyName" value="createBy" />
<property name="displayView" value="false" />
<property name="displayCreate" value="false" />
<property name="displayUpdate" value="false" />
</property>
<property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
<property name="propertyName" value="updateDate" />
<property name="displayView" value="false" />
<property name="displayCreate" value="false" />
<property name="displayUpdate" value="false" />
</property>
<property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
<property name="propertyName" value="updateBy" />
<property name="displayView" value="false" />
<property name="displayCreate" value="false" />
<property name="displayUpdate" value="false" />
</property>
<property name="systemSectionProperties" class="org.iplass.mtp.mdc.view.entityview.detail.definition.SectionProperty">
<property name="propertyName" value="lockedBy" />
<property name="displayView" value="false" />
<property name="displayCreate" value="false" />
<property name="displayUpdate" value="false" />
</property>
<!-- Display position of System Section TOP or BOTTOM -->
<property name="systemSectionDisplayPosition" value="BOTTOM" />
<!-- Hide OIDs if you have customized OIDs -->
<property name="excludeOidWhenCustomOid" value="true" />
<!-- Use UserPropertyEditor for createBy, updateBy, lockedBy -->
<property name="useUserPropertyEditor" value="true" />
</property>
</service>
3.42. MdcSearchViewService
This service for settings for the MDC version of the Search pages.
Interface Name
org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService
Implementing Class
org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService
The Settings of MdcSearchViewService
MdcSearchViewService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
autoGenerateConfig |
Automatic generation setting of screen definition of search screen. |
Please specify the class org.iplass.mtp.mdc.view.entityview.search.definition.AutoGenerateSearchViewConfig.
The following items can be configured.
Item | Value | Description |
---|---|---|
showSystemProperty |
boolean |
Output System property when auto-generated. |
systemProperties |
SectionProperty,Multiple |
System property. The basic item name and version control items (startDate, endDate) are excluded. |
systemPropertyDisplayPosition |
SectionDisplayPosition |
Display position of the system property. Specify enum value of SystemPropertyDisplayPosition. Specify one of the following:
The default value is |
excludeOidWhenCustomOid |
boolean |
Hide OIDs if you have customized them. |
useUserPropertyEditor |
boolean |
cUse UserPropertyEditor for createBy, updateBy, lockedBy. When using the UserPropertyEditor, the User’s name is displayed instead of the OID. |
This is a setting related to whether or not to display each system property. The following items can be configured.
Item | Value | Description |
---|---|---|
propertyName |
String |
Property name. |
displayCondition |
boolean |
Whether to display with search conditions. |
displayResult |
boolean |
Whether to display in search results. |
Example
<service>
<interface>org.iplass.mtp.impl.mdc.view.entityview.search.MdcSearchViewService</interface>
<!-- Auto Generator -->
<property name="autoGenerateConfig" class="org.iplass.mtp.impl.mdc.view.entityview.search.AutoGenerateSearchViewConfig">
<!-- Output System Properties -->
<property name="showSystemProperty" value="false" />
<!-- System Properties to Output -->
<property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
<property name="propertyName" value="oid" />
<property name="displayCondition" value="false" />
<property name="displayResult" value="false" />
</property>
<property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
<property name="propertyName" value="state" />
<property name="displayCondition" value="false" />
<property name="displayResult" value="false" />
</property>
<property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
<property name="propertyName" value="createDate" />
<property name="displayCondition" value="false" />
<property name="displayResult" value="false" />
</property>
<property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
<property name="propertyName" value="createBy" />
<property name="displayCondition" value="false" />
<property name="displayResult" value="false" />
</property>
<property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
<property name="propertyName" value="updateDate" />
<property name="displayCondition" value="false" />
<property name="displayResult" value="false" />
</property>
<property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
<property name="propertyName" value="updateBy" />
<property name="displayCondition" value="false" />
<property name="displayResult" value="false" />
</property>
<property name="systemProperties" class="org.iplass.mtp.mdc.view.entityview.search.definition.SectionProperty">
<property name="propertyName" value="lockedBy" />
<property name="displayCondition" value="false" />
<property name="displayResult" value="false" />
</property>
<!-- Display position of System Properties TOP or BOTTOM-->
<property name="systemPropertyDisplayPosition" value="BOTTOM" />
<!-- Hide OIDs if you have customized OIDs -->
<property name="excludeOidWhenCustomOid" value="true" />
<!-- Use UserPropertyEditor for createBy, updateBy, lockedBy -->
<property name="useUserPropertyEditor" value="true" />
</property>
</service>
3.43. MessageService
A service for managing resource bundles.
Interface Name
org.iplass.mtp.impl.message.MessageService
Implementing Class Name
org.iplass.mtp.impl.message.MessageService
Settings of MessageService
MessageService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
resourceBundle |
ResourceBundleConfig, Multiple |
Set the ResourceBundleConfig here. |
Please specify org.iplass.mtp.impl.message.ResourceBundleConfig to the class.
As the standard implementation, org.iplass.mtp.impl.query.QuerySyntaxRegister are provided. The following items can be configured.
Item | Value | Description |
---|---|---|
baseBundleNamePattern |
String |
Bundle name pattern. |
formats |
String, Multiple |
File format. When |
fallbackToSystemLocale |
boolean |
Whether to fall back the system locale when searching for resource bundles. |
Example
<service>
<interface>org.iplass.mtp.impl.message.MessageService</interface>
<class>org.iplass.mtp.impl.message.MessageService</class>
<property name="resourceBundle">
<property name="baseBundleNamePattern" value="^org/iplass/.*$" />
<property name="formats" value="java.class" />
<property name="formats" value="java.properties" />
<property name="fallbackToSystemLocale" value="false" />
</property>
<property name="resourceBundle">
<property name="formats" value="mtp.message" />
<property name="formats" value="java.class" />
<property name="formats" value="java.properties" />
<property name="fallbackToSystemLocale" value="false" />
</property>
</service>
3.44. MetaDataRepository
This is the service to manage metadata.
Interface Name
org.iplass.mtp.impl.metadata.MetaDataRepository
Implementing Class Name
org.iplass.mtp.impl.metadata.MetaDataRepository
Settings of MetaDataRepository
The metadata can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
resourcePath |
String, Multiple |
The path of the resource file that defines the metadata in XML. |
filePath |
String, Multiple |
The path of the file that defines metadata in XML. |
annotatedClass |
String, Multiple |
Java class with metadata defined by annotation. MetaDataSeeAlso, CommandClass, AsyncCommand, AsyncCommands, ActionMapping, ActionMappings, Template, Templates, WebApi, WebApis, these annotations are targets. |
tenantLocalStore |
MetaDataStore for managing tenant local metadata. |
|
SharedStore |
MetaDataStore for managing metadata shared across multiple tenants. |
Provides a mechanism to manage various metadata.
Please specify the implementing class of org.iplass.mtp.impl.metadata.MetaDataStore.
As the standard implementations, these MetaDataStore are provided.
Reads metadata from annotation of Java class specified in annotatedClass of MetaDataRepository.
If the Java class annotation is MetaDataSeeAlso, the Java class annotation specified in MetaDataSeeAlso is read. For other annotations, create metadata corresponding to the annotation from the class specified in annototatableMetaDataFactory.
Beware that it is read-only and cannot register/update/delete metadata.
Please specify org.iplass.mtp.impl.metadata.annotation.AnnotationMetaDataStore to the class.
Item | Value | Description |
---|---|---|
annotatableMetaDataFactory |
AnnotatableMetaDataFactory, Multiple |
The class to load the annotation. |
Metadata is read from the XML file in the class path specified in resourcePath of MetaDataRepository. Similarly, it will also read the XML file data from the filePath.
Beware that it is read-only and cannot register/update/delete metadata.
Please specify org.iplass.mtp.impl.metadata.xmlresource.XmlResourceMetaDataStore to the class. There is no configurable items for this class.
This item will manage metadata using a database. MetaDataRepository’s tenantLocalStore is the default setting, and the metadata added/edited by each tenant is managed in the database.
Please specify org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore to the class. There is no configurable items for this class.
The system can manage metadata by switching MetaDataStore for each type.
It is defined in the service-config of blank project(but is commented out). When performing metadata version control on the source control server, please uncomment it. Except for some special metadata, it can be managed as a local file.
Please specify org.iplass.mtp.impl.metadata.composite.CompositeMetaDataStore to the class.
Item | Value | Description |
---|---|---|
defaultStoreClass |
String |
The class name of the default MetaDataStore class. It is a store that manages metadata other than the metadata specified in pathMapping. |
pathMapping |
MetaDataStorePathMapping, Multiple |
Metadata managed by MetaDataStore different from defaultStoreClass. |
store |
MetaDataStore, Multiple |
Class specified in defaultStoreClass and pathMapping store. |
Manage metadata on an XML file basis.
When specifying a relative path, set the working directory to the project root directory in the Eclipse Tomcat startup configuration argument tab.
${workspace_loc:mtp-blank}
Please specify org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore to the class.
Item | Value | Description |
---|---|---|
rootPath |
String |
The root path where the metadata is stored. |
fileStorePath |
String |
Storage location of tenant metadata. |
groovySourceStorePath |
String |
The storage location for UtilityClass Groovy source files. If not specified, it will be saved in fileStorePath. |
localTenantId |
int |
Managed tenant ID. |
suffix |
String |
Set the extension type of the metadata file. The default is ".xml". |
Manage metadata on an XML file basis. Metadata is assigned a version and generation management is performed.
Please specify org.iplass.mtp.impl.metadata.xmlfile.VersioningXmlFileMetaDataStore to the class.
Item | Value | Description |
---|---|---|
fileStorePath |
String |
Specify the location to store tenant metadata. |
versionFormat |
String |
Specify the format of the version which will be attached to the metadata file name.
If not specified, the default will be |
suffix |
String |
Set the extension type of the metadata file. The default is ".xml". |
It is a mechanism to convert metadata provided by old modules to the current module and make it available.
Please specify org.iplass.mtp.impl.metadata.typeconversion.TypeConversionMetaDataStore to the class.
Item | Value | Description |
---|---|---|
store |
Specify the MetaDataStore that manages the metadata to be converted. |
|
converters |
TypeConverter , Multiple |
A converter that performs metadata type conversion. |
This factory will create the metadata from annotations.
Please specify the implementing class of org.iplass.mtp.impl.metadata.annotation.AnnotatableMetaDataFactory to the class.
As the standard implementations, the following AnnotatableMetaDataFactory will be provided.
It reads CommandClass annotation from the Command.
Please specify org.iplass.mtp.impl.command.MetaCommandClassFactory to the class. There is no configurable items.
It reads AsyncCommand annotation from Command.
Please specify org.iplass.mtp.impl.command.async.MetaAsyncCommandFactory to the class. There is no configurable items.
It reads AsyncCommands annotation from Command.
Please specify org.iplass.mtp.impl.command.async.MetaAsyncCommandsFactory to the class. There is no configurable items.
It reads ActionMapping annotation from Command.
Please specify org.iplass.mtp.impl.web.actionmapping.MetaActionMappingFactory to the class. There is no configurable items.
It reads ActionMappings annotation from Command.
Please specify org.iplass.mtp.impl.web.actionmapping.MetaActionMappingsFactory to the class. There is no configurable items.
It reads Template annotation from Command.
org.iplass.mtp.impl.web.template.MetaTemplateFactory. There is no configurable items.
It reads Templates annotation from Command.
org.iplass.mtp.impl.web.template.MetaTemplatesFactory. There is no configurable items.
It read WebApi annotation from Command.
Please specify org.iplass.mtp.impl.webapi.MetaWebApiFactory to the class. There is no configurable items.
It reads WebApis annotation from Command.
Please specify org.iplass.mtp.impl.webapi.MetaWebApisFactory to the class. There is no configurable items.
Used when using MetaDataStore other than defaultStoreClass in CompositeMetaDataStore. Map the metadata specified by path Prefix and the MetaDataStore specified by store.
Please specify org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMappin to the class.
Item | Value | Description |
---|---|---|
pathPrefix |
String |
The prefix of the metadata. |
store |
String |
The class name of the store that manages the metadata specified by pathPrefix. |
This is the interface to convert the new and old metadata.
Please specify the implementing class of org.iplass.mtp.impl.metadata.typeconversion.TypeConverter to the class.
Example
<service>
<interface>org.iplass.mtp.impl.metadata.MetaDataRepository</interface>
<!-- ■ your app metadata xml file name (additional="true) ■ -->
<!--
<property name="resourcePath" value="/xxx-metadata.xml" additional="true" />
-->
<!-- ■ your app command list class (additional="true) ■ -->
<!--
<property name="annotatedClass" value="xxx.command.CommandList" additional="true" />
-->
<!-- ■ your tenantLocalStore ■ -->
<!--
Specify the storage location for tenant metadata. You can specify a different destination for UtilityClass Groovy source files.
When specifying a relative path, set the working directory as the project root directory in the Tomcat startup configuration of Eclipse.
(Example: ${workspace_loc:mtp-blank})
-->
<!--
<property name="tenantLocalStore" class="org.iplass.mtp.impl.metadata.composite.CompositeMetaDataStore" >
<property name="pathMapping" class="org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMapping">
<property name="pathPrefix" value="/entity/"/>
<property name="store" value="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore"/>
</property>
<property name="pathMapping" class="org.iplass.mtp.impl.metadata.composite.MetaDataStorePathMapping">
<property name="pathPrefix" value="/staticresource/"/>
<property name="store" value="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore"/>
</property>
<property name="store" class="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore" />
<property name="store" class="org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore" >
<property name="fileStorePath" value="src/main/tenantLocalStore/" />
<property name="groovySourceStorePath" value="src/main/groovy/" />
<property name="localTenantId" value="XXX"/>
</property>
<property name="defaultStoreClass" value="org.iplass.mtp.impl.metadata.xmlfile.XmlFileMetaDataStore"/>
</property>
-->
<!-- Using WebAPI(old Metadata) as WebApi(new Metadata) -->
<!--
<property name="tenantLocalStore" class="org.iplass.mtp.impl.metadata.typeconversion.TypeConversionMetaDataStore">
<property name="store" class="org.iplass.mtp.impl.metadata.rdb.RdbMetaDataStore" />
<property name="converters" class="org.iplass.mtp.impl.webapi.classic.metadata.MetaWebAPITypeConverter" />
<property name="converters" class="org.iplass.mtp.impl.webapi.classic.metadata.MetaEntityWebApiDefinitionTypeConverter" />
</property>
-->
</service>
3.45. MicrometerService
This is a service to collect metrics and link to monitoring systems. The module that uses Micrometer is provided in the standard.
For more information on the metrics that can be collected, see Supported Metrics in the Developer’s Guide
Interface Name
org.iplass.mtp.impl.micrometer.MicrometerService
Implementing Class
org.iplass.mtp.impl.micrometer.MicrometerService
The settings of MicrometerService
MicrometerService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
enableEntityMetrics |
boolean |
Specify whether to record the latency and processing count of CRUD operations of Entity as metrics. The default value is true. |
entityConfig |
The histograms and percentiles setting for the latency metrics of the Entity’s CRUD operations. |
|
enableActionLatencyMetrics |
boolean |
Specify whether to record the latency and number of calls of the Action as a metric. The default value is true. |
actionConfig |
The histograms and percentiles setting for the metrics of the Action Latency. |
|
enableWebApiLatencyMetrics |
boolean |
Specify whether to record the latency and number of calls of the WebAPI as metrics. The default value is true. |
webApiConfig |
The histograms and percentiles setting for the metrics of the WebAPI Latency. |
|
enableSqlExecutionMetrics |
boolean |
Specify whether to record the number of times SQL is executed as a metric when calling Action or WebAPI. The default value is true. |
sqlConfig |
The histograms and percentiles setting for the metrics of the numberof times SQL is executed. |
|
enableHttpClientMetrics |
boolean |
Specify whether to record the request duration and number of requests of each Http Request in HttpClient and Http connection pool statistics as metrics. The default value is true. |
enableCacheStoreMetrics |
boolean |
Specify whether to record the CacheStore size and the number of hits/misses (Query cache and ActionContent cache only) as metrics. The default value is true. |
enableAuthenticationMetrics |
boolean |
Specify whether to record the number of successful and failed authentication attempts as metrics. The default value is true. |
enableAsyncMetrics |
boolean |
Specify whether to record the number of successful/unsuccessful asynchronous execution, the number of timeout, execution time as metrics. The default value is true. |
enableS3Metrics |
boolean |
Specify whether to record the request duration and number of requests of AWS S3 as metrics. The default value is true. |
enableMailMetrics |
boolean |
Specify whether to record the number of successful/unsuccessful attempts and execution time of the mail transmission events as metrics. The default value is true. |
enablePushMetrics |
boolean |
Specify whether to record the number of successful/unsuccessful attempts and execution time of the push transmission events as metrics. The default value is true. |
enableSmsMetrics |
boolean |
Specify whether to record the number of successful/unsuccessful attempts and execution time of the SMS transmission events as metrics. The default value is true. |
meterBinder |
MeterBinder, multiple |
The Binder class that registers one or more metrics. |
commonTags |
String, in format of Map |
Tags that are commonly assigned to all metrics, and can be specified in format of Map. |
actionPathResolver |
PathResolver, multiple |
Resolver class for resolving paths that are tied to Action metrics as values of |
webApiPathResolver |
PathResolver, multiple |
Resolver class for resolving paths that are tied to WebAPI metrics as values of |
customTagActionPathResolver |
PathResolver, in format of Map |
The tag and PathResolver class that resolves that value can be specified to Action metrics in format of Map by custom. |
customTagWebApiPathResolver |
PathResolver, in format of Map |
The tag and PathResolver class that resolves that value can be specified to WebAPI metrics in format of Map by custom. |
customizerClass |
This can be specified when you want to write your own logic to customize the metrics settings. |
|
meterRegistryFactory |
The Factory class that generates a MeterRegistry that manages and holds metrics. |
Please specify org.iplass.mtp.impl.micrometer.metrics.TimerConfig to the class.
Histograms and percentiles settings for metrics that record the latency or frequency of events.
The following items can be configured. For details on each item, please see Histograms and percentiles.
Item | Value | Description |
---|---|---|
publishPercentiles |
double, multiple |
Settings for publishing the percentile values calculated by the application. |
publishPercentileHistogram |
boolean |
If true, publish a histogram suitable for computing aggregable (across dimensions) percentile approximations. Only ships metrics that are within the range set by minimumExpectedValue and maximumExpectedValue. |
maximumExpectedValue |
double |
The maximum value of the range used to control the number of buckets targated by the histogram. |
minimumExpectedValue |
double |
The minimum value of the range used to control the number of buckets targated by the histogram. |
serviceLevelObjectives |
long, multiple |
Publish a cumulative histogram with buckets defined by SLOs. |
Please specify org.iplass.mtp.impl.micrometer.metrics.DistributionSummaryConfig to the class.
Histograms and percentiles settings for metrics that record track the distribution of events.
The following items can be configured. For details on each item, please see Histograms and percentiles.
Item | Value | Description |
---|---|---|
publishPercentiles |
double, multiple |
Settings for publishing the percentile values calculated by the application. |
publishPercentileHistogram |
boolean |
If true, publish a histogram suitable for computing aggregable (across dimensions) percentile approximations. Only ships metrics that are within the range set by minimumExpectedValue and maximumExpectedValue. |
maximumExpectedValue |
double |
The maximum value of the range used to control the number of buckets targated by the histogram. |
minimumExpectedValue |
double |
The minimum value of the range used to control the number of buckets targated by the histogram. |
serviceLevelObjectives |
double, multiple |
Publish a cumulative histogram with buckets defined by SLOs. |
Please specify org.iplass.mtp.impl.micrometer.metrics.entity.EntityEventMetricsInterceptor to the class.
This is an interceptor that records the latency and execution count of Entity operations as metrics. This is added by default when the Micrometer module is applied. The following items can be configured.
Item | Value | Description |
---|---|---|
provider |
EntityEventMetricsTagsProvider |
A class that implements org.iplass.mtp.impl.micrometer.metrics.entity.EntityEventMetricsTagsProvider. This can be specified if you want to customize the tags that are given to metrics. By default, org.iplass.mtp.impl.micrometer.metrics.entity.DefaultEntityEventMetricsTagsProvider is used. |
Please specify org.iplass.mtp.impl.micrometer.metrics.httpclient.MicrometerHttpClientBuilderFactory to the class.
This is a customized HttpClientBuilderFactory that records the request time and count of each Http request and Http connection pool statistics for the target HttpClient as metrics.
This is configurable when the Micrometer module is added to the dependency. There are no configurable items.
Please specify the implementation class of io.micrometer.core.instrument.binder.MeterBinder to the class (multiple classes can be specified).
By default, the following MeterBinder included in the core module of the Micrometer is specified. There are no configurable items.
-
io.micrometer.core.instrument.binder.jvm.JvmGcMetrics
-
io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics
-
io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics
-
io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics
-
io.micrometer.core.instrument.binder.logging.LogbackMetrics
-
io.micrometer.core.instrument.binder.system.ProcessorMetrics
-
io.micrometer.core.instrument.binder.system.UptimeMetrics
-
io.micrometer.core.instrument.binder.system.FileDescriptorMetrics
In addition, the following MeterBinder are provided as standard.
Please specify org.iplass.mtp.impl.micrometer.metrics.tomcat.TomcatMeterBinder to the class.
This is a MeterBinder that registers metrics such as Tomcat threads, sessions, and total number of requests. There are no configurable items.
Please specify org.iplass.mtp.impl.micrometer.metrics.jdbc.tomcatdbcp2.TomcatDbcp2MeterBinder to the class.
This is a MeterBinder that registers metrics related to the Tomcat dbcp2 (org.apache.tomcat.dbcp.dbcp2) connection pool. The following items can be configured.
Item | Value | Description |
---|---|---|
poolName |
String |
Connection Pool name. The default value is "mtpPool". |
Please specify org.iplass.mtp.impl.micrometer.metrics.jdbc.commonsdbcp2.CommonsDbcp2MeterBinder to the class.
This is a MeterBinder that registers metrics related to the Commons dbcp2(org.apache.commons.dbcp2) connection pool. The following items can be configured.
Item | Value | Description |
---|---|---|
poolName |
String |
Connection Pool name. The default value is "mtpPool". |
Please specify org.iplass.mtp.impl.micrometer.metrics.jdbc.hikaricp.HikariCPMeterBinder to the class.
This is a MeterBinder that registers metrics about HikariCP’s connection pool. There are no configurable items.
Please specify the implementation class of org.iplass.mtp.impl.micrometer.metrics.web.PathResolver to the class (multiple classes can be specified).
This is a Resolver class for resolving a Path that is tied to an Action and WebAPI metrics as a URI tag. Please write the logic for resolving the Path from the RequestContext.
Call PathResolver#resolve in the order defined in actionPathResolver (webApiPathResolver), and tie the returned result to the URI tag when a non-null result is returned. If the result of the last call to PathResolver#resolve is null, only the Action name (WebAPI name) will be tied to the URI tag by default (SubPath will not be included).
And call PathResolver#resolve in the order defined in customTagActionPathResolver (customTagWebApiPathResolver), and tie the returned result to the specified tag by custom when a non-null result is returned.
The following PathResolver is defined by default.
Please specify org.iplass.mtp.impl.micrometer.metrics.web.action.DefaultActionPathResolver to the class.
This is a Resolver class that resolves the Path of a standard GEM Action. Returns "Action name + definition name" if the definition name is specified in the parameter mapping. There are no configurable items.
Please specify org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiPathResolver to the class.
This is a Resolver class that resolves the path of GEM standard WebAPI and Entity CRUD API. There are no configurable items.
-
For the GEM standard WebAPI, if the definition name is specified in the parameter mapping, "WebAPI name + definition name" is returned.
-
For Entity CRUD API, if SubPath exists, return "WebAPI name + the first path of SubPath".
Please specify org.iplass.mtp.impl.micrometer.metrics.web.action.ActionHierarchicalPathResolver to the class.
About the path of a standard GEM Action, this is a Resolver class that resolves the path that specifies the depth of the hierarchy. Specify depth to specify the hierarchy.
For example, if uri is gem/generic/search/view/test and depth is 2, the value will be gem/generic.
The following items can be configured.
Item | Value | Description |
---|---|---|
depth |
int |
Depth to specify the hierarchy. Specify a value greater than or equal to 1. |
Please specify org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiHierarchicalPathResolver to the class.
About the path of GEM standard WebAPI and Entity CRUD API, this is a Resolver class that resolves the path that specifies the depth of the hierarchy. Specify depth to specify the hierarchy.
For example, if uri is gem/workflow/getUserTaskListParts and depth is 2, the value will be gem/workflow.
The following items can be configured.
Item | Value | Description |
---|---|---|
depth |
int |
Depth to specify the hierarchy. Specify a value greater than or equal to 1. |
Please specify your custom implementation of org.iplass.mtp.impl.micrometer.MeterRegistryCustomizer to the class.
You can write the logic for customizing the metrics settings in the org.iplass.mtp.impl.micrometer.MeterRegistryCustomizer implementation class.
Please specify the implementation class of org.iplass.mtp.impl.micrometer.registry.MeterRegistryFactory to the class.
The following MeterRegistryFactory are provided in the standard.
Please specify org.iplass.mtp.impl.micrometer.registry.elastic.ElasticMeterRegistryFactory to the class.
Factory class of io.micrometer.elastic.ElasticMeterRegistry that supports Elasticsearch. To specify this class, please add io.micrometer:micrometer-registry-elastic
to a runtime dependency. The following items can be configured.
Item | Value | Description |
---|---|---|
configMap |
String, in format of Map |
Configuration parameters for ElasticMeterRegistry. The main settings are as follows.
For details of all the possible settings, please see JavaDoc of the ElasticConfig. |
httpSender |
A Class that controls how perform Http calls. |
Please specify the implementation class of io.micrometer.core.ipc.http.HttpSender to the class.
The following HttpSender is provided in the standard. If not specified, HttpUrlConnectionSender will be used.
Please specify org.iplass.mtp.impl.micrometer.aws.AWSHttpSender to the class.
This is an implementation class of HttpSender that supports Amazon OpenSearch Service. The access key, secret key, and AWSClient side settings can be configured in AWSSetting. The following items can be configured.
AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025. |
Item | Value | Description |
---|---|---|
serviceName |
String |
Service name. The default value is "es". |
region |
String |
Region of Amazon OpenSearch Service. |
Please specify org.iplass.mtp.impl.micrometer.awsv2.AWSHttpSender to the class.
HttpSender implementation class for Amazon OpenSearch Service. Access key, secret key, and default client settings are available in AWSSetting. The following items can be set
Item | Value | Description |
---|---|---|
serviceName |
String |
Service Name. The service name is implemented in the AWS Service Client. |
region |
String |
Set the region for the AWS service. |
clientConfig |
Configure AWS client settings, including AWS regions and communication settings. |
|
defaultCharset |
String |
Default character set for response parsing. Used when Content-Type is not present in the response. The default value is "UTF-8". |
The class is io.micrometer.core.ipc.http.HttpUrlConnectionSender.
This is the implementation class of HttpSender used by default. Please specify the parameters to configMap
in Map format. The following items can be configured.
Item | Value | Description |
---|---|---|
connectTimeoutMs |
String |
Connect timeout (in milliseconds) when establishing a connection. The default value is 1000 (1 second). |
readTimeoutMs |
String |
Read timeout (in milliseconds) when receiving a response The default value is 10000 (10 second). |
proxyHost |
String |
Proxy host for http communication. |
proxyPort |
int |
Proxy port for http communication. |
Please specify org.iplass.mtp.impl.micrometer.registry.jms.JmxMeterRegistryFactory to the class.
Factory class of io.micrometer.jmx.JmxMeterRegistry that supports JMX. To specify this class, please add io.micrometer:micrometer-registry-jmx
to a runtime dependency. The following items can be configured.
Item | Value | Description |
---|---|---|
configMap |
String, in format of Map |
Configuration parameters for JmxMeterRegistry. The main settings are as follows.
For details of all the possible settings, please see JavaDoc of the JmxConfig. |
tagsAsPrefix |
String, multiple |
This can be specified to give prefix to all metrics in common. |
Please specify org.iplass.mtp.impl.micrometer.registry.prometheus.PrometheusMeterRegistryFactory to the class.
Factory class of io.micrometer.prometheus.PrometheusMeterRegistry that supports Prometheus. To specify this class, please add io.micrometer:micrometer-registry-prometheus
to a runtime dependency. The following items can be configured.
Item | Value | Description |
---|---|---|
configMap |
String, in format of Map |
Configuration parameters for PrometheusMeterRegistry. The main settings are as follows.
For details of all the possible settings, please see JavaDoc of the PrometheusConfig. |
Please specify org.iplass.mtp.impl.aws.micrometer.registry.cloudwatch.CloudWatchMeterRegistryFactory to the class.
Factory class of io.micrometer.cloudwatch.CloudWatchMeterRegistry that supports Amazon CloudWatch. This class can be specified when an AWS module is added to a dependency. To specify this class, please add io.micrometer:micrometer-registry-cloudwatch
to a runtime dependency.
The access key, secret key, and AWSClient side settings can be configured in AWSSetting. The following items can be configured.
AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025. |
Item | Value | Description |
---|---|---|
configMap |
String, in format of Map |
Configuration parameters for CloudWatchMeterRegistry. The main settings are as follows.
For details of all the possible settings, please see JavaDoc of the CloudWatchConfig. |
Please specify org.iplass.mtp.impl.aws.micrometer.registry.cloudwatch.awsv2.CloudWatchMeterRegistryFactory to the class.
Factory class for io.micrometer.cloudwatch2.CloudWatchMeterRegistry for Amazon CloudWatch, can be specified if AWS2 module is added to the dependency. If you specify this class, add io.micrometer:micrometer-registry-cloudwatch2
to your runtime dependencies.
AWSSetting allows access key, secret key, and default client settings. The following items can be set
Item | Value | Description |
---|---|---|
configMap |
String, in format of Map |
Configuration parameters for CloudWatchMeterRegistry. The main settings are as follows.
For details of all the possible settings, please see JavaDoc of the CloudWatchConfig. |
clientConfig |
Configure AWS client settings, including AWS regions and communication settings. |
Please specify org.iplass.mtp.impl.micrometer.registry.newrelic.NewRelicMeterRegistryFactory to the class.
Factory class of com.newrelic.telemetry.micrometer.NewRelicRegistry that supports New Relic. To specify this class, please add com.newrelic.telemetry:micrometer-registry-new-relic
to a runtime dependency.
The following items can be configured.
Item | Value | Description |
---|---|---|
configMap |
String, in format of Map |
Configuration parameters for NewRelicRegistry. The main settings are as follows.
For details of all the possible settings, please see JavaDoc of the NewRelicRegistryConfig. |
httpSender |
A Class that controls how perform Http calls. |
Please specify org.iplass.mtp.impl.micrometer.registry.logging.LoggingMeterRegistryFactory to the class.
Factory class of io.micrometer.core.instrument.logging.LoggingMeterRegistry that supports logging. For logging, please specify the logger name as io.micrometer.core.instrument.logging.LoggingMeterRegistry and the log level as INFO in logback.xml.
The following items can be configured.
Item | Value | Description |
---|---|---|
configMap |
String, in format of Map |
Configuration parameters for LoggingMeterRegistry. The main settings are as follows.
For details of all the possible settings, please see JavaDoc of the LoggingRegistryConfig. |
Example
<service>
<interface>org.iplass.mtp.impl.micrometer.MicrometerService</interface>
<!-- ■ Custom Metrics Settings ■ -->
<!-- Latency of Entity CRUD operations -->
<property name="enableEntityMetrics" value="true" />
<property name="entityConfig" class="org.iplass.mtp.impl.micrometer.metrics.TimerConfig">
<!--
<property name="publishPercentiles" value="0.5" />
<property name="publishPercentiles" value="0.9" />
<property name="publishPercentiles" value="0.99" />
-->
</property>
<!-- Latency of Action -->
<property name="enableActionLatencyMetrics" value="true" />
<property name="actionConfig" class="org.iplass.mtp.impl.micrometer.metrics.TimerConfig">
<!--
<property name="publishPercentiles" value="0.5" />
<property name="publishPercentiles" value="0.9" />
<property name="publishPercentiles" value="0.99" />
-->
</property>
<!-- Latency of WebAPI -->
<property name="enableWebApiLatencyMetrics" value="true" />
<property name="webApiConfig" class="org.iplass.mtp.impl.micrometer.metrics.TimerConfig">
<!--
<property name="publishPercentiles" value="0.5" />
<property name="publishPercentiles" value="0.9" />
<property name="publishPercentiles" value="0.99" />
-->
</property>
<!-- Number of times SQL is executed for Action and WebAPI -->
<property name="enableSqlExecutionMetrics" value="true" />
<property name="sqlConfig" class="org.iplass.mtp.impl.micrometer.metrics.DistributionSummaryConfig">
<!--
<property name="publishPercentiles" value="0.5" />
<property name="publishPercentiles" value="0.9" />
<property name="publishPercentiles" value="0.99" />
-->
</property>
<!-- Http request count, latency, and http connection pool metrics in HttpClient -->
<property name="enableHttpClientMetrics" value="true" />
<!-- CacheStore size, number of hits/Miss Count -->
<property name="enableCacheStoreMetrics" value="true" />
<!-- Number of success/failure authentication attempts -->
<property name="enableAuthenticationMetrics" value="true" />
<!-- Number of success/failure asynchronous execution, number of timeout, execution time -->
<property name="enableAsyncMetrics" value="true" />
<!-- Execution time and request count of S3 -->
<property name="enableS3Metrics" value="true" />
<!-- Number of success/failure and execution time of Mail -->
<property name="enableMailMetrics" value="true" />
<!-- Number of success/failure and execution time of Push -->
<property name="enablePushMetrics" value="true" />
<!-- Number of success/failure and execution time of SMS -->
<property name="enableSmsMetrics" value="true" />
<!-- ■ MeterBinder Settings ■ -->
<!-- jvm -->
<property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.JvmGcMetrics" />
<property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics" />
<property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics" />
<property name="meterBinder" class="io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics" />
<!-- logging -->
<property name="meterBinder" class="io.micrometer.core.instrument.binder.logging.LogbackMetrics" />
<!-- system -->
<property name="meterBinder" class="io.micrometer.core.instrument.binder.system.UptimeMetrics" />
<property name="meterBinder" class="io.micrometer.core.instrument.binder.system.ProcessorMetrics" />
<property name="meterBinder" class="io.micrometer.core.instrument.binder.system.FileDescriptorMetrics" />
<!-- tomcat -->
<!--
<property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.tomcat.TomcatMeterBinder" />
-->
<!-- Tomcat dbcp2 (tomcat default) -->
<!--
<property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.jdbc.tomcatdbcp2.TomcatDbcp2MeterBinder">
<property name="poolName" value="mtpPool" />
</property>
-->
<!-- commons dbcp 2 -->
<!--
<property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.jdbc.commonsdbcp2.CommonsDbcp2MeterBinder">
<property name="poolName" value="mtpPool" />
</property>
-->
<!-- hikari cp -->
<!--
<property name="meterBinder" class="org.iplass.mtp.impl.micrometer.metrics.jdbc.hikaricp.HikariCPMeterBinder" />
-->
<!-- ■ CommonTags Settings ■ -->
<!--
<property name="commonTags" >
<property name="tagKey1" value="tagValue1" />
<property name="tagKey2" value="tagValue2" />
<property name="tagKey3" value="tagValue3" />
</property>
-->
<!-- ■ PathResolver Settings ■ -->
<property name="actionPathResolver" class="org.iplass.mtp.impl.micrometer.metrics.web.action.DefaultActionPathResolver" />
<property name="webApiPathResolver" class="org.iplass.mtp.impl.micrometer.metrics.web.webapi.DefaultWebApiPathResolver" />
<!-- ■ Custom PathResolver Settings ■ -->
<!--
<property name="customTagActionPathResolver">
<property name="customHierarchicalUri1" class="org.iplass.mtp.impl.micrometer.metrics.web.action.ActionHierarchicalPathResolver">
<property name="depth" value="1" />
</property>
</property>
<property name="customTagWebApiPathResolver">
<property name="customHierarchicalUri1" class="org.iplass.mtp.impl.micrometer.metrics.web.webapi.WebApiHierarchicalPathResolver">
<property name="depth" value="1" />
</property>
</property>
-->
<!-- ■ Customizer Settings ■ -->
<!--
<property name="customizerClass" value="yourCustomizerClassName" />
-->
<!-- ■ MeterRegistry Settings ■ -->
<!--
Please remove the comment-out for the monitoring system you want to use, and add/change the properties as needed.
-->
<!-- for Elastic -->
<!--
<property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.elastic.ElasticMeterRegistryFactory">
-->
<!-- ■ If want to use Amazon OpenSearch Service, uncomment the following and change the property httpSender. ■ -->
<!-- (Deprecated) Example of using AWS SDK for Java 1.x. -->
<!--
<property name="httpSender" class="org.iplass.mtp.impl.micrometer.aws.AWSHttpSender">
<property name="serviceName" value="es" />
<property name="region" value="yourESRegion" />
</property>
-->
<!-- Example of using AWS SDK for Java 2.x. Depends on org.iplass.mtp.impl.awsv2.AWSSetting. -->
<!--
<property name="httpSender" class="org.iplass.mtp.impl.micrometer.awsv2.AWSHttpSender">
<property name="serviceName" value="es" />
<property name="region" value="yourESRegion" />
<property name="defaultCharset" value="UTF-8" />
</property>
-->
<!--
<property name="configMap" >
<property name="host" value="yourElasticHost" />
<property name="step" value="1m" />
<property name="index" value="micrometer-metrics" />
<property name="connectTimeoutMs" value="2000" />
</property>
</property>
-->
<!-- for Jmx -->
<!--
<property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.jmx.JmxMeterRegistryFactory">
<property name="configMap" >
<property name="domain" value="metrics" />
</property>
<property name="tagsAsPrefix" value="prefix1" />
</property>
-->
<!-- for Prometheus -->
<!--
<property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.prometheus.PrometheusMeterRegistryFactory">
<property name="configMap" >
</property>
</property>
-->
<!-- (Deprecated) for CloudWatch -->
<!-- Functions using AWS SDK for Java 1.x are deprecated; please change to functions using AWS SDK for Java 2.x. -->
<!--
<property name="meterRegistryFactory" class="org.iplass.mtp.impl.aws.micrometer.registry.cloudwatch.CloudWatchMeterRegistryFactory">
<property name="configMap" >
<property name="step" value="1m" />
<property name="region" value="yourRegion" />
<property name="namespace" value="micrometer-namespace" />
</property>
</property>
-->
<!-- for CloudWatch (AWS SDK for Java 2.x). Depends on org.iplass.mtp.impl.awsv2.AWSSetting. -->
<!--
<property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.cloudwatch.awsv2.CloudWatchMeterRegistryFactory">
<property name="configMap" >
<property name="step" value="1m" />
<property name="region" value="yourRegion" />
<property name="namespace" value="micrometer-namespace" />
</property>
</property>
-->
<!-- for New Relic -->
<!--
<property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.newrelic.NewRelicMeterRegistryFactory">
<property name="configMap" >
<property name="step" value="1m" />
<property name="apiKey" value="yourApiKey" />
</property>
</property>
-->
<!-- for Logging -->
<!--
<property name="meterRegistryFactory" class="org.iplass.mtp.impl.micrometer.registry.logging.LoggingMeterRegistryFactory">
<property name="configMap" >
<property name="step" value="1m" />
</property>
</property>
-->
</service>
3.46. OAuthAuthorizationService
A service for managing the functions of the OAuth2.0 Authorization Server and OpenID Connect Provider.
Interface Name
org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService
Implementing Class
org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService
The settings of OAuthAuthorizationService
OAuthAuthorizationService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
paramStateRequired |
boolean |
Set whether the state parameter is required for Authorization Requests. |
paramNonceRequired |
boolean |
Set whether the nonce parameter is required for Authorization Requests. |
forcePKCE |
boolean |
Set whether the PKCE (Proof Key for Code Exchange by OAuth Public Clients) is required for Public Client. |
forceS256ForCodeChallengeMethod |
boolean |
Set whether to force the PKCE CodeChallengeMethod to S256. |
defaultConsentTemplateName |
String |
Specify the template name of the default authorization screen of OAuth scope. |
authorizationCodeStore |
The settings of AuthorizationCodeStore. |
|
accessTokenStore |
The settings of OAuthAccessTokenStore. |
|
jwtProcessor |
The settings of JwtProcessor. |
|
jwtKeyStore |
The settings of JwtKeyStore. |
|
subjectIdHashAlgorithm |
String |
Specifies the hashing algorithm when the subject id of resource owner is disclosed to Client. |
subjectIdHashAlgorithm |
String |
Set the salt value when hashing the subject id. |
idTokenLifetimeSeconds |
long |
Specify the expiration date (seconds) of the issued ID Token. |
Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.code.AuthorizationCodeStore to the class.
As the standard implementation, the following AuthorizationCodeStore are provided.
Please specify org.iplass.mtp.impl.auth.oauth.code.CacheAuthorizationCodeStore to the class.
This item will manage the authentication code with CacheStore. The following options can be configured.
Item | Value | Description | ||
---|---|---|---|---|
secureRandomGeneratorName |
String |
Specify the string generator for the authentication code defined by SecureRandomService.
If it was not specified, the SecureRandomGenerator from |
||
cacheStoreName |
String |
Specify the name of the CacheStore defined in CacheService.
If not specified, the default value is
|
||
timeToLive |
long |
Specify the expiration date (milliseconds) of the authentication code.
If not specified, the default value is |
Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.token.OAuthAccessTokenStore to the class.
The following OAuthAccessTokenStore is provided as standard.
Please specify org.iplass.mtp.impl.auth.oauth.token.opaque.OpaqueOAuthAccessTokenStore to the class. The format of AcessToken is Opaque (Handle) format. AcessToken is stored using AuthTokenStore.
For OpaqueOAuthAccessTokenStore, One AcessToken is issued for each Client × ResourceOwner.
The following items can be configured.
Item | Value | Description |
---|---|---|
authTokenType |
String |
Specify the type defined in AccessTokenHandler.
If not specified, the default value is |
seriesHashAlgorithm |
String |
Set the hash algorithm for generating a key used to uniquely identify an AccessToken.
If not specified, the default value is |
seriesHashSalt |
String |
Set the Salt value used for hashing when generating a key used to uniquely identify an AccessToken. It is recommended to specify a different random character string for each environment. |
tokenCreationStrategy |
Set the TokenCreationStrategy. |
Please specify org.iplass.mtp.impl.auth.oauth.token.remote.RemoteOAuthAccessTokenStore to the class.
An implementation of TokenStore that calls OAuth 2.0 Token Introspection (RFC7662) on the backend. An iPLAss instance of this setting is applied and will operates as a Resource Server. Obtain an AccessToken from the remotely activated Authorization Server and verify it.
RemoteOAuthAccessTokenStore is read-only. Since the Authorization Server functionality is not implemented, a runtime exception is thrown when calling a method that updates AccessToken. |
The following items can be configured.
Item | Value | Description |
---|---|---|
introspectionEndpointUrl |
String |
Specify Introspection Endpoint URL.
If the Authorization Server is iPLAss, and it is a multi-tenant application, the endpoint will be different for each tenant.
In that case, it is possible to embed the tenant name in the URL with the variable name Example: https://localhost:8080/mtp/${tenantName}/api/oauth/introspect |
authenticationMethod |
ClientAuthenticationMethod |
Specify the Introspection Endpoint Client (Resource Server) authentication method. Specify one of the following:
If not specified, the default value is |
resourceServerId |
String |
Specify the ID of Resource Server issued from Authorization Server. |
resourceServerSecret |
String |
Specify the Secret of Resource Server issued from Authorization Server. |
tenantValidationType |
TenantValidationType |
Specify the tenant verification method. Please choose one of the following:
If not specified, the default value is |
reloadUser |
boolean |
Control the acquisition method of user information linked to AccessToken.
If nothing specified, the default value is |
httpClientConfig |
Settings related to HTTP connection when calling WebApi. |
|
exponentialBackoff |
Set the Exponential backoff when retrying with ExponentialBackoff class properties. |
Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
proxyHost |
String |
Host name when proxy is used. |
proxyPort |
int |
Port number when using proxy. |
connectionTimeout |
int |
Timeout limit in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds). |
soTimeout |
int |
Specify socket timeout limit (SO_TIMEOUT) in milliseconds for HTTP communication. The default value is 30000 (30 seconds). |
poolingMaxTotal |
int |
Maximum pool size for http connections. The default value is 20. |
poolingDefaultMaxPerRoute |
int |
Maximum number of http connections per domain. The default value is 2. |
poolingTimeToLive |
int |
Lifespan of pooled http connections (milliseconds). The default is unlimited. |
httpClientBuilderFactory |
Specify this if you want to create a custom HttpClientBuilder. |
Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.
The following HttpClientBuilderFactory is provided as standard.
Please specify org.iplass.mtp.impl.http.ExponentialBackoff to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
retryIntervalMillis |
int |
Specifies the retry interval in milliseconds. The default value is 500. |
randomizationFactor |
double |
Specify the random elements when retrying. If set to 0.5, the value specified for retryIntervalMillis will fluctuate in the range of 25%. The default value is 0.5. |
multiplier |
double |
Exponential element of retry interval when retrying. If 1.5 is set to multiplier and retryIntervalMillis is 500, the second retry is 750ms and the third retry is 1125ms. The default value is 1.5. |
maxIntervalMillis |
int |
Maximum retry interval. The default value is 60000 (1 minute). |
maxElapsedTimeMillis |
int |
Maximum retry execution time. If retry process is not successful during this time, retry processing is completed and the results up to that point are returned to the application. The default value is 300000 (5 minutes). |
Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.token.opaque.TokenCreationStrategy to the class.
As the standard implementation, the following TokenCreationStrategy are provided.
Please specify org.iplass.mtp.impl.auth.oauth.token.opaque.NewTokenCreationStrategy to the class.
A new AccessToken is generated for each AccessToken acquisition request. When a new AccessToken is generated, the AccessToken previously issued for the Client and ResourceOwner becomes invalid.
Please specify org.iplass.mtp.impl.auth.oauth.token.opaque.SameTokenCreationStrategy to the class.
When AccessToken acquisition is requested, if there is existing valid AccessToken issued for the Client and ResourceOwner, the same one will be returned. Since the existing AccessToken is returned, the validity period of the AccessToken may be short at the time of acquisition.
For example, when a user has multiple terminals and they are defined as the same Client, it is possible to avoid a situation in which they fighting for a valid AccessToken.
The following items can be configured.
Item | Value | Description |
---|---|---|
retryCount |
int |
It is possible to set the number of retries when AccessToken issuance fails. If not specified, the default value is 0 (do not retry). |
retryIntervalMillis |
long |
Specify the retry interval (in milliseconds) when retrying. If not specified, the default value is 0. |
Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.jwt.JwtProcessor to the class.
This configure about the generation of JWT (Json Web Token). As the standard implementation, the followingJwtProcessor are provided.
Please specify org.iplass.mtp.impl.auth.oauth.jwt.JjwtProcesor to the class.
We will utilize the JJWT(Java JWT) library to generate JWT. The following items can be configured.
Item | Value | Description |
---|---|---|
useRsaSsaPss |
boolean |
Specify true if RSASSA-PSS is used instead of RSASSA-PKCS1-v1_5 for the RSA-based signature algorithm. The default value is false if not specified. |
The JWT signature method is determined as follows according to the encryption key algorithm used for signing.
Key Algorithm | Key Size | useRsaSsaPss | JWT Signature |
---|---|---|---|
RSA |
over 4096 |
false |
RS512 |
RSA |
over 3072 and under 4096 |
false |
RS384 |
RSA |
over 2048 and under 3072 |
false |
RS256 |
EC |
over 521 |
* |
ES512 |
EC |
over 384 and under 521 |
* |
ES384 |
EC |
over 256 and under 384 |
* |
ES256 |
RSA |
over 4096 |
true |
PS512 |
RSA |
over 3072 and under 4096 |
true |
PS384 |
RSA |
over 2048 and under 3072 |
true |
PS256 |
Please specify the implementing class of org.iplass.mtp.impl.auth.oauth.jwt.JwtKeyStore to the class.
For signing to JWT, iPLAss supports public key based encryption signatures. It manages the key pairs (public key / private key). As the standard implementation, the followingJwtKeyStore are provided.
Please specify org.iplass.mtp.impl.auth.oauth.jwt.SimpleJwtKeyStore to the class.
It is a Java Key Store based JwtKeyStore implementation. It has the following features.
-
KeyStore’s alias is set to kid(Key ID)
-
It manages the key valid period using the valid period of the public key certificate stored in the KeyStore
The following items can be configured.
Item | Value | Description |
---|---|---|
keyStoreType |
String |
KeyStore type. The default value is |
keyStoreProvider |
String |
KeyStore provider. If not specified, the standard provider will be used. |
keyStoreFilePath |
String |
KeyStore resource path (under classpath) or file path (as a file on the OS). |
keyStorePassword |
String |
KeyStore password. |
keyPasswordMap |
Map format |
When assigning a different keyPassword for each individual Key, define it by specifying an alias name for name and a password for value. If keyPasswordMap is not specified, the value of keyStorePassword is used for keyPassword. |
keyStoreReloadIntervalMinutes |
int |
KeyStore reload interval (minutes) can be configured with the following items. If it is not set, it will not be reloaded. |
rollOverType |
<< JwtKeyRolloverType >> |
Key rollover method can be configured with the following items.
The default value is |
rollOverDaysBeforeExpire |
long |
Number of days to switch when rollOverType is |
Specify the rollover method when the key’s valid period is about to expire. When multiple (new and old) keys are in KeyStore, this is the method to determine which one to use. The validity period of the key is determined by the validity period of the public key certificate.
- OLDER
-
Use a certificate key with a shorter validity period (NotAfter is old) until the validity period expires
- NEWER
-
Use a certificate key with a longer validity period (NotAfter is newer) among certificates that are within the validity period
- BEFORE_N_DAYS
-
switch to rollOverDaysBeforeExpire days before expiration
Example (when Authorization Server and Resource Server are the same instance)
<service>
<interface>org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService</interface>
<property name="defaultConsentTemplateName" value="oauth/Consent" />
<property name="authorizationCodeStore" class="org.iplass.mtp.impl.auth.oauth.code.CacheAuthorizationCodeStore">
<property name="timeToLive" value="180000" />
</property>
<property name="accessTokenStore" class="org.iplass.mtp.impl.auth.oauth.token.opaque.OpaqueOAuthAccessTokenStore">
<property name="seriesHashAlgorithm" value="SHA-256" />
<property name="seriesHashSalt" value="[salt for each environment]" />
<property name="tokenCreationStrategy" class="org.iplass.mtp.impl.auth.oauth.token.opaque.NewTokenCreationStrategy" />
</property>
<property name="jwtProcessor" class="org.iplass.mtp.impl.auth.oauth.jwt.JjwtProcesor" />
<property name="jwtKeyStore" class="org.iplass.mtp.impl.auth.oauth.jwt.SimpleJwtKeyStore">
<property name="keyStoreFilePath" value="/conf/jwtKeyStore.jks" />
<property name="keyStorePassword" value="[your jks store password]" />
<property name="keyStoreReloadIntervalMinutes" value="1440" />
<property name="rollOverType" value="BEFORE_N_DAYS" />
<property name="rollOverDaysBeforeExpire" value="5" />
</property>
<property name="subjectIdHashAlgorithm" value="SHA-256" />
<property name="subjectIdHashSalt" value="[yourOwnSalt]" />
</service>
Example (Resource Server)
<service>
<interface>org.iplass.mtp.impl.auth.oauth.OAuthAuthorizationService</interface>
<property name="accessTokenStore" class="org.iplass.mtp.impl.auth.oauth.token.remote.RemoteOAuthAccessTokenStore" inherit="false">
<property name="introspectionEndpointUrl" value="http://localhost:8080/mtp/${tenantName}/api/oauth/introspect"/>
<property name="resourceServerId" value="sampleRS"/>
<property name="resourceServerSecret" value="AK08O9RvVzmTWrrSidS..."/>
<property name="reloadUser" value="false"/>
<property name="httpClientConfig">
<property name="poolingMaxTotal" value="30"/>
</property>
<property name="exponentialBackoff">
<property name="maxElapsedTimeMillis" value="60000"/>
</property>
</property>
</service>
3.47. ODataService
The service to control the behavior of OData Service.
Interface Name
org.iplass.mtp.impl.webapi.odata.ODataService
Implementing Class
org.iplass.mtp.impl.webapi.odata.ODataServiceImpl
The settings of ODataService
The following item can be configured.
Configurable Items
Item | Value | Description |
---|---|---|
queryPaging |
int |
Set the default paging when querying for OData. |
Example
<service>
<interface>org.iplass.mtp.impl.webapi.odata.ODataService</interface>
<class>org.iplass.mtp.impl.webapi.odata.ODataServiceImpl</class>
<property name="queryPaging" value="20" />
</service>
3.48. OidCounter
This is a service for oid numbering.
It employs CounterService for numbering.
The setting needs to be changed depending on whether or not the RDB sequence numbering function is available.
If there is a sequence function (default setting), set RdbSequenceCounterService
,
If not (MySQL), use CachableRdbTableCounterService
.
Interface Name
org.iplass.mtp.impl.counter.CounterService
Implementing Class Name
org.iplass.mtp.impl.counter.RdbSequenceCounterService
org.iplass.mtp.impl.counter.CachableRdbTableCounterService
RdbSequenceCounterService
RdbSequenceCounterService can be configured with the folloiwing items.
Configurable Items
Item | Value | Description |
---|---|---|
sequenceNameMap |
SequenceNameMap, Multiple |
Mapping of numbering unit and numbering table. |
Set mapping of numbering unit and numbering table. The following items can be set.
Item | Value | Description |
---|---|---|
name |
String |
The name of the numbering unit. |
value |
String |
RDB sequence name. |
Settings of CachableRdbTableCounterService
CachableRdbTableCounterService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
separateTransaction |
boolean |
Specify whether to separate the transaction. The default value is false. |
retryCount |
int |
Number of times to retry when the counter fails. The default value is 3. |
counterTypeName |
String |
Define the type of the counter. The default is |
cacheSize |
int |
Cache size, the default is 20. |
Example
<!-- Default Settings -->
<service name="OidCounter">
<interface>org.iplass.mtp.impl.counter.CounterService</interface>
<class>org.iplass.mtp.impl.counter.RdbSequenceCounterService</class>
<property name="sequenceNameMap">
<property name="oid" value="SEQ_OBJ_ID" />
<property name="rbid" value="SEQ_RB_ID" />
<property name="lobid" value="SEQ_LOB_ID" />
<property name="logid" value="SEQ_LOG_ID" />
</property>
</service>
<!-- MySQL -->
<service name="OidCounter">
<interface>org.iplass.mtp.impl.counter.CounterService</interface>
<class>org.iplass.mtp.impl.counter.CachableRdbTableCounterService</class>
<property name="counterTypeName" value="OidCounter" />
<property name="cacheSize" value="20" />
<property name="retryCount" value="3" />
</service>
3.49. OnetimeCodeGeneratorService
This is the service about the one-time authentication for two-step verifications.
Interface Name
org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService
Implementing Class Name
org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService
Settings of OnetimeCodeGeneratorService
The one time code generator can be configured.
Configurable Items
Item | Value | Description |
---|---|---|
generator |
OnetimeCodeGenerator, Multiple |
Settings of one time authentication code generator. |
Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGenerator to the class.
As standard implementation, we provided the class: org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandOnetimeCodeGenerator which will generate one time code for transmission. There is no configurable items for OutOfBandOnetimeCodeGenerator.
A one-time authentication code generator that generates authentication code to be sent externally. The following items can be configured.
Item | Value | Description |
---|---|---|
name |
String |
Name of the one time authentication code generator. |
maxFailureCount |
int |
The maximum authentication failure count before aborting. the default is 5. |
lifetimeSeconds |
long |
The effective period for the code generated. The default is 180(3 minutes). |
store |
Define how to store the generated code. |
|
sender |
Define how to send the generated code. |
|
strategy |
Define the generation process of the one time code generator. |
Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeStore to the class.
The standard implementation are provided. The class org.iplass.mtp.impl.auth.authenticate.onetime.SessionOntimeCodeStore that can store the generated code is provided. SessionOntimeCodeStore does not have configurable items.
Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandSender to the class.
The standard implementations that can send the code are provided. The class via email is org.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSender. The class via SMS is org.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSender.
Please specify org.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSender to the class.
The following items can be configured.
Item | Value | Description |
---|---|---|
mailTemplate |
String |
Specify the template of the mails for sending the one time code. |
fromAddress |
String |
The send from address. Set when using an different email address from the address set in the tenant email settings. |
Please specify org.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSender to the class.
The following items can be configured.
Item | Value | Description |
---|---|---|
smsTemplate |
String |
Specify the template of the SMS for sending the one time code. |
fromPhoneNumber |
String |
The send from phone number. Use this items when it is required to specify a different number from what you have configured in SmsService. |
Please specify the implementing class of org.iplass.mtp.impl.auth.authenticate.onetime.outofband.GenerateStrategy to the class.
As standard implementation, the class that can generated onetime code in int numbers are provided: org.iplass.mtp.impl.auth.authenticate.onetime.outofband.NumberGenerateStrategy. For NumberGenerateStrategy, the following item can be configured.
Item | Value | Description |
---|---|---|
numberOfDigits |
int |
Define how many digits for the code. The default is 6. |
Example
<service>
<interface>org.iplass.mtp.impl.auth.authenticate.onetime.OnetimeCodeGeneratorService</interface>
<property name="generator"
class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandOnetimeCodeGenerator">
<property name="name" value="outOfBandByMail" />
<property name="maxFailureCount" value="5" />
<property name="lifetimeSeconds" value="180" />
<property name="store"
class="org.iplass.mtp.impl.auth.authenticate.onetime.SessionOntimeCodeStore" />
<property name="sender"
class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.MailOutOfBandSender">
<property name="mailTemplate" value="mtp/auth/onetime/SendCode" />
<!-- if use another "from address" instead of tenant default "from address".
<property name="fromAddress" value="noreply@xxx.dentsusoken.com" />
-->
</property>
<property name="strategy"
class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.NumberGenerateStrategy">
<property name="numberOfDigits" value="6" />
</property>
</property>
<property name="generator"
class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.OutOfBandOnetimeCodeGenerator">
<property name="name" value="outOfBandBySms" />
<property name="maxFailureCount" value="5" />
<property name="lifetimeSeconds" value="180" />
<property name="store"
class="org.iplass.mtp.impl.auth.authenticate.onetime.SessionOntimeCodeStore" />
<property name="sender"
class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.SmsOutOfBandSender">
<property name="smsTemplate" value="mtp/auth/onetime/SendCodeSms" />
<!-- if use another "from phone number" instead of SMSService's defaultFrom.
<property name="fromPhoneNumber" value="+1234..." />
-->
</property>
<property name="strategy"
class="org.iplass.mtp.impl.auth.authenticate.onetime.outofband.NumberGenerateStrategy">
<property name="numberOfDigits" value="6" />
</property>
</property>
</service>
3.50. OpenIdConnectService
The service for managing the functions of OpenID Connect Relying Party.
Interface Name
org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService
Implementing Class Name
org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService
Settings of OpenIdConnectService
OpenIdConnectService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
allowedClockSkewMinutes |
int |
Allowable clock skew time. Default value is 0 (minutes). |
jwksCacheLifetimeMinutes |
int |
The cashe time of jwks. Default value is 360 (minutes). |
clientSecretType |
String |
The type of Client Secret. Default value is |
httpClientConfig |
Settings of HTTP client. |
Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class.
The following items can be configured.
Item | Value | Description |
---|---|---|
connectionTimeout |
int |
Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds). |
soTimeout |
int |
socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds). |
poolingMaxTotal |
int |
Maximum number of pools for http connections. The default value is 20. |
poolingDefaultMaxPerRoute |
int |
Maximum number of http connections per domain. The default value is 2. |
poolingTimeToLive |
int |
Lifetime of pooled http connections (milliseconds). The default is unlimited. |
proxyHost |
String |
Proxy server host. |
proxyPort |
int |
Proxy server port number. |
httpClientBuilderFactory |
Specify this if you want to create a custom HttpClientBuilder. |
Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.
The following HttpClientBuilderFactory is provided as standard.
Example
<service>
<interface>org.iplass.mtp.impl.auth.authenticate.oidc.OpenIdConnectService</interface>
<property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
<property name="proxyHost" value="proxyhost.dentsusoken.com"/>
<property name="proxyPort" value="8080"/>
</property>
</service>
3.51. OutOfBandVerificationService
This is the service to manage the verification process using email and SMS.
Interface Name
org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService
Implementing Class
org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService
The settings of OutOfBandVerificationService
OutOfBandVerificationService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
verifier |
OutOfBandVerifier, Multiple |
The settings of the verifier with OutOfBand method. |
The settings of the verifier with OutOfBand method.
Please specify org.iplass.wam.impl.outofbandverify.OutOfBandVerifier to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
name |
String |
The name of the OutOfBand |
outOfBand |
The settings of the OutOfBand |
|
strategy |
The settings of the verifying strategy. |
|
store |
Set where to store the target objects. |
Please specify the implementing class of org.iplass.wam.impl.outofbandverify.outofband.OutOfBand to the class.
As the standard implementation, the following OutOfBands are provided.
The OutOfBand using mail services.
Please specify org.iplass.wam.impl.outofbandverify.outofband.MailOutOfBand to the class. There is no configurable items.
The OutOfBand using SMS services.
Please specify org.iplass.wam.impl.outofbandverify.outofband.SMSOutOfBand to the class. There is no configurable items.
Please specify the implementing class of org.iplass.wam.impl.outofbandverify.strategy.VerifyStrategy to the class.
As the standard implementation, the following VerifyStrategies are provided.
Verify by activation URL.
Please specify org.iplass.wam.impl.outofbandverify.strategy.ActivationURLVerifyStrategy to the class. There is no configurable items.
Verify by one-time code.
Please specify org.iplass.wam.impl.outofbandverify.strategy.OnetimeCodeVerifyStrategy to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
numberOfDigits |
int |
Number of digits of the one time code. The default is 6. |
Please specify the implementing class of org.iplass.wam.impl.outofbandverify.store.VerificationStore to the class.
As the standard implementation, the following VerificationStore are provided.
Save the verification target in the cache.
Please specify org.iplass.wam.impl.outofbandverify.store.CacheVerificationStore to the class. There is no configurable items.
Save the verification target in Entity.
Please specify org.iplass.wam.impl.outofbandverify.store.EntityVerificationStore to the class. There is no configurable items.
Save the verification target in the user’s Session.
Please specify org.iplass.wam.impl.outofbandverify.store.SessionVerificationStore to the class. There is no configurable items.
Example
<service>
<interface>org.iplass.wam.impl.outofbandverify.OutOfBandVerificationService</interface>
<property name="verifier" class="org.iplass.wam.impl.outofbandverify.OutOfBandVerifier">
<property name="name" value="email"/>
<property name="outOfBand" class="org.iplass.wam.impl.outofbandverify.outofband.MailOutOfBand"/>
<property name="strategy" class="org.iplass.wam.impl.outofbandverify.strategy.ActivationURLVerifyStrategy"/>
<property name="store" class="org.iplass.wam.impl.outofbandverify.store.EntityVerificationStore"/>
</property>
<property name="verifier" class="org.iplass.wam.impl.outofbandverify.OutOfBandVerifier">
<property name="name" value="mobileMail"/>
<property name="outOfBand" class="org.iplass.wam.impl.outofbandverify.outofband.MailOutOfBand"/>
<property name="strategy" class="org.iplass.wam.impl.outofbandverify.strategy.OnetimeCodeVerifyStrategy"/>
<property name="store" class="org.iplass.wam.impl.outofbandverify.store.SessionVerificationStore"/>
</property>
<property name="verifier" class="org.iplass.wam.impl.outofbandverify.OutOfBandVerifier">
<property name="name" value="sms"/>
<property name="outOfBand" class="org.iplass.wam.impl.outofbandverify.outofband.SMSOutOfBand"/>
<property name="strategy" class="org.iplass.wam.impl.outofbandverify.strategy.OnetimeCodeVerifyStrategy"/>
<property name="store" class="org.iplass.wam.impl.outofbandverify.store.SessionVerificationStore"/>
</property>
</service>
3.52. PropertyService
This is the service to manage property.
Interface Name
org.iplass.mtp.impl.entity.property.PropertyService
Implementing Class Name
org.iplass.mtp.impl.entity.property.PropertyService
Settings of PropertyService
PropertyService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
longTextInlineStoreMaxLength |
int |
Maximum size (in String.length) for storing LongText type strings internally. The default value is 1024. The maximum size set from the beginning of the character string is retained inside the DataStore record without being saved in the LobStore. If the varcharColumnLength defined in StorageSpaceMap of StoreService is less than longTextInlineStoreMaxLength, the StorageSpaceMap setting takes precedence. |
remainInlineText |
boolean |
Whether to store LongText type strings internally for search. The default value is false. However, the part that exceeds the character string length that can be held inside the record will not be searched. |
Example
<service>
<interface>org.iplass.mtp.impl.entity.property.PropertyService</interface>
<!-- if longtext property value length is over this byte, offstorage to LOB -->
<property name="longTextInlineStoreMaxLength" value="1024" />
<!-- To enable search long text property, this flag set to true. note:Search text limit is longTextInlineStoreMaxLength. And storage space more consume. -->
<property name="remainInlineText" value="false" />
</service>
3.53. PropertyEncryptionService
This is a service that performs encryption in units of properties.
Interface Name
org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService
Implementing Class Name
org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService
Settings of PropertyEncryptionService
PropertyEncryptionService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
encryptionSettings |
EncryptionSetting, Multiple |
Specify how to encrypt. A standard provided class or a custom EncryptionSetting that implements the EncryptionSetting interface. You can roll over encryption logic by defining multiple encryptionSettings for different versions. Newly stored values are encrypted using the last defined encryptionSettings. |
cachePrivateKeyInMemory |
boolean |
Whether to cache secret key in memory. The default value is false. |
logEncryptProperty |
boolean |
Set whether to log the encrypted property with the value before encryption. The default value is true. |
encryptValueLogExpression |
String |
Indicate how the character string is outputted when encrypted. Default will be |
It will define how the encryption is executed.
Please specify the implementing class of org.iplass.mtp.impl.properties.extend.crypt.EncryptionSetting.
For our standard, the following EncryptionSetting are provided.
With this, encryption will be processed by PBKDF2 (Password-Based Key Drivation Function).
Please specify org.iplass.mtp.impl.properties.extend.crypt.PBKDF2EncryptionSetting to the class.
Item | Value | Description |
---|---|---|
version |
String |
Version of encryption algorithms. Specify a unique number if multiple encryptionSettings definitions are employed. |
keyFactoryAlgorithm |
String |
Key generation algorithm.
The default value is |
keySalt |
String |
Salt when generating the key. If not specified, the system default value is used. |
keyStretch |
int |
Number of stretches during key generation. The default value is 2048. |
cipherAlgorithm |
String |
Block encryption algorithm.
The default value is |
keyLength |
int |
Key length. The default value is 128. |
keyPassword |
String |
The password string from which the key is generated. |
With this, the encryption will be processed by KeyStore file.
Please specify org.iplass.mtp.impl.properties.extend.crypt.KeyStoreEncryptionSetting to the class.
Item | Value | Description |
---|---|---|
version |
String |
Version of encryption algorithm settings. Specify a unique number in multiple encryptionSettings definitions. |
cipherAlgorithm |
String |
Block encryption algorithm.
The default value is |
keyLength |
int |
Key length. The default value is 128. |
keyStoreType |
String |
The type of keyStore that stores the private key.
The default value is |
keyStoreFilePath |
String |
File path of keyStore file. |
keyStorePassword |
String |
The keyStore password. |
keyAlias |
String |
Alias name of the private key stored in keyStore. |
keyPassword |
String |
Password for obtaining the private key stored in keyStore. |
Example
<service>
<interface>org.iplass.mtp.impl.properties.extend.crypt.PropertyEncryptionService</interface>
<property name="encryptionSettings" class="org.iplass.mtp.impl.properties.extend.crypt.PBKDF2EncryptionSetting">
<property name="version" value="1" />
<property name="keyPassword" value="yourOwnPass" />
</property>
<property name="encryptionSettings" class="org.iplass.mtp.impl.properties.extend.crypt.KeyStoreEncryptionSetting">
<property name="version" value="2" />
<property name="keyStoreFilePath" value="yourOwnKeyStoreFilePass" />
<property name="keyStorePassword" value="yourOwnKeyStorePassword" />
<property name="keyAlias" value="yourOwnKeyAliasName" />
<property name="keyPassword" value="yourOwnKeyPassword" />
</property>
<!--
By default the secret key is cached in memory.
For enhanced security,
set cachePrivateKeyInMemory to false if you do not want to cache secret keys in memory.
-->
<property name="cachePrivateKeyInMemory" value="true" />
</service>
Since keyPassword and keyStorePassword are confidential information, handle them with care. Use strategy such as tightening the access rights of the configuration file or obfuscating the configuration file to protect the information please.
3.54. PushNotificationService
This service manages push notification template definitions (Metadata) and push notifications for mobile devices. A module using Firebase Cloud Messaging (FCM) is provided as a standard implementation of the push notification service.
Interface Name
org.iplass.mtp.impl.pushnotification.PushNotificationService
Implementing Class Name
org.iplass.mtp.impl.pushnotification.fcmv1.PushNotificationService org.iplass.mtp.impl.pushnotification.fcm.FCMPushNotificationService (1)
1 | FCMPushNotificationService has been deprecated in favor of PushNotificationService, which supports the FCM HTTP v1 API. |
Settings of PushNotificationService(FCM HTTP v1 API)
Configure the PushNotificationService to use the FCM HTTP v1 API.
This service depends on GoogleCloudSettings. If you want to use this service, you need to include GoogleCloudSettings in your service-config settings.
設定項目
Item | Value | Description |
---|---|---|
projectId |
String, Required |
Set the project ID of the Firebase(Google) project to be used. |
compressRequest |
boolean |
If this parameter is set to true, the HTTP request message is compressed when FCM is called. If not specified, the default value is true. |
apiRequestValidateOnly |
boolean |
If this parameter is set to true, it sets the value of the validate_only key to true when calling FCM (FCM can test the request without actually sending the message). If not specified, the default value is false. |
enableRetry |
boolean |
Whether to retry if the FCM call fails with an error that can be retried. The default value is true if not specified. |
exponentialBackoff |
This is for the value setting of ExponentialBackOff when retrying with ExponentialBackoff class property. |
|
defaultRetryAfterSeconds |
int |
Sets the time to wait if |
httpClientConfig |
Settings related to HTTP connection when calling WebApi. |
|
registrationTokenHandler |
Sets the implementation class to process the Token when notified that RegistrationToken is not registered as a result of executing the FCM notification request. If unspecified, nothing is processed. |
|
listener |
PushNotificationListener, Multiple |
The listener when processing PushNotification. |
Settings of FCMPushNotificationService (deprecated)
Set up a PushNotificationService that uses the FCM Legacy API.
FCMPushNotificationService has been deprecated. Please consider migrating to PushNotificationService, which uses the FCM HTTP v1 API.
Configurable Items
Item | Value | Description |
---|---|---|
authorizationKey |
String, Required |
Server key for authentication issued by FCM. |
enableRetry |
boolean |
Whether to retry if the FCM call fails with an error that can be retried. The default value is true if not specified. |
exponentialBackoff |
This is for the value setting of ExponentialBackOff when retrying with ExponentialBackoff class property. |
|
registrationIdHandler |
This set the implementation class of RegistrationIdHandler to process the notification when registrationId does not exist or when FCM notifies a existed registrationId. If it is not specified, nothing will be processed. |
|
httpClientConfig |
Settings related to HTTP connection when calling WebApi. |
|
listener |
PushNotificationListener, Multiple |
The listener when processing PushNotification. |
dryRun |
boolean |
If this parameter is set to true when calling FCM, FCM will not actually send the message in real, thus this is for the purpose to test the request. The default value is false. |
endpoint |
String |
The URL of the endpoint that will make the FCM call. If not specified, the default value is |
Please specify org.iplass.mtp.impl.http.ExponentialBackoff to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
retryIntervalMillis |
int |
Specifies the retry interval in milliseconds. The default value is 500. |
randomizationFactor |
double |
Random element when retrying. If 0.5, the value specified for retryIntervalMillis will fluctuate in the range of 25%. The default value is 0.5. |
multiplier |
double |
Exponential element of retry interval when retrying. If 1.5 and retryIntervalMillis is 500, the second retry is 750ms and the third retry is 1125ms. The default value is 1.5. |
maxIntervalMillis |
int |
Maximum retry interval. The default value is 60000 (1 minute). |
maxElapsedTimeMillis |
int |
Maximum retry execution time. If retry processing is not successful during this time, retry processing is terminated and the results up to that point are returned to the application. The default value is 300000 (5 minutes). |
Please specify the implementing class of org.iplass.mtp.pushnotification.fcm.RegistrationIdHandler.
As a standard implementation, the simple log: org.iplass.mtp.impl.pushnotification.fcm.LoggingRegistrationIdHandler is provided. LoggingRegistrationIdHandler does not have configurable items.
Please specify the implementing class of org.iplass.mtp.pushnotification.fcmv1.RegistrationTokenHandler.
There are no standard features provided.
Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
proxyHost |
String |
Host name for proxy. |
proxyPort |
int |
Port when using proxy. |
connectionTimeout |
int |
Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds). |
soTimeout |
int |
Specify socket timeout (SO_TIMEOUT) in milliseconds for HTTP communication. The default value is 30000 (30 seconds). |
poolingMaxTotal |
int |
Maximum number of pools for http connections. The default value is 20. |
poolingDefaultMaxPerRoute |
int |
Maximum number of http connections per domain. The default value is 2. |
poolingTimeToLive |
int |
Lifetime of pooled http connections (milliseconds). The default is unlimited. |
httpClientBuilderFactory |
Specify this if you want to create a custom HttpClientBuilder. |
Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.
The following HttpClientBuilderFactory is provided as standard.
Please specify the implementing class of org.iplass.mtp.pushnotification.PushNotificationListener.
As the standard implementation, the following PushNotificationListener are provided.
Please specify org.iplass.mtp.impl.micrometer.metrics.pushnotification.MetricsPushNotificationListener to the class.
It’s PushNotificationListener with the metric collection function by Micrometer. There are no settings that can be configured.
Example
<service>
<interface>org.iplass.mtp.impl.pushnotification.PushNotificationService</interface>
<class>org.iplass.mtp.impl.pushnotification.fcmv1.PushNotificationService</class>
<property name="projectId" value="[set Firebase(Google) Project Id]" />
<property name="compressRequest" value="true" />
<property name="apiRequestValidateOnly" value="false" />
<property name="enableRetry" value="true" />
<property name="exponentialBackoff" class="org.iplass.mtp.impl.http.ExponentialBackoff">
<property name="retryIntervalMillis" value="500" />
<property name="randomizationFactor" value="0.5" />
<property name="multiplier" value="1.5" />
<property name="maxIntervalMillis" value="60000" />
<property name="maxElapsedTimeMillis" value="300000" />
</property>
<property name="defaultRetryAfterSeconds" value="60" />
<property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
<property name="proxyHost" value="xxxxxx.dentsusoken.com" />
<property name="proxyPort" value="8080" />
</property>
<!--
Can specify the implementation class of org.iplass.mtp.pushnotification.fcmv1.RegistrationTokenHandler.
-->
<!--
<property name="registrationTokenHandler" class="[set class of implements org.iplass.mtp.pushnotification.fcmv1.RegistrationTokenHandler]" />
-->
<!-- PushNotificationListener implementation class. Multiple settings are possible. -->
<!--
<property name="listener" class="[set class of implements org.iplass.mtp.pushnotification.PushNotificationListener]" />
<property name="listener" class="[set class of implements org.iplass.mtp.pushnotification.PushNotificationListener]" />
-->
</service>
3.55. QueryService
The service to manage the external hints for EQL.
Interface Name
org.iplass.mtp.impl.query.QueryService
Implementing Class Name
org.iplass.mtp.impl.query.QueryService
Settings of QueryService
QueryService can be configured in the following ways.
Configurable Items
Item | Value | Description |
---|---|---|
externalHintFile |
String |
When using the external hint clauses, this specify the location (Or the resource path on classpath) of the property files of the hints. |
externalHints |
HintComment, Multiple |
set external hint name to name, and set the hints to value. |
If the property file path is set in externalHintFile, we can specify the key name and the corresponding hint phrase in this way.
hint1=native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_3)') hint2=native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_1)') : :
To use an external hint in EQL, you can read the hint phrase specified in the property file or externalHints by specifying @hint (keyName) in the EQL statement.
Specify @hint in the EQL statement as shown below.
select /*+ @hint(hint1) */ propA, propB, refX.name from HogeEntity where refX.propFuga='piyo'
Inside, the contents of @hint are expanded as follows.
select /*+ native(q0t0, 'FORCE INDEX(obj_store__USER_ISTR_index_3)') */ propA, propB, refX.name from HogeEntity where refX.propFuga='piyo'
You can also obtain the Hint clause as a Java instance by calling the org.iplass.mtp.entity.query.hint.Hint#externalHint (String key) method.
Example
<service>
<interface>org.iplass.mtp.impl.query.QueryService</interface>
<!--
if use external hint, set propertyFile path(file path or classpath's resource path) or add inline.
-->
<!--
<property name="externalHintFile" value="/externalHint.properties" />
<property name="externalHints">
<property name="hint1" value="native(...)" />
<property name="hint2" value="index(...)" />
</property>
-->
</service>
3.56. RdbAdapterService
This service manages RdbAdapter, which is an interface for various RDBs.
Interface Name
org.iplass.mtp.impl.rdb.adapter.RdbAdapterService
Implementing Class Name
org.iplass.mtp.impl.rdb.adapter.RdbAdapterService
Settings of RdbAdapterService
The settings for RdbAdapter are listed below.
Configurable Items
Item | Value | Description |
---|---|---|
adapter |
Set standard RdbAdapter |
|
Any text string other than "adapter" |
RdbAdapter, Multiple |
Set other RdbAdapter |
Please specify the implementing class of org.iplass.mtp.impl.rdb.adapter.RdbAdapter.
As the standard implementation, these adapter are provided:
-
Oracle based org.iplass.mtp.impl.rdb.oracle.OracleRdbAdapter
-
MySQL based org.iplass.mtp.impl.rdb.mysql.MysqlRdbAdapter
-
PostgreSQL based org.iplass.mtp.impl.rdb.postgresql.PostgreSQLRdbAdapter
-
SQL Server based org.iplass.mtp.impl.rdb.sqlserver.SqlServerRdbAdapter
For each settings of RdbAdapter, these items can be configured.
Oracle based RdbAdapter. The following items can be configured.
Item | Value | Description | ||
---|---|---|---|---|
lockTimeout |
int |
Timeout (in seconds) before the row level lock is released. If 0 is set, the system will not wait for lock release (FOR UPDATE NOWAIT). If a negative value is set, it will wait until the lock is released. The default value is 0. |
||
timestampFunction |
String |
Function to get timestamp. The default value is |
||
addMonthsFunction |
String |
Function to add the month. The default value is |
||
monthsBetweenFunction |
String |
Function to get the difference between two dates. The default value is |
||
isUseSubQueryForIndexJoin |
boolean |
Whether to perform a join using an Index table using a correlated subquery. The default value is true. |
||
optimizerHint |
String |
Optimizer hint. The default value is |
||
enableInPartitioning |
boolean |
Whether to perform conversion processing that relaxes the limit of 1000 IN operators. The default value is false. The relaxation processing is to divide IN (1,2, …) in units of 1000 (IN (1,2, …) OR IN (1001, 1002, …)) and OR That is. |
||
escapeFullwidthWildcard |
boolean |
Whether to escape the full-width characters |
||
enableBindHint |
boolean |
Whether to enable the bind hint clause. The default value is true. |
||
alwaysBind |
boolean |
Whether to always use bind variables when converting EQL to SQL. The default value is true. |
||
thresholdCountOfUsePrepareStatement |
int |
Threshold for determining whether to use PrepareStatement when multiple updates (additions) are processed at once. The default value is 50. |
||
batchSize |
int |
Recommended batch size when using batch update. The default value is 100. |
||
maxFetchSize |
int |
Maximum size to fetch. The default value is 100. |
||
defaultFetchSize |
int |
Default size of fetch. The default value is 0. If 0 is specified, the actual fetch size depends on the JDBC driver. |
||
defaultQueryTimeout |
int |
Query timeout (seconds). If 0 is specified, timeout does not occur. The default value is 0. |
||
useFetchFirstClause |
boolean |
Whether to use FETCH FIRST clause available from Oracle 12c. The default value is true. |
||
rdbTimeZone |
String |
If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone. |
||
maxViewNameLength |
int |
Maximum length of view name. The default value is 128. |
||
listaggDefaultSeparator |
String |
Default separator when using the LISTAGG aggregate function. The default value is |
||
bindDateAsString |
boolean |
Sets whether to bind with String type via the TO_DATE function instead of directly binding with java.sql.Date type when binding Date type with PrepareStatement. Default is true.
|
MySQL based RdbAdapter. The following items can be configured.
Item | Value | Description | ||
---|---|---|---|---|
useFractionalSecondsOnTimestamp |
boolean |
Whether to include milliseconds in the timestamp. The default value is true. |
||
supportOptimizerHint |
boolean |
Define whether to support optimization hints. The default value is true. |
||
optimizeCountQuery |
boolean |
Define whether to optimize the count query. The default value is true. |
||
localTemporaryTableManageOutsideTransaction |
boolean |
Specifies whether to manage local temporary tables outside of transactions. The default value is false. |
||
localTemporaryTableCreatedByDataSource |
boolean |
Specifies whether local temporary tables are created based on the data source. The default value is false. |
||
timestampMethod |
String |
Get timestamp function. The default value is |
||
enableBindHint |
boolean |
Whether to enable the bind hint clause. The default value is false. |
||
batchSize |
int |
Recommended batch size when using batch update. The default value is 100. |
||
thresholdCountOfUsePrepareStatement |
int |
Threshold for determining whether to use PrepareStatement when multiple updates (additions) are processed at once. The default value is -1. |
||
maxFetchSize |
int |
Maximum size to fetch. The default value is 100. |
||
defaultFetchSize |
int |
Default size of fetch. The default value is -1 (meaning not set explicitly). If 0 is specified, the actual fetch size depends on the JDBC driver. |
||
defaultQueryTimeout |
int |
Query timeout (seconds). If 0 is specified, timeout does not occur. The default value is 0. |
||
supportWindowFunction |
boolean |
Whether to support Window functions. The default value is true. If using MySQL version 5.7 or earlier, which does not support the Window function, set this to false. |
||
rdbTimeZone |
String |
If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone. |
||
maxViewNameLength |
int |
Maximum length of view name. The default value is 64. |
||
listaggDefaultSeparator |
String |
Default separator when using the LISTAGG aggregate function. The default value is |
||
needMultiTableTrick |
boolean |
When issuing UPDATE/DELETE statements, whether or not measures to improve performance are required when subqueries are used for conditions. The default is false.
|
PostgresSQL based RdbAdapter. The following items can be configured.
Item | Value | Description |
---|---|---|
supportOptimizerHint |
boolean |
Define whether to support optimization hints. The default value is false. |
timestampFunction |
String |
Function to get timestamp. The default value is |
escapeBackslash |
boolean |
Whether to escape backslashes. The default value is false. |
enableBindHint |
boolean |
Whether to enable the bind hint clauses. The default value is false. |
batchSize |
int |
Recommended batch size when using batch update. The default value is 100. |
maxFetchSize |
int |
Maximum size to fetch. The default value is 100. |
defaultFetchSize |
int |
Default size of fetch. The default value is 10. If 0 is specified, the actual fetch size depends on the JDBC driver. |
defaultQueryTimeout |
int |
Query timeout (seconds). If 0 is specified, timeout will not occur. The default value is 0. |
lockTimeout |
int |
Lock timeout (seconds). If 0 is specified, timeout will not occur. The default value is 0. |
rdbTimeZone |
String |
If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone. |
maxViewNameLength |
int |
Maximum length of view name. The default value is 63. |
listaggDefaultSeparator |
String |
Default separator when using the LISTAGG aggregate function. The default value is |
useStandardListaggFunction |
boolean |
Sets whether or not to use the SQL2016 standard-based LISTAGG aggregate function representation. If false, STRING_AGG will be used. The default value is false. |
SQL Server based RdbAdapter. The following items can be configured.
Item | Value | Description |
---|---|---|
timestampFunction |
String |
Function to get timestamp. The default value is |
addMonthsFunction |
String |
Function to add the month. The default value is |
monthsBetweenFunction |
String |
Function to get the difference between two dates. The default value is |
isUseSubQueryForIndexJoin |
boolean |
Whether to perform a join using an Index table using a correlated subquery. The default value is true. |
enableBindHint |
boolean |
Whether to enable the bind hint clause. The default value is false. |
alwaysBind |
boolean |
Whether to always use bind variables when converting EQL to SQL. Default is false. In SQL Server, the maximum number of parameters that a procedure can have is 2,100, so when setting it to true, please do not exceed this maximum number. |
batchSize |
int |
Recommended batch size when using batch update. The default value is 100. |
thresholdCountOfUsePrepareStatement |
int |
Threshold for determining whether to use PrepareStatement when multiple updates (additions) are processed at once. The default value is 50. |
maxFetchSize |
int |
Maximum size to fetch. The default value is 100. |
defaultFetchSize |
int |
Default size of fetch. The default value is 0. If 0 is specified, the actual fetch size depends on the JDBC driver. |
defaultQueryTimeout |
int |
Query timeout (seconds). If 0 is specified, timeout will not occur. The default value is 0. |
lockTimeout |
int |
Timeout (in seconds) before the row level lock is released. If 0 is set, it will not wait for the lock to be released (NOWAIT). If a negative value is set, the system will wait until the lock is released. The default value is 0. |
optimizerHint |
String |
Optimizer hint. The default value is |
rdbTimeZone |
String |
If the RDB time zone is different from the JVM on which iPLAss runs, specify the RDB time zone. |
timeZoneMap |
Map format |
Defines the mapping between the Java Time Zone ID and the Time Zone ID on SQL Server. Define it by specifying the Java Time Zone ID for name and the SQL Server Time Zone ID for value. |
maxViewNameLength |
int |
Maximum length of view name. The default value is 128. |
listaggDefaultSeparator |
String |
Default separator when using the LISTAGG aggregate function. The default value is |
Example
<service>
<interface>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interface>
<!--
for oracle
::configable property::
lockTimeout :
(seconds), 0=for update no wait, -1=for update
enableInPartitioning :
enables IN clause's limitation avoidance (do partition IN clause by 1000 items unit).
escapeFullwidthWildcard :
when use oracle11gR2patch2(11.2.0.2.0) or before, set true this property
optimizerHint :
default hint clause of SQL generated by EQL.
useFetchFirstClause :
use FETCH FIRST clause rather than use ROWNUM (on oracle 12c).
-->
<property name="adapter" class="org.iplass.mtp.impl.rdb.oracle.OracleRdbAdapter" inherit="false">
<property name="lockTimeout" value="0" />
<property name="enableInPartitioning" value="false" />
<property name="escapeFullwidthWildcard" value="false" />
<property name="optimizerHint" value="FIRST_ROWS(100)" />
<property name="alwaysBind" value="true" />
<property name="thresholdCountOfUsePrepareStatement" value="50" />
<property name="batchSize" value="100" />
<property name="defaultQueryTimeout" value="0" />
<property name="useFetchFirstClause" value="false" />
</property>
<!--
for mysql
::configable property::
supportOptimizerHint :
Set to true when using Optimizer Hints (available since mysql5.7)
-->
<property name="adapter" class="org.iplass.mtp.impl.rdb.mysql.MysqlRdbAdaptor" inherit="false">
<property name="defaultQueryTimeout" value="0" />
<property name="supportOptimizerHint" value="false" />
</property>
<!-- for postgresql -->
<property name="postgresql"
class="org.iplass.mtp.impl.rdb.postgresql.PostgreSQLRdbAdapter" inherit="false" />
<!--
for sqlserver
::configable property::
lockTimeout :
(seconds), 0=for update no wait, -1=for update
optimizerHint :
default hint clause of SQL generated by EQL.
-->
<property name="adapter" class="org.iplass.mtp.impl.rdb.sqlserver.SqlServerRdbAdapter" inherit="false">
<property name="alwaysBind" value="false" />
<property name="defaultQueryTimeout" value="0" />
<property name="lockTimeout" value="0" />
<property name="optimizerHint" value="FAST 100" />
<property name="rdbTimeZone" value="Asia/Tokyo" />
<property name="timeZoneMap">
<property name="Asia/Tokyo" value="Tokyo Standard Time" />
<property name="America/Los_Angeles" value="Pacific Standard Time" />
:
:
</property>
</property>
</service>
3.57. RdbQueueService
This is the queue service using RDB.
Interface Name
org.iplass.mtp.impl.async.rdb.RdbQueueService
Implementing Class Name
org.iplass.mtp.impl.async.rdb.RdbQueueService
Settings of RdbQueueService
The configurable items of RdbQueueService are listed below.
Configurable Items
Item | Value | Description | ||||
---|---|---|---|---|---|---|
useQueue |
boolean |
Whether to use queue. The default is false. |
||||
queue |
Set the queue for asynchronous executions. The standard definition of the queue are depicted below.
|
|||||
cleanupHistoryOnInit |
boolean |
Set whether to delete the history logs when the service was initialized. The default is false. |
||||
historyHoldDay |
int |
Indicate how many days of the history records to be kept when deleting history log. The default is 1. |
||||
workerFactory |
Specify the Factory class that make the worker by custom. If not defined, set org.iplass.mtp.impl.async.rdb.DefaultWorkerFactory. |
Please specify org.iplass.mtp.impl.async.rdb.QueueConfig to the class.
Item | Value | Description |
---|---|---|
id |
int |
A unique ID. 0, 1 are already occupied, so please choose other ids. |
name |
String |
The name for the queue. Displayed when an asynchronous task selects a queue. |
resultRemainingTime |
long |
The time (in milliseconds) threshold to move the task to the history. Tasks older than the time specified from now will be moved. The default value is 86400000 (1 day). |
strictSequence |
boolean |
When GroupingKey is set for a task and strictSequence is true, the task ID is set sequentially for each group. |
selectWorkerOnSubmit |
boolean |
Whether to allocate workers to tasks which GroupingKey is not set. The default value is false. |
worker |
Specify the worker that processes the queue. |
Please specify org.iplass.mtp.impl.async.rdb.WorkerConfig to the class.
Item | Value | Description |
---|---|---|
pollingInterval |
long |
Queue polling interval in milliseconds. The default value is 30000. |
actualWorkerSize |
int |
You can set the number of actual workers processing the queue in parallel. The default value is 1. |
virtualWorkerSize |
int |
Number of virtual workers to allocate to the queue. The default value is 16.The virtualWorkerSize is set to the same value for the same queue definition in the system. Each virtual worker is assigned to actual workers. |
executionTimeout |
long |
Specify how long until the execution timeout (in milliseconds). The default value is 180000. |
restartDelay |
long |
Task retry interval in milliseconds. The default value is 30000. |
maxRetryCount |
int |
Task retry count. The default is 100. |
wakeupOnSubmit |
boolean |
Whether to start next task immediately after the current task is submitted. The default value is true.
Currently only valid when |
trace |
boolean |
Whether to output logs. The default value is true. |
local |
boolean |
Whether to process the task in the queue locally or distributed remotely. The default value is true. For distributed processing (local=false)
Explicitly specify the worker ID to be executed by this node in a system property of the following form. The worker ID is a sequential number from 0 to a number less than the value specified for actualWorkerSize. mtp.async.rdb.workers=[queueName]:[id]:[id],… Example: This node executes the tasks assigned to worker IDs 0 and 2 in the default queue and worker IDs 0, 2, and 4 in the entityupload queue. |
newProcessPerTask |
boolean |
Whether or not to run the worker in a new separate process. The default value is false. |
javaCommand |
String |
The Java command for starting a worker in a separate process. |
vmArgs |
String, Multiple |
VM arguments to pass to |
redirectFile |
String |
Indicate the file that is the standard output destination and standard error output destination of the process. |
Please specify org.iplass.mtp.impl.async.rdb.WorkerFactory to the class.
In standard, the following WorkerFactory are provided.
Please specify org.iplass.mtp.impl.async.rdb.DefaultWorkerFactory to the class.
It’s default WorkerFactory. There is no configurable items.
Please specify org.iplass.mtp.impl.micrometer.metrics.async.MetricsWorkerFactory to the class.
It’s WorkerFactory for collecting metrics. Make the worker that collects the number of successful/unsuccessful asynchronous execution, the number of timeout, execution time as metrics.
And it collects the metrics of worker running in the same process.
This is configurable when the Micrometer module is added to the dependency. There is no configurable items.
Example
<service>
<interface>org.iplass.mtp.impl.async.rdb.RdbQueueService</interface>
<!-- if use async rdb service set to true -->
<property name="useQueue" value="true" />
<property name="queue" class="org.iplass.mtp.impl.async.rdb.QueueConfig" additional="true">
<property name="id" value="2" />
<property name="name" value="customQueue" />
<property name="worker" class="org.iplass.mtp.impl.async.rdb.WorkerConfig">
<property name="pollingInterval" value="60000" />
<property name="actualWorkerSize" value="1" />
</property>
</property>
<property name="queue" class="org.iplass.mtp.impl.async.rdb.QueueConfig" additional="true">
<property name="id" value="3" />
<property name="name" value="customProcessWorkerQueue" />
<property name="worker" class="org.iplass.mtp.impl.async.rdb.WorkerConfig">
<property name="pollingInterval" value="60000" />
<property name="actualWorkerSize" value="1" />
<property name="newProcessPerTask" value="true" />
<property name="javaCommand" value="java" />
<property name="vmArgs" value="-cp" />
<property name="vmArgs" value="/build/classes/:/build/lib/*" />
<property name="vmArgs" value="-Dmtp.config=/worker-service-config.xml" />
</property>
</property>
</service>
3.58. RedisService
This service manages Redis.
Interface Name
org.iplass.mtp.impl.redis.RedisService
Implementing Class
org.iplass.mtp.impl.redis.RedisService
The settings of RedisService
RedisService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
redisServers |
RedisServer, Multiple |
The settings of the Redis server. |
The following items can be configured.
Item | Value | Description |
---|---|---|
serverName |
String |
The server name that is the identifier of the RedisServer. |
host |
String |
Host of the Redis server. |
port |
int |
Port number of the Redis server. Default value is 6379. |
timeout |
long |
Connection timeout. |
database |
int |
Database number. |
userName |
String |
User name. |
password |
String |
Password. |
ssl |
boolean |
Set to true for SSL communication. Default value is false. |
Example
<service>
<interface>org.iplass.mtp.impl.redis.RedisService</interface>
<property name="redisServers">
<property name="serverName" value="RedisServer-1" />
<property name="host" value="192.168.0.1" />
<property name="port" value="6379" />
</property>
<property name="redisServers">
<property name="serverName" value="RedisServer-2" />
<property name="host" value="192.168.0.2" />
<property name="port" value="6379" />
</property>
</service>
3.59. RelativeRangeService
This is a service for adding your own relative range in the search conditions of Aggregation and EntityListing.
Interface Name
org.iplass.mtp.impl.view.relativerange.RelativeRangeService
Implementing Class
org.iplass.mtp.impl.view.relativerange.RelativeRangeService
The settings of RelativeRangeService
RelativeRangeService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
relativeRanges |
RelativeRange, Multiple |
Setting custom relative ranges. |
Please specify org.iplass.mtp.view.relativerange.RelativeRange to the class.
A custom relative range. The following items can be set.
Item | Value | Description |
---|---|---|
relativeRangeName |
String |
Custom relative range name. |
displayLabel |
String |
display label. |
localizedDisplayLabel |
LocalizedDisplayLabel, Multiple |
Setting displayLabel for each language. |
converter |
String |
Conversion logic class. Specify the name of the class that implements the |
Please specify org.iplass.mtp.view.relativerange.LocalizedDisplayLabel to the class.
Custom relative ranges for each language. The following items can be set.
Item | Value | Description |
---|---|---|
locale |
String |
Locale. |
displayLabel |
String |
display label. |
Example
<service>
<interface>org.iplass.mtp.impl.view.relativerange.RelativeRangeService</interface>
<class>org.iplass.mtp.impl.view.relativerange.RelativeRangeService</class>
<!-- default custom relative range -->
<property name="relativeRanges" class="org.iplass.mtp.view.relativerange.RelativeRange">
<property name="relativeRangeName" value="firstHalfOfThisFiscalYear" />
<property name="displayLabel" value="今年度上期" />
<property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
<property name="locale" value="ja" />
<property name="displayLabel" value="今年度上期" />
</property>
<property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
<property name="locale" value="en" />
<property name="displayLabel" value="First half of this fiscal year" />
</property>
<property name="converter" class="sample.FirstHalfRelativeRangeConverter" />
</property>
<property name="relativeRanges" class="org.iplass.mtp.view.relativerange.RelativeRange">
<property name="relativeRangeName" value="secondHalfOfThisFiscalYear" />
<property name="displayLabel" value="今年度下期" />
<property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
<property name="locale" value="ja" />
<property name="displayLabel" value="今年度下期" />
</property>
<property name="localizedDisplayLabel" class="org.iplass.mtp.view.relativerange.LocalizedDisplayLabel">
<property name="locale" value="en" />
<property name="displayLabel" value="2nd half of this fiscal year" />
</property>
<property name="converter" class="sample.SecondHalfRelativeRangeConverter" />
</property>
</service>
3.60. ReportingEngineService
This service manages receipt reports output.
Interface Name
org.iplass.mtp.impl.report.ReportingEngineService
Implementing Class
org.iplass.mtp.impl.report.ReportingEngineServiceImpl
The settings of ReportingEngineService
ReportingEngineService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
reportingEngine |
ReportingEngine, Multiple |
The settings of the report generation engine. |
Please specify the implementing class of org.iplass.mtp.impl.report.ReportingEngine to the class to the class.
As the standard implementation, the following ReportingEngine are provided.
An engine for creating reports using Jasper Report.
Please specify org.iplass.mtp.impl.report.JasperReportingEngine to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
supportFiles |
String, Multiple |
Specify the type of the supporting files. |
An engine for creating forms using Apache POI.
Please specify org.iplass.mtp.impl.report.PoiReportingEngine to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
supportFiles |
String, Multiple |
Specify the type of the supporting files. |
An engine for creating forms using JXLS.
Please specify org.iplass.mtp.impl.report.JxlsReportingEngine to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
supportFiles |
String, Multiple |
Specify the type of the supporting files. |
Example
<service>
<interface>org.iplass.mtp.impl.report.ReportingEngineService</interface>
<class>org.iplass.mtp.impl.report.ReportingEngineServiceImpl</class>
<property name="repotingEngine" class="org.iplass.mtp.impl.report.JasperReportingEngine">
<property name="supportFiles" value="PDF"/>
<property name="supportFiles" value="XLS"/>
<property name="supportFiles" value="XLSX"/>
</property>
<property name="repotingEngine" class="org.iplass.mtp.impl.report.PoiReportingEngine">
<property name="supportFiles" value="XLS_POI"/>
<property name="supportFiles" value="XLSX_POI"/>
<property name="supportFiles" value="XLSX_SXSSF_POI"/>
</property>
<property name="repotingEngine" class="org.iplass.mtp.impl.report.JxlsReportingEngine">
<property name="supportFiles" value="XLS_JXLS"/>
<property name="supportFiles" value="XLSX_JXLS"/>
<property name="supportFiles" value="XLSX_SXSSF_JXLS"/>
</property>
</service>
3.61. SamlService
This service manages SAML authentication. When operating as an IdP, or when signing a message sent from the SP side to the IdP, the settings of the certificate storage is required.
Interface Name
org.iplass.mtp.impl.auth.authenticate.saml.SamlService
Implementing Class
org.iplass.mtp.impl.auth.authenticate.saml.SamlService
The settings of SamlService
To utilize SAML authentication, SamlService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
validateSchema |
boolean |
verify if the SAML message conforms to the XMLSchema definition. The default value is false. |
keyStore |
The settings of the certificate storage. |
|
setAddressToSubjectConfirmationData |
boolean |
Whether to include the Address in SubjectConfirmationData of Assertion. The default value is true. |
assertionLifetimeMinutes |
int |
Duration of the SAML assertion. Default value is 5 (minutes). |
allowedClockSkewMinutes |
int |
Allowable clock skew time. Default value is 5 (minutes). If iPLAss operates in SP mode, it is considered when verifying NotOnOrAfter in the SubjectConfirmationData. When iPLAss operates in IdP mode, the validity period of the SAML assertion (NotOnOrAfter of SubjectConfirmationData and NotBefore/NotOnOrAfter of Conditions) to be issued is extended by the clock skew time as follows:
|
When operating as an IdP, corresponding definition is required when signing SAML messages on the SP side (iPLAss side). Private key and certificate (entry and description below) are stored in KeyStore. Multiple entries can be registered. (To support multiple encryption algorithms and for certificate rollover)
Please specify org.iplass.mtp.impl.auth.authenticate.saml.SamlKeyStore to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
keyStoreType |
String |
KeyStore type. The default value is |
keyStoreFilePath |
String |
File path of KeyStore where entries for signature creation are stored. |
keyStorePassword |
String |
KeyStore password. |
keyPassword |
String |
The keyPassword of the private key. |
myCertificate |
String, Multiple |
The alias of the entry when you want to narrow down the entries used in the signature in the KeyStore. |
defaultSignatureAlgorithm |
String |
Set the default signature algorithm. The default value is |
keyStoreReloadIntervalDays |
int |
Reload interval (number of days) of keyStore file. If not specified, reload will never be performed. |
rollOverStrategy |
Rollover method when the validity period of a certificate is approaching.
The default value is |
|
rollOverDaysBeforeExpire |
long |
Number of days to switch when rollOverStrategy is |
Specify the rollover method when the validation period of the certificate is approaching. When multiple (new and old) certificates are found in KeyStore, this is the method to determine which one to use.
- OLDER
-
Use a certificate with a short validation period (NotAfter is old) until the validity period expires.
- NEWER
-
Use a certificate with a longer validation period (NotAfter is new).
- BEFORE_N_DAYS
-
switch to "rollOverDaysBeforeExpire" days before expiration
Example
<service>
<interface>org.iplass.mtp.impl.auth.authenticate.saml.SamlService</interface>
<property name="keyStore" class="org.iplass.mtp.impl.auth.authenticate.saml.SamlKeyStore">
<property name="keyStoreFilePath" value="/app/.keystore" />
<property name="keyStorePassword" value="yourOwnKeyStorePassword" />
<property name="keyPassword" value="yourOwnKeyPassword" />
<property name="keyStoreReloadIntervalDays" value="1" />
<property name="rollOverStrategy" value="BEFORE_N_DAYS" />
<property name="rollOverDaysBeforeExpire" value="5" />
</property>
</service>
3.62. ScheduleService
This service manages the definition (Metadata) of scheduled tasks.
Interface Name
org.iplass.mtp.impl.scheduling.ScheduleService
Implementing Class Name
org.iplass.mtp.impl.scheduling.ScheduleService
Settings of ScheduleService
ScheduleService is configurable.
Configurable Items
Item | Value | Description |
---|---|---|
systemUserId |
String |
Specify the user ID of the system, which will execute the scheduled task.
The default value is |
Example
<service>
<interface>org.iplass.mtp.impl.scheduling.ScheduleService</interface>
<class>org.iplass.mtp.impl.scheduling.ScheduleService</class>
<property name="systemUserId" value="id000001" />
</service>
3.63. ScriptService
A service that manages the execution of dynamic scripts.
Interface Name
org.iplass.mtp.impl.script.ScriptService
Implementing Class Name
org.iplass.mtp.impl.script.GroovyScriptService
Settings of ScriptService
The settings of ScriptService are listed below.
Configurable Items
Item | Value | Description |
---|---|---|
debug |
boolean |
Specify whether to log the script debug information. |
initScript |
String, Multiple |
The initial GroovyScript. |
staticImport |
String, Multiple |
Specify the method to import static GroovyScript. |
Example
<service>
<interface>org.iplass.mtp.impl.script.ScriptService</interface>
<class>org.iplass.mtp.impl.script.GroovyScriptService</class>
<property name="initScript" value="/org/iplass/mtp/impl/script/InitScript.gr" />
<property name="initScript" value="/org/iplass/mtp/impl/script/EnterpriseInitScript.gr" />
</service>
3.64. SecureRandomService
The service to manage the settings of random text array generations.
Interface Name
org.iplass.mtp.impl.util.random.SecureRandomService
Implementing Class Name
org.iplass.mtp.impl.util.random.SecureRandomService
Settings of SecureRandomService
The configurable items for SecureRandomService are listed below.
Configurable Items
Item | Value | Description |
---|---|---|
default |
Standard settings of SecureRandomGeneratorConfig 。 |
|
Any Text Array |
This is the settings of SecureRandomGeneratorConfig, which will be used to generate text array. For name, any name of SecureRandomGenerator can be specified. |
The Settings for random text generations.
Item | Value | Description |
---|---|---|
numBitsOfSecureRandomToken |
int |
The bit for random text array. The default is 128(bit). If encode has values set or radixOfSecureRandomToken has 64 set, It is processed in multiples of 8. |
radixOfSecureRandomToken |
int |
The base number for random text arrays. The default is 16. The available values are in the range of 2~36 and can also be 64. If encode has values set, the priority goes to encode. |
useStrongSecureRandom |
boolean |
Set whether to call SecureRandom.getInstanceStrong() for SecureRandom. The default is false. If algorithm has values set, the priority goes to algorithms. |
algorithm |
String |
The algorithms for SecureRandom generation. The default is unspecified. |
provider |
String |
The provider for SecureRandom generation. The default is unspecified. |
encode |
String |
The encode for SecureRandom generation. The default is unspecified. The available values are base32 and base64. |
Example
<service>
<interface>org.iplass.mtp.impl.util.random.SecureRandomService</interface>
<class>org.iplass.mtp.impl.util.random.SecureRandomService</class>
<property name="default">
<property name="numBitsOfSecureRandomToken" value="128" />
<property name="radixOfSecureRandomToken" value="16" />
<property name="useStrongSecureRandom" value="false" />
</property>
<property name="authTokenGenerator">
<property name="numBitsOfSecureRandomToken" value="192" />
<property name="radixOfSecureRandomToken" value="32" />
<property name="useStrongSecureRandom" value="false" />
</property>
</service>
3.65. SmsService
A service to manage SMS template definitions (metadata) and SMS transmissions. As an implementation of SMS transmission, a module for SMS transmission using Twilio is provided as the standard implementation.
Interface Name
org.iplass.mtp.impl.sms.SmsService
Implementing Class Name
org.iplass.mtp.impl.sms.twilio.TwilioSmsService
Settings of TwilioSmsService
When using SMS transmission with Twilio, it is required to set TwilioSmsService. At the time when obtaining Twilio contracts, "ACCOUNT SID" and "AUTH TOKEN" are required.
Configurable Items
Item | Value | Description |
---|---|---|
accountSid |
String, required |
ACCOUNT SID. |
authToken |
String, required |
AUTH TOKEN. |
region |
String |
Sets the region for the Twilio service. See here for possible values. |
edge |
String |
Sets the edge location for the Twilio service. See here for possible values. |
userAgentExtensions |
String, Multiple |
Extended User-Agent header settings for requests to Twilio services. |
defaultFrom |
String |
The default send-from tel number. |
httpClientConfig |
Settings of HTTP client. |
|
listener |
SendSmsMailListener, Multiple |
The listener for SMS Transmissions. |
Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class.
The following items can be configured.
Item | Value | Description |
---|---|---|
connectionTimeout |
int |
Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds). |
soTimeout |
int |
socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds). |
poolingMaxTotal |
int |
Maximum number of pools for http connections. The default value is 20. |
poolingDefaultMaxPerRoute |
int |
Maximum number of http connections per domain. The default value is 2. |
poolingTimeToLive |
int |
Lifetime of pooled http connections (milliseconds). The default is unlimited. |
proxyHost |
String |
Proxy server host. |
proxyPort |
int |
Proxy server port number. |
httpClientBuilderFactory |
Specify this if you want to create a custom HttpClientBuilder. |
Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.
The following HttpClientBuilderFactory is provided as standard.
Please specify the implementing class of org.iplass.mtp.sms.SendSmsMailListener.
As the standard implementation, the following SendSmsMailListener are provided.
Please specify org.iplass.mtp.impl.micrometer.metrics.sms.MetricsSendSmsMailListener to the class.
It’s SendSmsMailListener with the metric collection function by Micrometer. There are no settings that can be configured.
Example
<service>
<interface>org.iplass.mtp.impl.sms.SmsService</interface>
<class>org.iplass.mtp.impl.sms.twilio.TwilioSmsService</class>
<property name="accountSid" value="yourOwnAccountSid"/>
<property name="authToken" value="yourOwnAuthToken"/>
<property name="edge" value="tokyo"/>
<property name="defaultFrom" value="+1234......."/>
<!-- Development
<property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
<property name="connectionTimeout" value="30000" />
<property name="soTimeout" value="30000" />
<property name="proxyHost" value="proxyhost.dentsusoken.com" />
<property name="proxyPort" value="8080" />
</property>
-->
</service>
3.66. StorageSpaceService
Services of migration tools for StorageSpace.
Interface Name
org.iplass.mtp.impl.tools.storagespace.StorageSpaceService
Implementing Class
org.iplass.mtp.impl.tools.storagespace.StorageSpaceServiceImpl
The settings of StorageSpaceService
StorageSpaceService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
migrateCommitLimit |
int |
data commit batch size (number of cases) when migrating StorageSpace. |
cleanupCommitLimit |
int |
Migrated data cleanup batch size (number of cases) after the StorageSpace was fully migrated. |
Example
<service>
<interface>org.iplass.mtp.impl.tools.storagespace.StorageSpaceService</interface>
<class>org.iplass.mtp.impl.tools.storagespace.StorageSpaceServiceImpl</class>
<property name="migrateCommitLimit" value="100" />
<property name="cleanupCommitLimit" value="1000" />
</service>
3.67. StoreService
The service to configure how to save Entity data permanently.
Interface Name
org.iplass.mtp.impl.datastore.StoreService
Implementing Class Name
org.iplass.mtp.impl.datastore.StoreService
Settings of StoreService
The settings for StoreService are described below.
Configurable Items
Item | Value | Description |
---|---|---|
dataStore |
Settings of DataStore. |
Please specify the implementing class of org.iplass.mtp.impl.datastore.DataStore to the class.
The following DataStore are provided in standard.
Please specify org.iplass.mtp.impl.datastore.grdb.GRdbDataStore to the class. This is the DataStore for community edition.
The following items can be configured.
Item | Value | Description |
---|---|---|
storageSpace |
StorageSpaceMap, Multiple |
Settings of StorageSpace. |
Please specify org.iplass.mtp.impl.datastore.grdb.EnterpriseGRdbDataStore to the class. This is the DataStore for enterprise edition.
The following items can be configured.
Item | Value | Description |
---|---|---|
enableWindowFunctionEmulation |
boolean |
Whether to enable Windows function emulation. The default value is false |
storageSpace |
StorageSpaceMap, Multiple |
Settings of StorageSpace |
The following items can be configured.
Item | Value | Description |
---|---|---|
storageSpaceName |
String |
StorageSpace name displayed when selecting in Entity definition. |
tableNamePostfix |
String |
Suffix added to the table for StorageSpace.
Please use only alphanumeric characters.
Since |
varcharColumns |
int |
Number of columns to store string type properties. |
decimalColumns |
int |
Number of columns to store Decimal type properties. |
timestampColumns |
int |
Number of columns for storing Timestamp type properties. |
doubleColumns |
int |
Number of columns to store floating point properties. |
useExternalIndexedTable |
boolean |
Whether to use |
indexedVarcharColumns |
int |
Index Number of columns to store the specified string type property. |
indexedDecimalColumns |
int |
Index Number of columns to store the specified Decimal type property. |
indexedTimestampColumns |
int |
Index Number of columns to store the specified Timestamp type property. |
indexedDoubleColumns |
int |
Index Number of columns to store the specified floating-point type property. |
useExternalUniqueIndexedTable |
boolean |
Whether to use |
uniqueIndexedVarcharColumns |
int |
Unique Index Number of columns to store the specified string type property. |
uniqueIndexedDecimalColumns |
int |
Unique Index Number of columns to store the specified Decimal type property. |
uniqueIndexedTimestampColumns |
int |
Unique Index Number of columns to store the specified Timestamp type property. |
uniqueIndexedDoubleColumns |
int |
Unique Index Number of columns to store the specified floating point type property. |
varcharColumnLength |
int |
Set the length of the character string storage column. Used to determine if a LongText value can be stored inline. The default value is -1 (meaning undefined). |
customPartition |
boolean |
Whether to use a partition that is different from the standard partition when using Partition. The default value is false. |
tableCount |
int |
Set a value larger than 0 when you want to physically divide the storage table and performing pseudo partitioning (Not a database partitioning function, but a function that allows iPLAss to allocate physical tables by Entity definition). The default value is 0. |
tableAllocator |
TableAllocator settings, which allows you to set the allocation method for each physical table when pseudo-partitioning. The default value is HashingTableAllocator. |
When pseudo-partitioning, it is possible to set the allocation method to the physical table where Entity data is stored.
Please specify the implementing class of org.iplass.mtp.impl.datastore.grdb.TableAllocator to the class.
The following TableAllocator are provided in standard.
Please specify org.iplass.mtp.impl.datastore.grdb.tableallocators.HashingTableAllocator to the class. The physical table is determined by hashing from tenantId, and metaDataId, which is a unique key for each Entity definition.
The following items can be configured.
Item | Value | Description |
---|---|---|
useTenantId |
boolean |
True if tenantId is used when calculating the hash. Default value is true. |
useMetaDataId |
boolean |
True if metaDataId is used when calculating the hash. Default value is true. If both useTenantId and useMetaDataId are true, both will be used. |
Please specify org.iplass.mtp.impl.datastore.grdb.tableallocators.RoundRobinTableAllocator to the class. Allocate the physical table that has the least number of Entity definitions used in the same tenant among the physical tables that make up the pseudo partition. There are no configurable items.
Example
<service>
<interface>org.iplass.mtp.impl.datastore.StoreService</interface>
<property name="dataStore" class="org.iplass.mtp.impl.datastore.grdb.GRdbDataStore">
<property name="storageSpace" additional="true">
<property name="storageSpaceName" value="MyCustomSpace" />
<property name="tableNamePostfix" value="MCS" />
<property name="varcharColumns" value="128" />
<property name="decimalColumns" value="32" />
<property name="timestampColumns" value="32" />
<property name="doubleColumns" value="32" />
<property name="useExternalIndexedTable" value="true" />
<property name="indexedVarcharColumns" value="8" />
<property name="indexedDecimalColumns" value="4" />
<property name="indexedTimestampColumns" value="4" />
<property name="indexedDoubleColumns" value="4" />
<property name="useExternalUniqueIndexedTable" value="true" />
<property name="uniqueIndexedVarcharColumns" value="2" />
<property name="uniqueIndexedDecimalColumns" value="2" />
<property name="uniqueIndexedTimestampColumns" value="2" />
<property name="uniqueIndexedDoubleColumns" value="2" />
<property name="customPartition" value="false" />
</property>
</property>
</service>
3.68. SyntaxService
A service for syntax analysis.
Interface Name
org.iplass.mtp.impl.parser.SyntaxService
Implementing Class Name
org.iplass.mtp.impl.parser.SyntaxService
Settings of SyntaxService
SyntaxService can be configured in the following way.
Configurable Items
Item | Value | Description |
---|---|---|
syntaxRegister |
SyntaxRegister, Multiple |
SyntaxRegister Implementing Class Name。 |
Please specify the implementing class of org.iplass.mtp.impl.parser.SyntaxRegister.
org.iplass.mtp.impl.query.QuerySyntaxRegister is provided as a standard implementation. There is no configurable items for this setting options.
Example
<service final="true">
<interface>org.iplass.mtp.impl.parser.SyntaxService</interface>
<class>org.iplass.mtp.impl.parser.SyntaxService</class>
<property name="syntaxRegister" value="org.iplass.mtp.impl.query.QuerySyntaxRegister" />
</service>
3.69. TaskIdCounter
This is the service to assign task ID when using RdbQueueService.
Depending on the grouping settings of the task, the settings to be imported will change.
If no grouping is specified, use the settings of TaskIdCounter
. If specified, use the settings of TaskIdCounterGrouping
.
Interface Name
org.iplass.mtp.impl.counter.CounterService
Implementing Class Name
org.iplass.mtp.impl.counter.RdbTableCounterService
org.iplass.mtp.impl.counter.CachableRdbTableCounterService
Settings of RdbTableCounterService
The settings of RdbTableCounterService can be configured in the following way.
Configurable Items
Item | Value | Description |
---|---|---|
separateTransaction |
boolean |
Whether to separate transactions when counting. The default value is false. |
retryCount |
int |
Set the retry count when fail to count. The default is 3. |
counterTypeName |
String |
Specify the name of the counter type. the default is |
Settings of CachableRdbTableCounterService
CachableRdbTableCounterService can be configured in the following way.
Configurable Items
Item | Value | Description |
---|---|---|
separateTransaction |
boolean |
Whether to separate transactions when counting.The default value is false. |
retryCount |
int |
Set the retry count when fail to count. The default is 3. |
counterTypeName |
String |
Specify the name of the counter type. the default is |
cacheSize |
int |
Cache size. The default is 20.です。 |
Example
<service name="TaskIdCounter">
<interface>org.iplass.mtp.impl.counter.CounterService</interface>
<class>org.iplass.mtp.impl.counter.CachableRdbTableCounterService</class>
<property name="counterTypeName" value="TaskIdCounter" />
<property name="cacheSize" value="20" />
<property name="retryCount" value="3" />
</service>
<service name="TaskIdCounterGrouping">
<interface>org.iplass.mtp.impl.counter.CounterService</interface>
<class>org.iplass.mtp.impl.counter.RdbTableCounterService</class>
<property name="counterTypeName" value="TaskIdCounter" />
<property name="separateTransaction" value="true" />
<property name="retryCount" value="3" />
</service>
3.70. TenantAvailableService
This service manages the operating status of tenants.
Interface Name
org.iplass.mtp.impl.tenant.available.TenantAvailableService
Implementing Class
org.iplass.mtp.impl.tenant.available.TenantAvailableService
The settings of TenantAvailableService
TenantAvailableService can be configured with the following items.
Configurable Items
Item | Value | Description | ||
---|---|---|---|---|
allwaysAvailableAction |
String, Multiple |
Actions available during maintenance
|
||
alwaysAvailableAction |
String, Multiple |
Actions available during maintenance |
||
alwaysAvailableWebApi |
String, Multiple |
WebApi available during maintenance |
Example
<service>
<interface>org.iplass.mtp.impl.tenant.available.TenantAvailableService</interface>
<class>org.iplass.mtp.impl.tenant.available.TenantAvailableService</class>
<property name="alwaysAvailableAction" value="gem/auth/login" />
<property name="alwaysAvailableAction" value="gem/auth/dologin" />
<property name="alwaysAvailableAction" value="gem/auth/logout" />
<property name="alwaysAvailableAction" value="gem/auth/expiredpassword/update" />
<property name="alwaysAvailableAction" value="gem/auth/verify2nd" />
<property name="alwaysAvailableAction" value="mdc/auth/login" />
<property name="alwaysAvailableAction" value="mdc/auth/dologin" />
<property name="alwaysAvailableAction" value="mdc/auth/logout" />
<property name="alwaysAvailableAction" value="mdc/auth/expiredpassword/update" />
<property name="alwaysAvailableAction" value="mdc/auth/verify2nd" />
<property name="alwaysAvailableWebApi" value="gem/auth/verifycodegen" />
<property name="alwaysAvailableWebApi" value="mdc/auth/verifycodegen" />
</service>
3.71. TenantContextService
The service that affects all the tenants.
Interface Name
org.iplass.mtp.impl.core.TenantContextService
Implementing Class Name
org.iplass.mtp.impl.core.TenantContextService
Settings of TenantContextService
These settings take effects on all tenants.
Configurable Items
Item | Value | Description | ||
---|---|---|---|---|
defaultTenantName |
String |
Default tenant name. |
||
defaultPasswordPatternErrorMessage |
String |
Default password format error message. |
||
defaultMailFrom |
String |
Default email sending From address. Used when the From address is not specified in the tenant settings. |
||
defaultMailFromName |
String |
Default email sending From address personal name. |
||
sharedTenantId |
int |
Shared tenant ID. In the case of RDB, this tenant is used as a shared tenant. -1 works as if there is no shared tenant. The default value is -1. If the Entity definition is changed while the shared tenant is enabled, the corresponding data maintenance process will be executed in accompany with it. However, if the shared Entity definition is changed, maintenance process will be executed for the data of all tenants.
|
||
localTenantIds |
int, Multiple |
When shared tenant is enabled, it is possible to specify an specific tenant to perform data maintenance when updating the Entity definition. If it is not set, all tenants (excluding shared tenants) registered in the DB are regarded as individual tenants and data maintenance is performed on all of them. As explained in the description of sharedTenantId, when enabling a shared tenant, it is recommended to not to share the DB with other project systems, but it is possible to use this localTenantIds when it is difficult. When shared Entity definition is changed, it is possible to limit data maintenance processing to the specified tenant. |
Example
<service>
<interface>org.iplass.mtp.impl.core.TenantContextService</interface>
<property name="defaultTenantName" value="iPLAss" />
<property name="defaultMailFrom" value="notenant@nomail.iplass.org" />
<!-- ■ if use shared tenant, set shared tenant id.(value:-1 for no use of shared tenant) -->
<!--
<property name ="sharedTenantId" value="-1" />
-->
<!--
When a shared tenant is enabled, we can define specific tenants under that shared tenant.
If it is not defined, all tenants (excluding shared tenants) registered in the DB will operate as individual tenants.
-->
<!--
<property name ="localTenantIds" value="148" />
<property name ="localTenantIds" value="149" />
-->
</service>
3.72. TenantToolService
A service related to tenant management tools.
Interface Name
org.iplass.adminconsole.server.base.service.TenantToolService
Implementing Class
org.iplass.adminconsole.server.base.service.TenantToolService
The settings of TenantToolService
TenantToolService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
createProcesses |
TenantCreateProcess, Multiple |
Set the process to be executed when creating a tenant. |
tenantRdbManagerParameter |
Set parameters for tenant management functions by RDB. |
Pleas specify the implementing class of org.iplass.mtp.impl.tools.tenant.create.TenantCreateProcess to the class.
The following TenantCreateProcess is provided as our standard implementation.
Create an administrator user.
Please specify org.iplass.mtp.impl.tools.tenant.create.CreateAdminUserProcess to the class. There is no configurable items.
Create an empty tenant.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.BlankSkipProcess to the class. There is no configurable items.
Create the initial menu definition.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateMenuProcess to the class. There is no configurable items.
Create an initial TopView definition.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateTopViewProcess to the class. There is no configurable items.
Create administrator roles and permission data.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleProcess to the class. There is no configurable items.
Create Gem user role and permission data.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleProcess to the class. There is no configurable items.
Create authority data for EnterpriseEdition for administrator role.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleEEProcess to the class. There is no configurable items.
Create EnterpriseEdition permission data for Gem user role.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleEEProcess to the class. There is no configurable items.
Perform tenant creation completing process.
Pleas specify org.iplass.mtp.impl.tools.tenant.create.CreateCompleteProcess to the class. There is no configurable items.
Please specify org.iplass.mtp.impl.tools.tenant.rdb.TenantRdbManagerParameter to the class. The following items can be configured.
項目 | 値 | 説明 |
---|---|---|
deleteRows |
Integer |
Number of table records deleted when deleting tenants. Default value is |
Example
<service>
<interface>org.iplass.mtp.impl.tools.tenant.TenantToolService</interface>
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateAdminUserProcess" />
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.BlankSkipProcess" />
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateMenuProcess" />
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateTopViewProcess" />
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleProcess" />
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleProcess" />
<!-- for ee -->
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateAppAdminRoleEEProcess" />
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateGemUserRoleEEProcess" />
<property name="createProcesses" class="org.iplass.mtp.impl.tools.tenant.create.CreateCompleteProcess" />
<!-- TenartRdbManagerParameter -->
<property name="tenantRdbManagerParameter" class="org.iplass.mtp.impl.tools.tenant.rdb.TenantRdbManagerParameter">
<!-- Number of records deleted when deleting tenants. Default value is 10,000 -->
<!--
<property name="deleteRows" value="10000" />
-->
</property>
</service>
3.73. ValidationService
This is the service to perform input validation.
Interface Name
org.iplass.mtp.impl.validation.ValidationService
Implementing Class Name
org.iplass.mtp.impl.validation.ValidationService
ValidationService
The available settings for ValidationService are listed below.
Configurable Items
Item | Value | Description |
---|---|---|
beanValidation |
Set Bean Validation here. |
The settings of Bean Validation will be explained.
Please specify org.iplass.mtp.impl.validation.bean.BeanValidationConfig to the class. The following items can be specified.
Item | Value | Description |
---|---|---|
providerClass |
String |
jakarta.validation.spi.ValidationProvider’s implementing Class’s Name。 |
messageInterpolator |
set the MessageInterpolator here. |
|
properties |
Properties, Multiple |
The property specific to provider. |
Please specify the implementing class of jakarta.validation.MessageInterpolator to the class.
In standard, org.iplass.mtp.impl.validation.bean.TenantContextMessageInterpolator is provided. The following items can be specified.
Item | Value | Description |
---|---|---|
messageInterpolatorFactory |
MessageInterpolatorFactory’s implementing Class’s Name。 |
Please specify org.iplass.mtp.impl.validation.bean.MessageInterpolatorFactory to the class.
In standard, org.iplass.mtp.impl.validation.bean.hibernate.HibernateMessageInterpolatorFactory is provided. The following items can be specified.
Item | Value | Description |
---|---|---|
resourceBundleLocator |
ResourceBundleLocatorのImplementing Class Name。 |
|
cachingEnabled |
boolean |
Whether to enable Cache. |
Please specify org.hibernate.validator.spi.resourceloading.ResourceBundleLocator to the class.
In standard, org.iplass.mtp.impl.validation.bean.hibernate.MessageResourceBundleLocator. There is no configurable items for this configuration options.
Example
<service>
<interface>org.iplass.mtp.impl.validation.ValidationService</interface>
<class>org.iplass.mtp.impl.validation.ValidationService</class>
<property name="beanValidation">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
<property name="messageInterpolator" class="org.iplass.mtp.impl.validation.bean.TenantContextMessageInterpolator">
<property name="messageInterpolatorFactory" class="org.iplass.mtp.impl.validation.bean.hibernate.HibernateMessageInterpolatorFactory">
<property name="resourceBundleLocator" class="org.iplass.mtp.impl.validation.bean.hibernate.MessageResourceBundleLocator" />
<property name="cachingEnabled" null="true" />
</property>
</property>
</property>
</service>
3.74. WamService
This is the service to manage the members Web account.
Interface Name
org.iplass.wam.impl.WamService
Implementing Class
org.iplass.wam.impl.WamService
The settings of WamService
Wam can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
tokenManager |
The settings of TokenManager. By default the EntityTokenManager can be utilized. |
|
httpClientConfig |
The configs about HTTP clients. |
|
stickySessionCookieName |
String |
Sticky session’s cookie names. |
Please specify the implementing class of org.iplass.wam.api.siteauth.TokenManager to the class.
As standard implementation, the manager that issue the tokens managed in the cache: org.iplass.wam.impl.siteauth.CacheTokenManager; and the manager that issue the token managed by entity: org.iplass.wam.impl.siteauth.EntityTokenManager are provided. CacheTokenManager and EntityTokenManager do not have configurable items.
Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
proxyHost |
String |
Host name when using proxy. |
proxyPort |
int |
port when using proxy. |
connectionTimeout |
int |
Specify the timeout threshold in milliseconds when establishing an HTTP connection. The default value is 30000 (30 seconds). |
soTimeout |
int |
socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds). |
poolingMaxTotal |
int |
Maximum pool size for http connections. The default value is 20. |
poolingDefaultMaxPerRoute |
int |
Maximum number of http connections per domain. The default value is 2. |
poolingTimeToLive |
int |
Lifetime of pooled http connections (milliseconds). The default is "unlimited". |
httpClientBuilderFactory |
Specify this if you want to create a custom HttpClientBuilder. |
Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.
The following HttpClientBuilderFactory is provided as standard.
Example
<service>
<interface>org.iplass.wam.impl.WamService</interface>
<property name="tokenManager" class="org.iplass.wam.impl.siteauth.EntityTokenManager" />
<property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig">
<property name="proxyHost" value="proxyhost.dentsusoken.com"/>
<property name="proxyPort" value="8080"/>
</property>
<property name="stickySessionCookieName" value="AWSELB"/>
</service>
3.75. WebApiJAXBService
This is a service that defines the class to be converted from JAXB of WebApi.
Interface Name
org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService
Implementing Class
org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService
The settings of WebApiJaxbService
WebApiJaxbService can be configured with the following items.
Configurable Items
Item | Value | Description |
---|---|---|
classToBeBound |
String, Multiple |
Class to be converted by JAXB in WebApi response. |
Example
<service>
<interface>org.iplass.mtp.impl.webapi.jaxb.WebApiJaxbService</interface>
<property name="classToBeBound" value="org.iplass.mtp.impl.webapi.jaxb.Builtins" />
<!-- ee only classes -->
<property name="classToBeBound" value="org.iplass.mtp.impl.webapi.jaxb.EnterpriseDefinitions" />
<!--
<property name="classToBeBound" value="org.iplass.mtp.impl.csv.CsvUploadResult" />
-->
</service>
3.76. WebApiService
This service manages WebApi definitions (metadata).
Interface Name
org.iplass.mtp.impl.webapi.WebApiService
Implementing Class
org.iplass.mtp.impl.webapi.WebApiService
The settings of WebApiService
WebApi can be configured with the following items.
Configurable Items
Item | Value | Description | ||
---|---|---|---|---|
enableDefinitionApi |
boolean |
Set whether to publish the DefinitionWebApi. |
||
enableBinaryApi |
boolean |
Set whether to publish the BinaryWebApi. |
||
writeEncodedFilenameInBinaryApi |
boolean |
Specifies whether to output the |
||
unescapeFilenameCharacterInBinaryApi |
String |
Specifies the characters not to escape when outputting the |
||
acceptMimeTypesPatternInBinaryApi |
String |
Specifies the MIME Type pattern for files that can be uploaded during BinaryWebApi upload operations. The setting value specifies a regular expression pattern. Configuration example
See WebFrontendService uploadFileTypeDetector, FileTypeDetector for information on how to determine the MIME Type to be validated. |
||
statusMap |
StatusMap, Multiple |
Setting of the status code to be returned when corresponding exception occurs. |
||
xRequestedWithMap |
Map |
Set the to-be-checked items and comparable values when configuring X-Requested-With header in WebApi. |
||
cors |
This item will specify the trusted domain for XHR2(CORS). |
The following items are configurable.
Item | Value | Description |
---|---|---|
exception |
String |
Exception class anme |
status |
int |
Exception status code of the occurrence. |
The following items are configurable.
Item | Value | Description |
---|---|---|
allowOrigin |
String, Multiple |
The domain allowing the access. |
allowCredentials |
boolean |
Specify whether to permit the system to credential the authentication information (such as Cookie). The default is false. |
Example
<service>
<interface>org.iplass.mtp.impl.webapi.WebApiService</interface>
<property name="enableDefinitionApi" value="false" />
<property name="enableBinaryApi" value="false" />
<property name="writeEncodedFilenameInBinaryApi" value="false" />
<property name="unescapeFilenameCharacterInBinaryApi" value="-._~" />
<!-- Binary file upload acceptable MIME Type pattern. Specify a regular expression. -->
<!-- Configuration example
<property name="acceptMimeTypesPatternInBinaryApi" value="^(image/.*|application/pdf|text/csv)$" />
-->
<property name="xRequestedWithMap">
<property name="X-Requested-With" value="XMLHttpRequest" />
</property>
<property name="statusMap">
<property name="exception" value="org.iplass.mtp.auth.NoPermissionException" />
<property name="status" value="403" />
</property>
<property name="statusMap">
<property name="exception" value="org.iplass.mtp.auth.NeedTrustedAuthenticationException" />
<property name="status" value="403" />
</property>
<property name="statusMap">
<property name="exception" value="org.iplass.mtp.tenant.available.UnavailableException" />
<property name="status" value="503" />
</property>
<property name="statusMap">
<property name="exception" value="org.iplass.mtp.ApplicationException" />
<property name="status" value="500" />
</property>
<property name="statusMap">
<property name="exception" value="org.iplass.mtp.SystemException" />
<property name="status" value="500" />
</property>
</service>
3.77. WebFrontendService
A service that manages the overall performance of the Web applications.
Interface Name
org.iplass.mtp.impl.web.WebFrontendService
Implementing Class
org.iplass.mtp.impl.web.WebFrontendService
The settings of WebFrontendService
The common performance of the web application can be configured with the following items.
Configurable Items
Item | Value | Description | ||
---|---|---|---|---|
defaultContentType |
String |
Specify the ContentType to use when the Template’s Content Disposition Type is set to Default.
If not defined, the default value will be |
||
defaultClientCacheType |
String |
Action’s Default client cache.
Set
|
||
defaultCacheControlType |
String |
WebAPI’s Default cache control setting.
Set
|
||
staticContentPath |
String |
The root path that stores the static content. If not specified, the application context path (servletContextPath) will be used. Normally, you can leave it unspecified. |
||
excludePath |
String, Multiple |
Paths to resources that are not managed by iPLAss. Specify with regular expression. The servletContextPath shell not be included in the specified path pattern. In the case of a path that matches, iPLAss (DispatcherFilter) will not perform any operation (tenant confirmation, permission check, execution of Action / WebApi definition, etc.), and it will call doFilter() in the subsequent FilterChain process. Only the static content path, the path of the servlet of your own implementation, etc. shell be specified. |
||
acceptPath |
String, Multiple |
Resource path accepted by iPLAss. Specify with regular expression. The tenantContextPath shell not be included in the specified path pattern. If this acceptPath is not specified, all resource paths that do not match excludePath will be processed by iPLAss. If this acceptPath is specified, the request path does not match acceptPath, will have a HTTP status 404 returned. Normally, it can be left unspecified, but it can be very useful when you want to limit the Action/WebApi executed for each server. It can also be used in combination with the rejectPath described below. |
||
rejectPath |
String, Multiple |
The path of the resource that should be denied by iPLAss. Specify with regular expression. The tenantContextPath shell not be included in the specified path pattern. If rejectPath is not specified, all resource paths that do not match excludePath will be processed by iPLAss. Normally, it can be left unspecified, but it can be useful when you want to limit the Action / WebApi executed for each server. It can be specified in combination with acceptPath. If acceptPath is not specified: If the path matches rejectPath, HTTP status 404 is returned. If acceptPath is specified: If the path does not match acceptPath or matches rejectPath, HTTP status 404 is returned. |
||
throughPath |
String, Multiple |
Specify the resource path that will not be mapped to Actions / WebApi definitions. Specify with regular expression. The tenantContextPath shell not be included in the specified path pattern. If the path matches throughPath path, iPLAss (DispatcherFilter) will perform the tenant confirmation process, but will not call Action / WebApi defined in iPLAss and will call doFilter() in the subsequent FilterChain. |
||
restPath |
String |
Setting the path of the WebApi. In iPLAss, the resource paths starting with the string specified in restPath are processed as WebApi. The string segment after restPath will be perceived as WebApi name. |
||
requestRestriction |
RequestRestriction, Multiple |
The user can define the restriction on the HTTP Requests.(i.e. the maximum request body size, the allowed HTTP Methods etc.) |
||
errorUrlSelector |
ErrorUrlSelector that displays error page. |
|||
loginUrlSelector |
LonginUrlSelector that displays the login page. |
|||
logoutUrl |
String |
URL to kick when logging out. |
||
contentDispositionPolicy |
ContentDispositionPolicy, Multiple |
ContentDisposition output settings. |
||
tempFileDir |
String |
Temporary file storage path. When not specified, "jakarta.servlet.context.tempdir" is used. |
||
maxUploadFileSize |
long |
Declare the size limit when uploading the files. If -1 is specified, there is no upper limit. When not specified, it will be set to -1. |
||
uploadFileScanner |
The setting to execute virus scan. |
|||
uploadFileTypeDetector |
Ability to detect the MIME Type (media type) of uploaded files. |
|||
isExecMagicByteCheck |
boolean |
Set whether to perform a magic byte check on the uploaded file. |
||
magicByteChecker |
The magic byte check setting of file upload. |
|||
directAccessPort |
String |
Direct access port. For this port, the tenant urlForRequest specification is invalid. |
||
transactionTokenMaxSize |
int |
Transaction token retention limit. |
||
welcomeAction |
String, Multiple |
If the action part of the requested URL is "/", the action to be executed instead. |
||
redirectAfterLogin |
boolean |
Whether to redirect after login for actions accessed without login. When performing a redirect, the action must allow the GET method. |
||
tenantAsDomain |
boolean |
Resolves the tenant from the FQDN specified in |
||
fixedTenant |
String |
Treats the set value as a single fixed tenant. |
||
mdc |
String or MdcValueResolver, in format of Map |
Configure the value to be set in the MDC of slf4j. Specify the key name of MDC for key, the following String for value, or the class that implements MdcValueResolver.
|
||
maxMultipartParameterCount |
long |
Sets the maximum number of parameters to be limited for multipart requests such as file uploads. Requests exceeding the parameter limit will be rejected. If you do not want to limit the number of parameters, set -1. The default value is 10,000. |
Please specify org.iplass.mtp.impl.web.RequestRestriction for class.
The following items can be configured.
Item | Value | Description |
---|---|---|
pathPattern |
String |
Specifies the regular expression for the path to which the constraint is applied. The tenantContextPath is not included in the specified path pattern. Only one RequestRestriction that does not specify pathPattern can be defined. It is possible to define a default constraint to be applied when it does not match the pathPattern of other RequestRestriction definitions. |
allowMethods |
String, Multiple |
Specify the allowed HTTP Method.
If set to |
allowContentTypes |
String, Multiple |
Specify the allowed ContentType of the requests.
If set to |
maxBodySize |
long |
Specify the maximum size of the body contents. If set to -1, it means there is no size limit. If not specified, the default value is -1. |
maxFileSize |
long |
Specify the max size of the upload files.If set to -1, it means there is no size limit. If not specified, the default value is -1. |
cors |
Specify the trusted domain for XHR2(CORS). |
|
force |
boolean |
Declare which one to use in prioritize, When there is specific configurations from Action definition and WebApi definition. If true, this config (the settings of RequestRestriction) will be prioritized. If false, the specific configurations from Action definition and WebApi definition will be prioritized. If not specified, the default value is false. |
The following items can be configured.
Item | Value | Description |
---|---|---|
allowOrigin |
String, Multiple |
Specify the allowed domain of accesses. Wildcards can be specified, such as |
allowCredentials |
boolean |
Specify whether to permit the system to credential the authentication information (such as Cookie). The default is false. |
Please specify the implementing class of org.iplass.mtp.impl.web.ErrorUrlSelector to the class.
The following ErrorUrlSelector is provided as standard.
-
org.iplass.gem.GemErrorUrlSelector
-
org.iplass.gem.EnterpriseGemErrorUrlSelector
-
org.iplass.mtp.mdc.MdcErrorUrlSelector
GemErrorUrlSelector and EnterpriseGemErrorUrlSelector and MdcErrorUrlSelector do not have configurable items.
Please specify org.iplass.mtp.impl.web.CompositeErrorUrlSelector to the class.
ErrorUrlSelector that can switch ErrorUrlSelector by path. The following items can be set.
Item | Value | Description |
---|---|---|
selectorMap |
ErrorUrlSelector, in format of Map |
Specify the request path to be processed in Key and the |
Please specify the implementing class of org.iplass.mtp.impl.web.LoginUrlSelector to the class.
The following ErrorUrlSelector is provided as standard.
-
org.iplass.gem.GemLoginUrlSelector
-
org.iplass.mtp.mdc.MdcLoginUrlSelector
GemLoginUrlSelector and MdcLoginUrlSelector do not have configurable items.
Please specify the implementing class of org.iplass.mtp.impl.web.ContentDispositionPolicy to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
userAgentKey |
String |
UserAgent identifier(* by default)。 |
contentDispositionTypeName |
String |
ContentDispositionType name(* means all)。 |
unescapeCharacter |
String |
Non-escaped characters (Alphabet, numbers are escaped unconditionally). |
defaultContentDispositionTypeName |
String |
Set the default ContentDispositionType name when nothing specified. |
useBothFilenameAttributes |
boolean |
Sets whether to output both |
Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.FileScanner to the class.
As the standard implementation, the class org.iplass.mtp.impl.web.fileupload.DefaultVirusScanner that will scan for virus is provided. For DefaultVirusScanner, the following items can be configured.
Item | Value | Description |
---|---|---|
commandPath |
String, Required |
Specify the path of the virus scan command.
The file path of the scan objects are stored in the container specified by |
timeout |
long, Required |
Set the timeout (seconds) timer for virus scan. |
errorOnTimeout |
boolean |
Whether to interrupt the process as an error when a timeout occurs. The default value is false. |
successExitValue |
int, Multiple |
Exit code (status) indicating that the scan completed successfully. If specified, if the relevant exit code (status) is not returned, the process will be interrupted as an error. |
Please specify the class that implements org.iplass.mtp.impl.web.fileupload.FileTypeDetector.
The following FileTypeDetector is provided as a standard feature.
-
org.iplass.mtp.impl.web.fileupload.DefaultFileTypeDetector
-
This is the standard FileTypeDetector; the MIME Type (media type) is the value sent by the browser.
-
There is no DefaultFileTypeDetector setting item.
-
-
org.iplass.mtp.impl.web.fileupload.TikaFileTypeDetector
-
This is a FileTypeDetector using Apache Tika. The MIME Type (media type) is determined by verifying the uploaded file with the Tika function.
-
For TikaFileTypeDetector, the following items can be configured.
Item | Value | Description |
---|---|---|
fileUploadTikaAdapter |
FileUploadTikaAdapter, Required |
An adapter that resolves the Tika dependency used by the file upload function. |
Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapter to the class.
org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapterImpl as the standard adapter implementation.
It is recommended to share Tika instances to avoid inconsistencies due to differences in Tika settings for MediaType(MimeType) that can be extracted by TikaFileTypeDetector and file types that can be inspected by TikaMagicByteChecker.
To share an instance, bean-define an implementation class for the FileUploadTikaAdapter interface and reference it in the TikaFileTypeDetector and TikaMagicByteChecker properties.
For FileUploadTikaAdapterImpl, the following items can be configured.
Item | Value | Description |
---|---|---|
tikaConfigXml |
String |
Specify the Apache Tika configuration file (tika-config.xml) to be used by the file upload function. Specify the Mime type definition file (tika-mimetypes.xml) within the Apache Tika configuration file to use customized definitions. Please check official site for how to define the configuration files tika-config.xml and tika-mimetypes.xml. |
Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.MagicByteChecker to the class.
The following MagicByteChecker is provided as a standard feature.
-
org.iplass.mtp.impl.web.fileupload.DefaultMagicByteChecker
-
It is provided as a standard implementation of MagicByteChecker. If the rule that match the condition (mine type and extension) is specified, it checks if magic byte that is defined in that rule match.
-
-
org.iplass.mtp.impl.web.fileupload.TikaMagicByteChecker
-
MagicByteChecker is an Apache Tika-based MagicByteChecker that extracts definition information from Apache Tika’s Mime type configuration (tika-mimetypes.xml) and performs extension and magic byte checking.
-
When using TikaMagicByteChecker, it is recommended that FileTypeDetector be set to TikaFileTypeDetector.
-
For DefaultMagicByteChecker, the following items can be configured.
Item | Value | Description |
---|---|---|
magicByteRule |
MagicByteRule, Multiple |
The rule to check magic bytes. |
Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.MagicByteRule to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
mimeType |
Mime type condition |
|
extension |
Extension condition |
|
magicByte |
String, Multiple |
Specify the beginning of magic byte to compare. |
Please specify the implementing class of org.iplass.mtp.impl.web.fileupload.MagicByteRuleCondition to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
useRegex |
boolean |
Set whether to use regular expressions for conditional comparison. If true, it checks the value of pattern as a regular expression pattern. If false, it compares the value of pattern as a string. The default value is false. |
pattern |
String, Required |
The pattern value of the condition |
For TikaMagicByteChecker, the following items can be configured.
Item | Value | Description |
---|---|---|
fileUploadTikaAdapter |
FileUploadTikaAdapter, Required |
An adapter that resolves the Tika dependency used by the file upload function. |
checkExtension |
boolean |
Check setting if the extension of the uploaded file is included in the extensions defined for the Tika Mime type. The default setting is to check (true). |
readMagicLength |
int |
Byte length to be read during magic byte check. Default setting is 65,536. |
throwExceptionIfMimeTypeIsNull |
boolean |
If the Tika Mime type cannot be found, a check error is made. The default setting is not to check for errors (false). |
throwExceptionIfFileCannotRead |
boolean |
If the target file cannot be read during the magic byte check, a check error is generated. The default setting is not to check for errors (false). |
substitutionMediaType |
in format of Map |
If a specific Mime type is used for the magic byte check, it is replaced with another Mime type. name attribute is the Mime type to be substituted, and value attribute is the Mime type after the substitute. As a specific example, "application/vnd.apple.keynote.13" cannot detect the Mime type and cannot perform the magic byte check. To perform the magic byte check, it must be changed to "application/vnd.apple.keynote". |
Please specify the implementing class of org.iplass.mtp.impl.web.mdc.MdcValueResolver.
The following MdcValueResolver is provided as standard.
Please specify org.iplass.mtp.impl.web.mdc.UuidMdcValueResolver for class.
An MdcValueResolver that generates a UUID. The following items can be configured.
Item | Value | Description |
---|---|---|
secure |
boolean |
Whether to use SecureRandom to generate UUID. The default value is true. If false, ID can be generated at high speed, but it will be based on pseudo-random numbers. |
In the setting of WebFrontendService to mdc, in String,
Specifying generateUuid
sets the UuidMdcValueResolver with secure=true.
Specifying generateInsecureUuid
sets the UuidMdcValueResolver with secure=false.
Please specify org.iplass.mtp.impl.web.mdc.RemoteHostMdcValueResolver for class.
Get the value of remoteHost from ServletRequest.
In the setting of WebFrontendService to mdc, in String,
RemoteHostMdcValueResolver is set by specifying remoteHost
.
Please specify org.iplass.mtp.impl.web.mdc.RemoteAddrMdcValueResolver for class.
Get the value of remoteAddr from ServletRequest.
In the setting of WebFrontendService to mdc, in String,
RemoteAddrMdcValueResolver is set by specifying remoteAddr
.
Please specify org.iplass.mtp.impl.web.mdc.HttpHeaderMdcValueResolver for class.
Get the value of the HTTP header from ServletRequest. The following items can be configured.
Item | Value | Description |
---|---|---|
headerName |
String |
HTTP header name to get. |
In the setting of WebFrontendService to mdc, in String,
HttpHeaderMdcValueResolver with headerName=[headerName] is set by specifying in the format header.[headerName]
.
Please specify org.iplass.mtp.impl.web.mdc.SessionIdMdcValueResolver for class.
Set the ID of the session already created at the start of the request.
In the setting of WebFrontendService to mdc, in String,
SessionIdMdcValueResolver is set by specifying sessionId
.
Please specify org.iplass.mtp.impl.aws.web.mdc.AmznTraceIdMdcValueResolver for class.
AWS SDK for Java 1.x is in maintenance mode and will be discontinued in December 2025. |
Gets the specific field value of the X-Amzn-Trace-Id value set in the HTTP header. The following items can be configured.
Item | Value | Description |
---|---|---|
field |
String |
The field name to get. Specify Root or Self. |
Please specify org.iplass.mtp.impl.web.mdc.awsv2.AmznTraceIdMdcValueResolver for class.
Gets the specific field value of the X-Amzn-Trace-Id value set in the HTTP header. The following items can be configured.
Item | Value | Description |
---|---|---|
field |
String |
The field name to get. Specify Root or Self. |
Example
<service>
<interface>org.iplass.mtp.impl.web.WebFrontendService</interface>
<class>org.iplass.mtp.impl.web.WebFrontendService</class>
<!-- welcome file(action) -->
<property name="welcomeAction" value="index" />
<property name="transactionTokenMaxSize" value="50" />
<property name="defaultClientCacheType" value="CACHE" />
<!-- Definition of paths that are not processed by DispatcherFilter -->
<!-- static contents -->
<property name="excludePath" value="(/errorhtml/.*)|(/images/.*)|(/scripts/.*)|(/styles/.*)|(/favicon.ico)|(/webjars/.*)" />
<!-- servlet implementation -->
<property name="excludePath" value="(/checkStatus)|(/cmcs)" />
<!-- permit only the gem module -->
<property name="acceptPath" value="/gem/.*" />
<property name="acceptPath" value="/api/gem/.*" />
<!-- WebApi (REST) path's definition -->
<property name="restPath" value="/api/" />
<!-- The default RequestRestriction Definition -->
<property name="requestRestriction">
<property name="allowMethods" value="*" />
<property name="allowContentTypes" value="*/*" />
<property name="force" value="false" />
</property>
<!-- The RequestRestriction definition under api/sample(WebApi)-->
<property name="requestRestriction">
<property name="pathPattern" value="^/api/sample/.*" />
<property name="allowMethods" value="GET" />
<property name="allowMethods" value="POST" />
<property name="allowContentTypes" value="*/*" />
<property name="cors">
<!-- Allow CORS from https://sample.iplass.org、https://sample2.iplass.org -->
<property name="allowOrigin" value="https://sample.iplass.org" />
<property name="allowOrigin" value="https://sample2.iplass.org" />
<property name="allowCredentials" value="true" />
</property>
<property name="force" value="false" />
</property>
<!-- URL to kick at logout -->
<property name="logoutUrl" value="logout" />
<!-- The settings of the error pages -->
<property name="errorUrlSelector" class="org.iplass.gem.GemErrorUrlSelector" />
<!-- The settings of the login pages -->
<property name="loginUrlSelector" class="org.iplass.gem.GemLoginUrlSelector" />
<!-- Set the temporary file storage path. If not specified, "jakarta.servlet.context.tempdir" will be used. -->
<!--
<property name="tempFileDir" value="/tmp" />
-->
<!-- Direct access port Tenant urlForRequest specification is invalid for this port -->
<!--
<property name="directAccessPort" value="8080" />
-->
<!-- When the Web client DEBUG mode is specified, the error details are displayed when the error occurs in a WebApi access. -->
<!--
<property name="clientMode" value="DEBUG" />
-->
<!-- Configurations about ContentDisposition output -->
<!-- default -->
<property name="contentDispositionPolicy" class="org.iplass.mtp.impl.web.ContentDispositionPolicy">
<property name="userAgentKey" value="*" />
<property name="contentDispositionTypeName" value="*" />
<property name="unescapeCharacter" value="-._~" />
<property name="defaultContentDispositionTypeName" value="ATTACHMENT" />
<property name="useBothFilenameAttributes" value="false" />
</property>
<!-- IE11 -->
<!-- For IE11, INLINE, it will not escape blanks-->
<property name="contentDispositionPolicy" class="org.iplass.mtp.impl.web.ContentDispositionPolicy">
<property name="userAgentKey" value="Trident" />
<property name="contentDispositionTypeName" value="INLINE" />
<property name="unescapeCharacter" value="-._~ " />
<property name="useBothFilenameAttributes" value="false" />
<!--
<property name="defaultContentDispositionTypeName" value="" />
-->
</property>
<!--
When adding, specify the character that is not escaped for each userAgentKey and contentDispositionTypeName.
contentDispositionTypeName: * | ATTACHMENT | INLINE
unescapeCharacter: The characters to exclude besides letters and numbers
-->
<!--
<property name="contentDispositionPolicy" class="org.iplass.mtp.impl.web.ContentDispositionPolicy">
<property name="userAgentKey" value="XXXX" />
<property name="contentDispositionTypeName" value="INLINE" />
<property name="unescapeCharacter" value="-._~" />
</property>
-->
<!-- Virus scan execution -->
<property name="uploadFileScanner" class="org.iplass.mtp.impl.web.fileupload.DefaultVirusScanner" >
<property name="commandPath" value="path/to/virusScanner ${file}" />
<property name="timeout" value="15" />
</property>
<!--
Tika adapter for FileUpload function.
Assumes that the instance is shared by TikaFileTypeDetector and TikaMagicByteChecker.
If tikaConfigXml is not specified, the default configuration of apache tika will work.
-->
<!--
<bean name="tikaAdapter" class="org.iplass.mtp.impl.web.fileupload.FileUploadTikaAdapterImpl">
<property name="tikaConfigXml" value="/tika-config.xml" />
</bean>
-->
<!-- File type (MIME Type/Media Type) detection function -->
<!-- Default. The following instances are also set if unspecified. -->
<!--
<property name="uploadFileTypeDetector" class="org.iplass.mtp.impl.web.fileupload.DefaultFileTypeDetector" />
-->
<!-- File type (MIME Type/Media Type) detection using Apache Tika. Enabling bean tikaAdapter. -->
<!--
<property name="uploadFileTypeDetector" class="org.iplass.mtp.impl.web.fileupload.TikaFileTypeDetector">
<property name="fileUploadTikaAdapter" ref="tikaAdapter" />
</property>
-->
<!-- Whether to execute MagicByteCheck -->
<property name="isExecMagicByteCheck" value="true" />
<!-- MagicByteCheck execution -->
<property name="magicByteChecker" class="org.iplass.mtp.impl.web.fileupload.DefaultMagicByteChecker" >
<property name="magicByteRule" >
<property name="mimeType" >
<property name="pattern" value="image/gif" />
</property>
<property name="magicByte" value="474946383761" />
<property name="magicByte" value="474946383961" />
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="pattern" value="image/bmp" />
</property>
<property name="magicByte" value="424d" />
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="pattern" value="image/jpeg" />
</property>
<property name="magicByte" value="ffd8" />
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="pattern" value="image/png" />
</property>
<property name="magicByte" value="89504e470d0a1a0a" />
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="pattern" value="application/x-shockwave-flash" />
</property>
<property name="magicByte" value="465753" />
<property name="magicByte" value="435753" />
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="pattern" value="application/pdf" />
</property>
<property name="magicByte" value="25504446" />
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="useRegex" value="true" />
<property name="pattern" value="^application/vnd[.]ms-.*|^application/msword.*" />
</property>
<property name="extension" class="org.iplass.mtp.impl.web.fileupload.MagicByteRuleCondition" >
<property name="pattern" value="csv" />
</property>
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="useRegex" value="true" />
<property name="pattern" value="^application/vnd[.]ms-.*|^application/msword.*" />
</property>
<property name="magicByte" value="504b030414000600" />
<property name="magicByte" value="d0cf11e0a1b11ae1" />
<property name="magicByte" value="7b5c72746631" />
</property>
<property name="magicByteRule" >
<property name="extension" >
<property name="pattern" value="xls" />
</property>
<property name="magicByte" value="d0cf11e0a1b11ae1" />
</property>
<property name="magicByteRule" >
<property name="mimeType" >
<property name="useRegex" value="true" />
<property name="pattern" value="^application/vnd[.]openxmlformats-officedocument.*" />
</property>
<property name="magicByte" value="504b030414000600" />
<property name="magicByte" value="d0cf11e0a1b11ae1" />
<property name="magicByte" value="504b030414000808" />
<property name="magicByte" value="504B03040A000000" />
<property name="magicByte" value="504B030414000000" />
</property>
</property>
<!--
MagicByteCheck processing using Apache Tika. bean tikaAdapter is enabled.
When using this check function, it is recommended to use Tika for MimeType detection and MagicByteCheck processing.
To use tika for MimeType detection, change property uploadFileTypeDetector to TikaFileTypeDetector.
-->
<!--
<property name="magicByteChecker" class="org.iplass.mtp.impl.web.fileupload.TikaMagicByteChecker" >
<property name="fileUploadTikaAdapter" ref="tikaAdapter" />
<property name="checkExtension" value="true" />
<property name="readMagicLength" value="65536" />
<property name="throwExceptionIfMimeTypeIsNull" value="false" />
<property name="throwExceptionIfFileCannotRead" value="false" />
<property name="substitutionMediaType">
<property name="application/vnd.apple.keynote.13" value="application/vnd.apple.keynote" />
</property>
</property>
-->
<!-- Configurations about MDC -->
<property name="mdc">
<property name="traceId" class="org.iplass.mtp.impl.web.mdc.awsv2.AmznTraceIdMdcValueResolver">
<property name="field" value="Root" />
</property>
<property name="ipaddress" value="remoteAddr" />
<property name="ua" value="header.User-Agent" />
</property>
</service>
3.78. WebhookService
This is the service to manage the ebhookTemplate definitions(Metadata) and the corresponding Webhook behaviors.
Interface Name
org.iplass.mtp.impl.webhook.WebhookService
Implementing Class Name
org.iplass.mtp.impl.webhook.WebhookServiceImpl
Configurations of WebhookService
To utilize Webhook, it is required to configure the WebhookService
Configurable Items
Item | Value | Description |
---|---|---|
retry |
boolean |
Indicate whether to retry the connection when failed. |
retryMaximumAttempts |
int |
(When retrying)Indicate the maximum retry limit. |
retryInterval |
int |
(When retrying)Indicate the time interval between each retry attempts. |
hmacHashAlgorithm |
String |
The hash algorithm used to generate HMAC key. If not specified, "HmacSHA256" will be used in default. |
hmacDefaultHeaderName |
String |
The default header to store the HMAC key. If not specified, "X-IPLASS-HMAC" will be used. If the header name is customized in WebhookTemplate definition, the customized name will be used in priority. |
httpClientConfig |
Config about the HTTP connection when sending Webhook. |
Please specify org.iplass.mtp.impl.http.HttpClientConfig to the class. The following items can be configured.
Item | Value | Description |
---|---|---|
connectionTimeout |
int |
Timeout in milliseconds for establishing an HTTP connection. The default value is 30000 (30 seconds). |
soTimeout |
int |
socket timeout (SO_TIMEOUT) (milliseconds) during HTTP communication. The default value is 30000 (30 seconds). |
poolingMaxTotal |
int |
Maximum number of pools for http connections. The default value is 20. |
poolingDefaultMaxPerRoute |
int |
Maximum number of http connections per domain. The default value is 2. |
poolingTimeToLive |
int |
Lifetime of pooled http connections (milliseconds). The default is unlimited. |
proxyHost |
String |
Proxy server host. |
proxyPort |
int |
Proxy server port number. |
httpClientBuilderFactory |
Specify this if you want to create a custom HttpClientBuilder. |
Please specify the implementation class of org.iplass.mtp.impl.http.HttpClientBuilderFactory to the class.
The following HttpClientBuilderFactory is provided as standard.
Example
<!-- Webhook -->
<service>
<interface>org.iplass.mtp.impl.webhook.WebhookService</interface>
<class>org.iplass.mtp.impl.webhook.WebhookServiceImpl</class>
<property name="retry" value="true" />
<property name="retryMaximumAttempts" value="10" />
<property name="retryInterval" value="500" />
<property name="hmacHashAlgorithm" value="HmacSHA256" />
<property name="hmacDefaultHeaderName" value="X-IPLASS-HMAC" />
<!-- <property name="httpClientConfig" class="org.iplass.mtp.impl.http.HttpClientConfig"> -->
<!-- <property name="proxyHost" value="localhost" /> -->
<!-- <property name="proxyPort" value="8080" /> -->
<!-- <property name="poolingMaxTotal" value="20" /> -->
<!-- <property name="poolingDefaultMaxPerRoute" value="20" /> -->
<!-- <property name="poolingTimeToLive" value="50000" /> -->
<!-- </property> -->
</service>
<!-- WebhookEndpoint -->
<service>
<interface>org.iplass.mtp.impl.webhook.endpoint.WebhookEndpointService</interface>
<class>org.iplass.mtp.impl.webhook.endpoint.WebhookEndpointServiceImpl</class>
</service>
3.79. WorkflowService
This is the service to manage the performance of the workflow.
Interface Name
org.iplass.mtp.impl.workflow.WorkflowService
Implementing Class Name
org.iplass.mtp.impl.workflow.WorkflowService
Settings of WorkflowService
This is the configuration of WorkflowService.
Configurable Items
Item | Value | Description |
---|---|---|
workflowInstanceStore |
The method to manage workflow instance. |
|
historyLogStore |
The method to manage workflow’s history log |
|
queueForWorkflow |
String |
Set the queue name for the workflow. |
Please specify the implementing class of org.iplass.mtp.impl.workflow.WorkflowInstanceStore to the class.
In standard, org.iplass.mtp.impl.workflow.store.EntityWorkflowInstanceStore are provided. The workflow instance will be managed as a entity. There is no configurable items for this configuration options.
Please specify the implementing class of org.iplass.mtp.impl.workflow.HistoryLogStore to the class.
In standard, the following HistoryLogStore ar provided.
The history of workflow will be managed as logs.
Please specify org.iplass.mtp.impl.workflow.store.LoggerHistoryLogStore to the class. There is no configurable items for this configuration options.
The history of workflow will be managed as Entity.
Please specify org.iplass.mtp.impl.workflow.store.EntityHistoryLogStore to the class. There is no configurable items for this configuration options.
Example
<service final="true">
<interface>org.iplass.mtp.impl.workflow.WorkflowService</interface>
<class>org.iplass.mtp.impl.workflow.WorkflowService</class>
<property name="workflowInstanceStore" class="org.iplass.mtp.impl.workflow.store.EntityWorkflowInstanceStore" />
<property name="historyLogStore" class="org.iplass.mtp.impl.workflow.store.EntityHistoryLogStore" />
</service>
4. Log(Slf4j/Logback)
iPLAss is utilizing Slf4j/Logback to satisfy the needs of log output.
4.1. Logger Name
iPLAss outputs the following logs as standard. If necessary, specify the log logger name to be output to the log file etc. in logback.xml.
-
Logs for Events
Logger Name Output Content mtp.audit
Logs related to data operations.
mtp.audit.admin
Logs related to AdminConsole operations. Output for file download operations (
mtp.audit.admin.download
) and AuditLog data maintenance operations (mtp.audit.admin.auditlog
).mtp.audit.download
Logs related to file download operations.
mtp.audit.porting.entity
Logs related to entity operations.
mtp.audit.porting.metadata
Logs related to metadata operations.
mtp.audit.porting.pack
Logs related to package operations.
-
Logs for Authentication
Logger Name Output Content mtp.auth
Logs related to authentication related events.
-
Execution Logs
Logger Name Output Content mtp.action
Execution log for the call to Action. Outputs execution time, query execution count, error description, etc.
mtp.webapi
Execution log for the call to Web API. Outputs execution time, query execution count, error description, etc.
mtp.async
Execution log for asynchronous execution. Outputs execution time, error description, etc.
-
Logs for Fatal Errors
Logger Name Output Content mtp.fatal
Logs about fatal errors.
mtp.fatal.cube
Logs of errors that occurred in the Cube functions.
mtp.fatal.async
Logs of errors that occurred during asynchronous executions.
mtp.fatal.async.rdb
Write Logs when asynchronous execution get interrupted or exceeds the number of retries.
mtp.fatal.async.rdb.processworker
Logs of errors that occurred during asynchronous executions.
mtp.fatal.asynctask
Write Logs when the execution of asynchronous tasks get interrupted.
mtp.fatal.mail
Logs of errors that occurred during email transmissions.
mtp.fatal.cluster
Logs of errors that occurred during inter-cluster communications.
mtp.fatal.classloader
Log of errors that occurred in GroovyScript ClassLoader.
-
Logs for GroovyScript
Logger Name Output Content mtp.script.out
Log is output by println() method of variable binding of "out".
-
Logs for SQL
Logger Name Output Content org.iplass.mtp.impl.rdb.connection
Logs of SQL execution time and warning.
4.2. diagnostic context
In iPLAss, the following information is logged by the diagnostic context (MDC).
Key Name | Log Format | Output Values |
---|---|---|
taskId |
%X{taskId} |
TaskID |
user |
%X{user} |
User(Client ID) |
tenant |
%X{tenant} |
Tenant ID |
tenantName |
%X{tenantName} |
Tenant Name |
action |
%X{action} |
Action Name |
command |
%X{command} |
Command Name |
webapi |
%X{webapi} |
WebApi Name |
traceId |
%X{traceId} |
When applying iplass-ee-aws module, output Root of X-Amzn-Trace-Id. |
impersonatedUser |
%X{impersonatedUser} |
Impersonated User |
infinispanRequestId |
%X{infinispanRequestId} |
Available when iplass-infinispan or iplass-ee-infinispan module is applied. |
4.3. filter
In the context of iPLAss, org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter
is provided. By enabling this TurboFilter, it is possible to modify the log output conditions dynamically corresponding to each tenant.
<configuration>
<turboFilter class="org.iplass.mtp.impl.logging.logback.LogConditionTurboFilter" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %X{tenant} %X{user} %X{command} %X{taskId} %logger{36} - %replace(%msg){'\r|\n', ' '}%n</pattern>
</encoder>
</appender>
:
:
<logger name="org.iplass" level="INFO">
<appender-ref ref="STDOUT" />
</logger>
<logger name="mtp" level="INFO">
<appender-ref ref="STDOUT" />
</logger>
<root level="OFF" />
</configuration>
4.4. Structured Logging
Logs can be output in JSON format using the Logstash Logback Encoder. Action/WebAPI execution time, number of queries issued, etc. are also output as attributes.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
:
:
<logger name="org.iplass" level="INFO">
<appender-ref ref="STDOUT" />
</logger>
<logger name="mtp" level="INFO">
<appender-ref ref="STDOUT" />
</logger>
<root level="OFF" />
</configuration>