Tomcat バンドルにて、Connection poolにHikariCP (Liferay DXPの標準)、MySQLを接続する手順
Liferay 7 / DXPでは標準でコネクションプールライブラリ、HikariCPを利用しています。以下はMySQLに接続するのに、最新のデータベースコネクタとコネクションプールライブラリを適用して接続する設定方法になります。
MySQLの場合
JNDI名、コネクションプールライブラリの設定
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程度が設定されている前提となります。
<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&characterEncoding=UTF-8&useFastDateParsing=false&useSSL=false"
dataSource.user="root"
dataSource.password="password"
jdbcUrl="jdbc:mysql://[server-url-is-here]:3306/[your-DB-name-is-here]?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false&useSSL=false"/>
MariaDBの場合
JNDI名、コネクションプールライブラリの設定
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
はお使いの環境のものを設定してください。
<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&characterEncoding=UTF-8&useFastDateParsing=false&useSSL=false"
dataSource.url="jdbc:mariadb://[server-url-is-here]:3306/[your-DB-name-is-here]?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false&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を起動。