1. 動作環境
1.1. iPLAss framework
Java |
Oracle Java 8 |
Webサーバ |
Apache HTTP Server 2.4 推奨 |
APサーバ |
Tomcat 8.5以上(Servlet 3.1、JSP 2.3以上を実装するWebServer) |
DBサーバ |
Oracle 11gR2以上※1、MySQL 5.7以上、PostgreSQL 9.6以上、SQL Server 2012以上※2、Amazon Aurora※3 |
- ※1
-
バージョンは11.2.0.3.0以上を推奨します。
- ※2
-
SQL Serverでは以下の制限があります。
-
バージョン管理機能は使用できません。
-
EQLのLOCALTIME関数は使用できません。
-
行値式をサポートしていないためEQLにおいても行値式は使用できません。
-
- ※3
-
Aurora利用の際はMySQL純正のJDBCドライバを利用してください。
対応ブラウザ
Chrome、Internet Explorer 11、Safari、Firefox、Edge
1.2. Web Account Manager plugin module
Apache版 |
Apache HTTP Server 2.4 |
IIS版 |
IIS 8.5以上 |
JavaEE版 |
Tomcat 8.5以上(Servlet 3.1、JSP 2.3以上を実装するWebServer) |
2. DB、テーブル作成に関する情報
iPLAssのDB及びテーブルの作成手順についてはiPLAss SDKをダウンロードし、同梱されているサーバセットアップキット(iplass-server-setup-kit)のreadme_setup.txtを参照ください。
トランザクション分離レベルは「READ COMMITTED」である必要があります。
2.1. Oracle
-
データベースキャラクターセットは「AL32UTF8」を使用して下さい。
2.2. MySQL
-
データベースの文字コードは「utf8mb4」を使用して下さい。
-
データベースの照合順序は「utf8mb4_bin」を推奨します。
- 照合順序について
-
大文字、小文字を区別する場合は、「utf8mb4_bin」
大文字、小文字を区別しない場合は、「utf8mb4_general_ci」
2.3. PostgreSQL
-
データベースの文字セット符号化方式は「UTF8」を使用して下さい。
2.4. SQL Server
-
データベースの照合順序は「Japanese_Unicode_CI_AS_KS_WS」を使用して下さい。
3. 環境構築する際の注意事項
3.1. DBサーバ関連
疑似パーティション
MySQLを除く、パーティションが利用できないDBサーバを使用している場合、疑似パーティショニングを利用することができます。
擬似パーティションを利用する場合は、疑似テーブルを作成しservice-config.xmlに以下の設定をする事で対応が可能となります。
疑似テーブルとして作成する対象は、保存先変更対象テーブル一覧を参照ください。
<service>
<interface>org.iplass.mtp.impl.datastore.StoreService</interface>
<property name="dataStore" class="org.iplass.mtp.impl.datastore.grdb.GRdbDataStore">
<property name="storageSpace">
<property name="tableCount" value="3" /> (1)
<property name="storageSpaceName" value="default" />
<property name="varcharColumns" value="128" />
:
</property>
</property>
</service>
- ■命名規約
-
テーブル名称+__+インクリメント数値
例:tableCountが3の場合OBJ_STORE、OBJ_STORE__1、OBJ_STORE__2
の形で「保存先変更対象テーブル一覧」に定義されているテーブルをコピーしてください。
保存先テーブル変更
iPLAssでは、Entityは全て同一のテーブルに登録されます。特定のEntityのみデータ量が多いといった場合、そのEntityのみ別の物理テーブルへ登録する事が出来ます。
保存先テーブルを変更する場合は、保存先となるテーブルを作成し、service-config.xmlに以下の設定をする事で対応が可能となります。
保存先テーブルとして作成する対象テーブルは、保存先変更対象テーブル一覧を参照ください。
<service>
<interface>org.iplass.mtp.impl.datastore.StoreService</interface>
<property name="dataStore" class="org.iplass.mtp.impl.datastore.grdb.GRdbDataStore">
<property name="storageSpace"> (1)
<property name="storageSpaceName" value="securespace" />
<property name="tableNamePostfix" value="S" />
<property name="varcharColumns" value="128" />
:
</property>
<property name="storageSpace"> (2)
<property name="storageSpaceName" value="fast" />
<property name="tableNamePostfix" value="FAST" />
<property name="varcharColumns" value="128" />
:
</property>
:
</property>
</service>
- ■命名規約
-
テーブル名称+__+tableNamePostfixの値
例:tableNamePostfixが「S」の場合OBJ_STORE__S
保存先変更対象テーブル一覧
No | テーブル名称 |
---|---|
1 |
OBJ_STORE |
2 |
OBJ_STORE_RB |
3 |
OBJ_REF |
4 |
OBJ_REF_RB |
5 |
OBJ_INDEX_DATE |
6 |
OBJ_INDEX_DBL |
7 |
OBJ_INDEX_NUM |
8 |
OBJ_INDEX_STR |
9 |
OBJ_INDEX_TS |
10 |
OBJ_UNIQUE_DATE |
11 |
OBJ_UNIQUE_DBL |
12 |
OBJ_UNIQUE_NUM |
13 |
OBJ_UNIQUE_STR |
14 |
OBJ_UNIQUE_TS |
ロックタイムアウト設定
行ロックのタイムアウト時間を設定します。iPLAssのデフォルト設定では0(NOWAIT)となっています。
- ■Oracleの場合
-
ロックタイムアウト時間を変更したい場合は、service-config.xmlの以下の設定を0以上に変更してください。
<service> <interface>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interface> <property name="adapter" class="org.iplass.mtp.impl.rdb.oracle.OracleRdbAdapter"> <property name="lockTimeout" value="0" /> </property> </service>
- ■MySQLの場合
-
MySQLにはロックタイムアウト時間をDB単位で設定しているため、Oracleの「select for update nowait」のようなロック取得直後にエラーとするような処理が存在しません。
- ■PostgreSQLの場合
-
ロックタイムアウト時間を変更したい場合は、service-config.xmlの以下の設定を0以上に変更してください。 PostgreSQLではロックタイムアウトの待機時間指定は出来ません。0以上を設定するとロック出来るまで待ち続けます。
<service> <interface>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interface> <property name="adapter" class="org.iplass.mtp.impl.rdb.postgresql.PostgreSQLRdbAdapter"> <property name="lockTimeout" value="0" /> </property> </service>
- ■SQL Serverの場合
-
ロックタイムアウト時間を変更したい場合は、service-config.xmlの以下の設定を0以上に変更してください。
<service> <interface>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interface> <property name="adapter" class="org.iplass.mtp.impl.rdb.sqlserver.SqlServerRdbAdapter"> <property name="lockTimeout" value="0" /> </property> </service>
Oracle固有設定
-
LIKE句のワイルドカードについて
11.2.0.3.0よりLIKE句のワイルドカードの仕様が変更になっています。
上記バージョンより、全角の%、_がワイルドカードではなくなり、通常の文字となっています。
この差異を吸収するため、OracleRdbAdapterにescapeFullwidthWildcardフラグを用意しています。
デフォルトはfalse(11.2.0.3.0以上で正しく動作する設定)です。
11.2.0.2.0を利用する場合は、このフラグをtrueに設定するようにしてください。<service> <interface>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interface> <property name="adapter" class="org.iplass.mtp.impl.rdb.oracle.OracleRdbAdapter"> <property name="escapeFullwidthWildcard" value="true" /> </property> </service>
MySQL固有設定
-
ストレージエンジン:InnoDB、ファイルフォーマット:Barracuda(with innodb_large_prefix)の利用が前提
- ストレージエンジン
-
InnoDB
- ファイルフォーマット
-
Barracuda
を利用し、innodb_large_prefixが有効化されていることが必要です。
-
文字コードは「utf8mb4」を標準使用
但し、こちらの文字コードを使用する事により以下の制約が発生します。
-
EntityのStringプロパティで「Unique Index」「Index」を指定した場合、MySQLの利用文字コードによって対象とできる値サイズに制約が発生します。
-
utf8mb4の場合、StringProperty値に255文字を超える値が設定されている場合は更新時にエラーになります。
オプションファイル(my.ini/cnf)文字コードの指定は次の形となります。
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4
-
-
LOBデータの保存先設定
MySQLでは、LOBデータはファイルシステムに格納されるため保存先の設定が必要になります。<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="D:\tmp\fileLobStore" /> </property> </service>
-
GTIDの利用
グループレプリケーションで必要となるGTIDを利用する場合、テンポラリテーブルに関する設定の変更が必要になります。
iPLAssの標準ではテンポラリテーブルの作成及び削除はトランザクション内で行っていますが、GTIDを利用した場合トランザクション内でテンポラリテーブルの作成及び削除が出来ません。 そのため、iPLAssではテンポラリテーブルの作成及び削除をトランザクション外で行う又はデータソース側で行うためのオプションを用意しています。- ■トランザクション外で行う場合
-
<service> <interfaceName>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interfaceName> <property name="adapter" className="org.iplass.mtp.impl.rdb.mysql.MysqlRdbAdaptor"> <property name="localTemporaryTableManageOutsideTransaction" value="true" /> </property> </service>
- ■データソース側で行う場合
-
<service> <interfaceName>org.iplass.mtp.impl.rdb.adapter.RdbAdapterService</interfaceName> <property name="adapter" className="org.iplass.mtp.impl.rdb.mysql.MysqlRdbAdaptor"> <property name="localTemporaryTableCreatedByDataSource" value="true" /> </property> </service>
データソースに次のSQL文を実行するよう設定してください。
CREATE TEMPORARY TABLE `obj_store_tmp` (`obj_id` VARCHAR(64) NOT NULL, `obj_ver` BIGINT(10) DEFAULT 0 NOT NULL) ENGINE = MEMORY;
-
タイムゾーンの指定
Connector/J 8.0ではタイムゾーンの指定が必要です。 指定の仕方には次の3つの方法があります。-
MySQL設定ファイルによる指定(推奨)
- 指定例
-
[mysqld] default-time-zone='Asia/Tokyo'
-
環境変数「TZ」による指定
- 指定例
-
TZ=JST-9
-
JDBCパラメータ「serverTimezone」による指定
- 指定例
-
jdbc:mysql://<mysqlserver>:3306/mtdb?serverTimezone=JST
-
-
タイムゾーンデータのインポート
指定したタイムゾーンのタイムゾーンデータがインポートされている必要があります。
PostgreSQL固有設定
-
LOBデータの保存先設定
PostgreSQLでは、LOBデータはファイルシステムに格納されるため保存先の設定が必要になります。<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="D:\tmp\fileLobStore" /> </property> </service>
3.2. APサーバ関連
DB接続
-
コネクションプール接続設定
コネクションプール接続の設定は、service-config.xmlに以下の設定を行ってください。<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/XXXXX" /> </service>
※XXXXXはデータソース名を設定
TomcatのContext.xmlに上記のデータソースの設定をしておく必要があります。
Webクライアント情報
-
Webクライアント情報のJavaServlet環境へバイパス設定
APサーバの前段にHTTPサーバなどのProxyが存在する場合、Webクライアント情報がJavaServlet環境へバイパスする設定をします。iPLAssでは、
ServletRequest#getRemoteAddr()
ServletRequest#isSecure()を利用しているため、最低限これらの情報をバイパス設定する必要があります。
Tomcatの場合、
org.apache.catalina.valves.RemoteIpValve
を利用することにより、バイパス設定を行います。
また、isSecureについては、すべての接続をHTTPSで受ける(そしてそれが前段のロードバランサでSSL terminationしている)場合は、Connecterの設定にて設定することも可能です。
静的コンテンツ
-
静的コンテンツのルートパス設定
Apacheなどのプロキシサーバの設定により、WebApplicaton名(=war名)を別名でマッピングする場合、設定を変更してください。 設定しない場合、servletContextPathが静的コンテンツのルートパスとなります。<service> <interface>org.iplass.mtp.impl.web.WebFrontendService</interface> <class>org.iplass.mtp.impl.web.WebFrontendService</class> <property name="staticContentPath" value="/static" /> </service>
ファイルアップロード
-
ファイルアップロードの一時ファイル格納先
ファイルアップロード時に一時ファイルとして作成される格納先を変更する事が可能です。<service> <interface>org.iplass.mtp.impl.web.WebFrontendService</interface> <class>org.iplass.mtp.impl.web.WebFrontendService</class> <property name="tempFileDir" value="/tmp" /> </service>
上記の設定を行わない場合、Servlet仕様で規定される、"javax.servlet.context.tempdir"を利用するため、意図しない場所に作成される可能性があるので注意してください。
-
アップロードファイルの最大サイズ制限
アップロードされるファイルの最大サイズに制限をかけることが可能です。service-config.xmlに設定する事でアップロードファイルの最大サイズが設定可能です。
<service> <interface>org.iplass.mtp.impl.web.WebFrontendService</interface> <class>org.iplass.mtp.impl.web.WebFrontendService</class> <property name="maxUploadFileSize" value="10000" /> </service>
-
アップロードファイルのマジックバイトチェック
マジックバイトチェック(ファイルの拡張子とファイル中身が一致しているか否か)を行わずに登録したい場合、以下の設定をfalseにする事で可能となります。
(ファイルの作成方法によっては、正常なファイルにも関わらずこのチェックでエラーとなる事があるため)<service> <interface>org.iplass.mtp.impl.web.WebFrontendService</interface> <class>org.iplass.mtp.impl.web.WebFrontendService</class> <property name="isExecMagicByteCheck" value="false" /> </service>
LOB保存先
-
LOB保存先の設定
Binary型及びLongText型のデータは、ファイル形式とDBのLOB形式の2つの保存方式を選択することができます。
保存方式を変更したい場合は、以下の設定を変更してください。ファイル形式で保存の場合は、org.iplass.mtp.impl.lob.lobstore.file.FileLobStoreを指定
DBのLOB形式で保存の場合は、org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStoreを指定<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="D:\tmp\fileLobStore" /> </property> <property name="longTextStore" class="org.iplass.mtp.impl.lob.lobstore.rdb.RdbLobStore"> </property> </service>
この設定では、Binary型のデータを「D:\tmp\fileLobStore」フォルダ下にファイル形式で保存、LongText型のデータをDBにLOB形式で保存します。
クラスタ構成
-
冗長構成のクラスタ設定
1号機で変更した情報(メモリ上に格納しているメタデータなど)は、通常では2号機へ変更が反映されません。
以下の設定を行うことで、片側の変更データをもう片方へ反映する事が可能となります。<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://1号機のHOST名/mtp/cmcs" /> <property name="serverUrl" value="http://2号機のHOST名/mtp/cmcs" /> <property name="certKey" value="yourOwnCertKey" /> <property name="connectionTimeout" value="300000" /> <property name="soTimeout" value="300000" /> <property name="proxyHost" value="proxy.xxx.xxx" /> <property name="proxyPort" value="8080" /> </property> </service>
※1号機、2号機同様に設定します。(1号機、2号機のHOST名を設定していますが、自身のサーバ名を取得し反映処理を起動させないためどちらも同じ設定が可能)
※「yourOwnCertKey」は、hash値などを設定します。(1号機、2号機で同じ値の設定が必要) -
非同期送信スレッドのプール数
クラスタ通信にHttpMessageChannelを利用する場合の非同期送信のためのスレッドプールの設定を行います。
プール数は実際のサーバ数×2程度の値が目安です。<service name="AsyncTaskServiceForHttpMessageChannel"> <interface>org.iplass.mtp.impl.async.AsyncTaskService</interface> <property name="corePoolSize" value="4" /> <property name="threadPoolType" value="fixed" /> </service>
3.3. Webサーバ関連
クリックジャッキング対策
-
X-Frame-Optionsヘッダを設定する場合は「SAMEORIGIN」ディレクティブを指定
iPLAssではiframeを利用しているため、クリックジャッキング対策としてX-Frame-Optionsヘッダを設定する場合は「SAMEORIGIN」ディレクティブを指定してください。
3.4. バッチ関連
事前準備
-
依存ライブラリのコピー
Gradleの「copyRuntimeLibs」タスクを実行してバッチの実行に必要なライブラリを「lib」ディレクトリにコピーします。gradlew copyRuntimeLibs
DB接続設定
-
バッチで利用するDB接続先の設定
バッチで利用するDB接続先の設定が行われている必要があります。<service> <interface>org.iplass.mtp.impl.rdb.connection.ConnectionFactory</interface> <class>org.iplass.mtp.impl.rdb.connection.DriverManagerConnectionFactory</class> <property name="url" value="XXXXXXXXXX" /> <property name="user" value="XXXXX" /> <property name="password" value="XXXXX" /> <property name="driver" value="XXXXXXXX" /> </service>
環境定義設定
-
tool_env.shまたはtool_env.batの設定
tool_env.shまたはtool_env.bat内の以下の変数に適切な値が設定されている必要があります。SERVICE_CONFIG_NAME
MTP_RESOURCE_PATH
4. Enterprise Editionへのアップグレード
Enterprise Editionにアップグレードする場合、ライブラリの差し替えとテーブルの追加が必要です。
ライブラリとテーブルDDLは有償版のSDKに同梱されています。
4.1. ライブラリの差し替え
Community Editionの下記ライブラリをEnterprise Editionの相応するライブラリで差し替えます。
Community Edition | Enterprise Edition |
---|---|
iplass-core |
iplass-ee-core |
iplass-gem |
iplass-ee-gem |
iplass-web |
iplass-ee-web |
iplass-admin |
iplass-ee-admin |
iplass-tools |
iplass-ee-tools |
iplass-tools-batch |
iplass-ee-tools-batch |
4.2. テーブルの追加
有償版のSDK同梱されている下記DDLを実行し、テーブルを作成します。
-
audit_log.sql
-
sys_stats.sql
-
t_available.sql