データソース接続を設定する

We will be ending support for datasource connections in Confluence 8.0. If you are currently using a JNDI datasource connection, we recommend you switch to a direct JDBC connection. This will also make upgrading to future versions of Confluence easier.

データソースを直接 JDBC 接続に変換する方法


このガイドでは、JNDI データソース接続をデータベースに設定する方法を説明します。この種の接続では、Confluence はアプリケーション サーバー (Tomcat) にユーザーのデータベース接続情報を問い合わせます。

JDBC 接続を使用したい場合は、ご使用のデータベースのガイドを参照してください。

Confluence のアップグレード時には、Confluence をデータベースに接続する方法としてダイレクト JDBC が最も一般的で、最も簡単です。 

On this page:

関連ページ

新規の Confluence インストール

Confluence セットアップ ウィザードは、Tomcat 構成でデータベースを検出した場合にデータソースを使用するオプションのみを提供します。データソースを使用したい場合は、次の手順に従います。 

1. Confluence を停止します

Confluence セットアップ ウィザードで、データベースを選択するようにプロンプトが出されます。この時点で、以下を実行します。

  1. Confluence を停止します
  2. 変更を元に戻す場合に備えて、次のファイルをバックアップします。
    • <installation-directory>/conf/server.xml
    • <installation-directory>/confluence/WEB-INF/web.xml
    • <home-directory>/confluence.cfg.xml

2. データベース ドライバーを追加する

データベース ドライバを <installation-directory>/lib ディレクトリにコピーします。

以下は、ご使用のデータベースのドライバーがある場所です。

  • PostgreSQL: Confluence にバンドル (<installation-directory>/confluence/WEB-INF/lib/postgresql-x.x.x.jar) 
  • Microsoft SQL Server: Confluence にバンドル (<installation-directory>/confluence/WEB-INF/lib/mssql-jdbc-x.x.x.x.jar) 
  • MySQL: データベース JDBC ドライバーに進み、ドライバーをダウンロードします。 
  • Oracle: データベース JDBC ドライバーに進み、ドライバーをダウンロードします。

3. Tomcat でデータソースを設定する

次に、データソース設定を Tomcat に追加します。 

  1. <installation-directory>/conf/server.xml
     
    を編集します。
  2. 以下の行を見つけます。

    <Context path="" docBase="../confluence" debug="0" reloadable="true">
    <!-- Logger is deprecated in Tomcat 5.5. Logging configuration for Confluence is 
    specified in confluence/WEB-INF/classes/log4j.properties -->
  3. 利用しているデータベースに対応した次のデータソース Resource 要素を、上記の行の直後 (Context 要素内で、<Context.../> 行の開始直後、Manager) の前)に挿入します。

    PostgreSQL...
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://<host>:5432/<database-name>"
        maxTotal="60"
        maxIdle="20"
        testOnBorrow="true"/>  
    Microsoft SQL Server...
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
       driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://<host>:1433;database=<database-name>"
        maxTotal="60"
        maxIdle="20"
        testOnBorrow="true"/>


    MySQL...

    5右上にある1.x ドライバー (MySQL 用5.7):

    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://<host>:3306/<database-name>?useUnicode=true&amp;characterEncoding=utf8"
        maxTotal="60"
        maxIdle="20"
        defaultTransactionIsolation="READ_COMMITTED"
        testOnBorrow="true"/>

    8.0.x ドライバを使用している場合 (MySQL 8 用):

    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
        driverClassName="com.mysql.cj.jdbc.Driver"
        url="jdbc:mysql://<host>:3306/<database-name>?useUnicode=true&amp;characterEncoding=utf8"
        maxTotal="60"
        maxIdle="20"
        defaultTransactionIsolation="READ_COMMITTED"
        testOnBorrow="true"/>
    Oracle...
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@<host>:1521:<SID>"
        username="<database-user>"
        password="<password>"
        connectionProperties="SetBigStringTryClob=true"
    	accessToUnderlyingConnectionAllowed="true"
        maxTotal="60"
        maxIdle="20"
        maxWaitMillis="10000"
        testOnBorrow="true"/>

    Oracle URL の検索方法」を参照してください。

    <database-user><password><host><database-name> (Oracle の場合は <SID>) をご利用のデータベースの詳細と置き換えます。データベース サーバーが既定のポートで実行されていない場合は、ポートの変更も必要になる場合があります。

  4. 接続プールおよびその他のプロパティを設定します。詳細は、「Apache Tomcat 9 データソースドキュメント」を参照してください。

    設定可能なプロパティ...

    以下は、Tomcat の標準のデータソース リソース ファクトリ (org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory) の設定プロパティです。

    • driverClassName – 使用される JDBC ドライバの完全修飾 Java クラス名。
    • maxTotal - このプールから同時に割り当てることができる、アクティブ インスタンスの最大数。
    • maxIdle – このプールで同時にアイドル可能なコネクションの最大数。
    • maxWaitMillis — 利用可能なコネクションが存在しない場合、例外をスローするまでにコネクションの返却をプールが待機する最大時間 (ミリ秒)。
    • password – JDBC ドライバに渡されるデータベースのパスワード。
    • url - JDBC ドライバに渡される接続 URL (後方互換性のため、プロパティの driverName も認識されます)。
    • user – JDBC ドライバに渡されるデータベース ユーザー名。
    • validationQuery-検証クエリを明示的に設定することはお勧めしません。代わりに、testOnBorrowデータベースドライバによって定義された検証クエリを使用する設定をお勧めします。詳細については、「データベース接続クロージャ」を参照してください。
  5. 共同編集を使用する場合は、以下を確認する必要があります。
    • サポートされているデータベース ドライバを使用していること。サポートされていないドライバやカスタム JDBC ドライバを使用している場合、またはデータソースで driverClassName を使用している場合、共同編集は失敗します。サポートされているドライバの一覧については、「データベース JDBC ドライバ」を参照してください。
    • データベース接続プールは、Confluence と Synchrony の両方をサポートできる十分な接続数を許可する (既定値は最大プールサイズの 15)。
    • データベースには、単純なユーザー名およびパスワード認証を使用している。  

4.Confluence Web アプリケーションを設定する

次のデータソースを使用するように Confluence を設定します。

  1. <CONFLUENCE_INSTALLATION>/confluence/WEB-INF/web.xml を編集します。
  2. ファイルの末尾の近くで、</web-app> の直前に次の要素を挿入します。 
<resource-ref>
  <description>Connection Pool</description>
  <res-ref-name>jdbc/confluence</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

5. Confluence を再起動してセットアップ プロセスを続行する

これでデータソースが設定されたので、セットアップ ウィザードを続行できます。 

  1. Confluence を起動します。 
  2. http://localhost:8090 に進み、セットアップ ウィザードに戻ります。 
  3. プロンプトが出されたら、独自データベース (データソース) を選択します。
  4. データソースの JNDI 名を入力します (例: java:comp/env/jdbc/confluence)。
  5. プロンプトに従って、Confluence のセットアップを完了します。 

6. データソースを更新して自動コミットをオフにする

Once you've confirmed that Confluence is up and running, you'll need to make a final change to your datasource to avoid a known issue with editing pages. See  CONFSERVER-59524 - Getting issue details... STATUS

  1. Confluence を停止します。 
  2. <installation-directory>/conf/server.xml を編集します。
  3. 次のパラメーターをデータソースの Resource 要素に追加します。 

    defaultAutoCommit="false"
  4. Confluence を起動します。 
  5. これをすべてのクラスター ノードで繰り返します。 

既存の Confluence のインストール

JDBC 直接接続からデータソースへ切り替える場合:

  • Confluence を停止します
     
  • 変更を元に戻す場合に備えて、次のファイルをバックアップします。
    • <installation-directory>/conf/server.xml
    • <installation-directory>/confluence/WEB-INF/web.xml
    • <home-directory>/confluence.cfg.xml
       
  • 上記ステップの説明に従って、データベース ドライバーを <installation-directory>/lib ディレクトリにコピーします。現在のデータベース接続に関する詳細は、<home-directory>/confluence.cfg.xml をご確認ください
     
  • <installation-directory>/conf/server.xml を編集して、次の DataSource Resource 要素を特定のデータベース (Context 要素内で <Context.../> 行の開始直後、Manager の前) に挿入します。

    PostgreSQL...
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://<host>:5432/<database-name>"
        maxTotal="60"
        maxIdle="20"
        testOnBorrow="true"
        defaultAutoCommit="false"/>  
    Microsoft SQL Server...
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
       driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        url="jdbc:sqlserver://<host>:1433;database=<database-name>"
        maxTotal="60"
        maxIdle="20"
        testOnBorrow="true" 
        defaultAutoCommit="false"/>


    MySQL...

    5右上にある1.x ドライバー (MySQL 用5.7):

    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://<host>:3306/<database-name>?useUnicode=true&amp;characterEncoding=utf8"
        maxTotal="60"
        maxIdle="20"
        defaultTransactionIsolation="READ_COMMITTED"
        testOnBorrow="true"
        defaultAutoCommit="false"/>

    8.0.x ドライバを使用している場合 (MySQL 8 用):

    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        username="<database-user>"
        password="<password>"
        driverClassName="com.mysql.cj.jdbc.Driver"
        url="jdbc:mysql://<host>:3306/<database-name>?useUnicode=true&amp;characterEncoding=utf8"
        maxTotal="60"
        maxIdle="20"
        defaultTransactionIsolation="READ_COMMITTED"
        testOnBorrow="true"
        defaultAutoCommit="false"/>
    Oracle...
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@<host>:1521:<SID>"
        username="<database-user>"
        password="<password>"
        connectionProperties="SetBigStringTryClob=true"
    	accessToUnderlyingConnectionAllowed="true"
        maxTotal="60"
        maxIdle="20"
        maxWaitMillis="10000"
        testOnBorrow="true"
        defaultAutoCommit="false"/>

    Oracle URL の検索方法」を参照してください。

    <database-user><password><host><database-name> (Oracle の場合は <SID>) をご利用のデータベースの詳細と置き換えます。データベース サーバーが既定のポートで実行されない場合は、ポートも変更する必要が生じる場合もあります。

  • <home-directory>/confluence.cfg.xml ファイルを編集して、hibernate で始まるプロパティを含むすべての行を削除します。
     

  • <properties>  セクションの先頭に以下を挿入します。

    PostgreSQL...
    <property name="hibernate.setup"><![CDATA[true]]></property>
    <property name="hibernate.dialect"><![CDATA[net.sf.hibernate.dialect.PostgreSQLDialect]]></property>
    <property name="hibernate.connection.datasource"><![CDATA[java:comp/env/jdbc/confluence]]></property>
    
    Microsoft SQL Server...
    <property name="hibernate.setup"><![CDATA[true]]></property>
    <property name="hibernate.dialect"><![CDATA[net.sf.hibernate.dialect.SQLServerIntlDialect]]></property>
    <property name="hibernate.connection.datasource"><![CDATA[java:comp/env/jdbc/confluence]]></property>
    
    MySQL...
    <property name="hibernate.setup"><![CDATA[true]]></property>
    <property name="hibernate.dialect"><![CDATA[com.atlassian.hibernate.dialect.MySQLDialect]]></property>
    <property name="hibernate.connection.datasource"><![CDATA[java:comp/env/jdbc/confluence]]></property>
    
    Oracle...
    <property name="hibernate.setup"><![CDATA[true]]></property>
    <property name="hibernate.dialect"><![CDATA[com.atlassian.confluence.impl.hibernate.dialect.OracleDialect]]></property>
    <property name="hibernate.connection.datasource"><![CDATA[java:comp/env/jdbc/confluence]]></property>
    
  • Confluence を起動します

データソースと共に Confluence をアップグレードする

Confluene をアップグレードする場合 (手動またはインストーラーを使用)、以下を実行する必要があります。

  • Confluence を停止します (起動している場合)。
  • データベース ドライバを <installation-directory>/lib ディレクトリにコピーします。
  • <installation-directory>/conf/server.xml を編集してデータソース リソースを追加します。
  • <installation-directory>/confluence/WEB-INF/web.xml を編集して、このデータソースを使用するように Confluence を設定します。

これらの手順を忘れると、Confluence はアップグレード後に起動せず、次のエラーが表示されます。

HTTP Status 500 - Confluence is vacant, a call to tenanted [public abstract org.hibernate.Session org.hibernate.SessionFactory.getCurrentSession() throws org.hibernate.HibernateException] is not allowed.

既知の問題

  • If you experience a lot of ContentUpdatedEvent errors in the logs, you may need to add add  defaultAutoCommit="false"  to the datasource in the server.xml file. See  CONFSERVER-59524 - Getting issue details... STATUS  for more information and full details of the workaround. 
  • There's a known issue where Synchrony does not start if Confluence connects to the database using  a datasource. See  CONFSERVER-60120 - Getting issue details... STATUS  for more information and a workaround. 


最終更新日: 2023 年 2 月 21 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.