LoginSignup
1

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-11

Tomcat バンドルにて、Connection poolにHikariCP (Liferay DXPの標準)、MySQLを接続する手順

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

MySQLの場合

JNDI名、コネクションプールライブラリの設定

portal-ext.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.userdataSource.passwordはお使いの環境のものを設定してください。

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

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に以下を追加

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.userdataSource.passwordはお使いの環境のものを設定してください。

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を起動。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1