Liferay 7 / DXPでのMySQL / MariaDB + HikariCPの接続方法

## Tomcat バンドルにて、Connection poolにHikariCP (Liferay DXPの標準)、MySQLを接続する手順
Liferay 7 / DXPでは標準でコネクションプールライブラリ、HikariCPを利用しています。以下はMySQLに接続するのに、最新のデータベースコネクタとコネクションプールライブラリを適用して接続する設定方法になります。

## MySQLの場合
### JNDI名、コネクションプールライブラリの設定
`portal-ext.properties`に以下を追加

```properties:portal-ext.properties
setup.database.jar.url[com.mysql.jdbc.Driver]=http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.45/mysql-connector-java-5.1.45.jar
setup.liferay.pool.provider.jar.name[hikaricp]=hikaricp.jar
setup.liferay.pool.provider.jar.url[hikaricp]=http://central.maven.org/maven2/com/zaxxer/HikariCP/2.7.4/HikariCP-2.7.4.jar
jdbc.default.jndi.name=jdbc/LiferayPool
jdbc.default.liferay.pool.provider=hikaricp
```

### ROOT.xmlの設定サンプル
`<Context>`タグの間に、以下のリソースを記述。

`[server-url-is-here]`の部分には自分の利用しているDBのアドレスを記述してください。
`[your-DB-name-is-here]`の部分に、MySQL内に作成したデータベース名を記述してください。
`dataSource.user`、`dataSource.password`はお使いの環境のものを設定してください。

LiferayのDevelopment Checklistに従い、最大接続数は以下の設定だと75になっていますが、使用環境に合わせて変更してください。またデータベースコネクション数に連動して、スレッドプール数も変更する必要があります。一般的にデータベースプールサイズは、スレッドプールサイズの30%から40%程度なので、この際のスレッドプールは250程度が設定されている前提となります。

```xml:tomcat-8.0.32/conf/Catalina/localhost/ROOT.xml
<Resource
    auth="Container"
    type="javax.sql.DataSource"
    name="jdbc/LiferayPool"
    factory="com.zaxxer.hikari.HikariJNDIFactory"
    dataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
    driverClass="com.mysql.jdbc.Driver"
    idleMaxAgeInMinutes="15"
    idleConnectionTestPeriodInMinutes="10"
    partitionCount="3"
    acquireIncrement="5"
    maxConnectionsPerPartition="25"
    minConnectionsPerPartition="4"
    statementsCacheSize="50"
    dataSource.url="jdbc:mysql://[server-url-is-here]:3306/[your-DB-name-is-here]?useUnicode=true&amp;characterEncoding=UTF-8&amp;useFastDateParsing=false&amp;useSSL=false"
    dataSource.user="root"
    dataSource.password="password"
    jdbcUrl="jdbc:mysql://[server-url-is-here]:3306/[your-DB-name-is-here]?useUnicode=true&amp;characterEncoding=UTF-8&amp;useFastDateParsing=false&amp;useSSL=false"/>
```

## MariaDBの場合
### JNDI名、コネクションプールライブラリの設定
`portal-ext.properties`に以下を追加

```properties:portal-ext.properties
setup.database.jar.name[org.mariadb.jdbc.Driver]=mariadb.jar
setup.database.jar.url[org.mariadb.jdbc.Driver]=https://downloads.mariadb.com/Connectors/java/connector-java-2.2.0/mariadb-java-client-2.2.0.jar
setup.liferay.pool.provider.jar.name[hikaricp]=hikaricp.jar
setup.liferay.pool.provider.jar.url[hikaricp]=http://central.maven.org/maven2/com/zaxxer/HikariCP/2.7.4/HikariCP-2.7.4.jar
jdbc.default.jndi.name=jdbc/LiferayPool
jdbc.default.liferay.pool.provider=hikaricp
```

mariadb.jarが`${tomcat_home}/lib/ext`に展開されない場合、手動でダウンロードして、`mariadb.jar`にリネームして配置。

### ROOT.xmlの設定サンプル
MySQLの時と同様、`<Context>`タグの間に、以下のリソースを記述。

`[server-url-is-here]`の部分には自分の利用しているDBのアドレスを記述してください。
`[your-DB-name-is-here]`の部分に、MySQL内に作成したデータベース名を記述してください。
`dataSource.user`、`dataSource.password`はお使いの環境のものを設定してください。

```xml:tomcat-8.0.32/conf/Catalina/localhost/ROOT.xml
<Resource
    auth="Container"
    type="javax.sql.DataSource"
    name="jdbc/LiferayPool"
    factory="com.zaxxer.hikari.HikariJNDIFactory"
    dataSourceClassName="org.mariadb.jdbc.MySQLDataSource"
    driverClass="org.mariadb.jdbc.Driver"
    idleMaxAgeInMinutes="15"
    idleConnectionTestPeriodInMinutes="10"
    partitionCount="3"
    acquireIncrement="5"
    maxConnectionsPerPartition="25"
    minConnectionsPerPartition="4"
    statementsCacheSize="50"
    jdbcUrl="jdbc:mariadb://[server-url-is-here]:3306/[your-DB-name-is-here]?useUnicode=true&amp;characterEncoding=UTF-8&amp;useFastDateParsing=false&amp;useSSL=false"
    dataSource.url="jdbc:mariadb://[server-url-is-here]:3306/[your-DB-name-is-here]?useUnicode=true&amp;characterEncoding=UTF-8&amp;useFastDateParsing=false&amp;useSSL=false"
    dataSource.user="root"
    dataSource.password="mariadb"
    />
```

### ライフレイを起動
Mac / *nixは`tomcat-8.0.32/bin/startup.sh`で、Windowsの場合は`tomcat-8.0.32/bin/startup.bat`でLiferayを起動。