Configuring a datasource connection
New Confluence installation
The Confluence setup wizard will only provide an option to use a datasource if it detects one in your Tomcat configuration. If you want to use a datasource, follow the steps below.
1. Stop Confluence
In the Confluence setup wizard, you'll be prompted to choose your database. At this point, you should:
- Stop Confluence.
- Back up the following files, in case you need to revert your changes:
<installation-directory>/conf/server.xml
<installation-directory>/confluence/WEB-INF/web.xml
<home-directory>/confluence.cfg.xml
2. Add your database driver
Copy your database driver into the <installation-directory>/lib
directory.
Here's where to find the driver for your database:
- PostgreSQL: bundled with Confluence at
<installation-directory>/confluence/WEB-INF/lib/postgresql-x.x.x.jar
- Microsoft SQL Server: bundled with Confluence at
<installation-directory>/confluence/WEB-INF/lib/mssql-jdbc-x.x.x.x.jar
- MySQL: head to Database JDBC Drivers to download the driver
- Oracle: head to Database JDBC Drivers to download the driver
3. Configure the datasource in Tomcat
Next, add the datasource configuration to Tomcat.
- Edit
<installation-directory>/conf/server.xml
Find the following lines:
<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 -->
Insert the following DataSource
Resource
element for your specific database directly after the lines above (inside theContext
element, directly after the opening<Context.../>
line, beforeManager)
.
Replace<database-user>
,<password>
,<host>
and<database-name>
(or<SID>
for Oracle) with details of your own database. You may also need to change the port, if your database server is not running on the default port.Configure the connection pool and other properties. See the Apache Tomcat 9 Datasource documentation for more information.
- If you plan to use collaborative editing, you'll need to make sure:
- You're using a supported database driver. Collaborative editing will fail if you're using an unsupported or custom JDBC driver or
driverClassName
in your datasource. See Database JDBC Drivers for the list of drivers we support. - Your database connection pool allows enough connections to support both Confluence and Synchrony (which defaults to a maximum pool size of 15)
- You're using simple username and password authentication for your database.
- You're using a supported database driver. Collaborative editing will fail if you're using an unsupported or custom JDBC driver or
4. Configure the Confluence web application
Configure Confluence to use this datasource:
- Edit
<CONFLUENCE_INSTALLATION>/
confluence/WEB-INF/web.xml - Insert the following element just before
</web-app>
near the end of the file:
<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. Restart Confluence and continue setup process
Now that your datasource is configured, you can continue with the setup wizard.
- Start Confluence.
- Go to
http://localhost:8090
to return to the setup wizard. - When prompted choose My own database (datasource).
- Enter the JNDI name of your datasource, for example,
java:comp/env/jdbc/confluence
- Follow the prompts to finish setting up Confluence.
6. Update your datasource to turn off auto commit
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.
- Stop Confluence.
- Edit
<installation-directory>/conf/server.xml
Add the following parameter in your datasource Resource element.
defaultAutoCommit="false"
- Start Confluence.
- Repeat this for all cluster nodes.
Existing Confluence installation
If you want to switch from using a direct JDBC connection to a datasource:
- Stop Confluence.
- Back up the following files, in case you need to revert your changes:
<installation-directory>/conf/server.xml
<installation-directory>/confluence/WEB-INF/web.xml
<home-directory>/confluence.cfg.xml
- Copy your database driver into the
<installation-directory>/lib
directory, as described in the steps above. You can find the details of your current database connection in<home-directory>/confluence.cfg.xml
.
Edit
<installation-directory>/conf/server.xml
and insert the followingDataSource
Resource element for your specific database (inside theContext
element, directly after the opening<Context.../>
line beforeManager
)Replace
<database-user>
,<password>
,<host>
and<database-name>
(or<SID>
for Oracle) with details of your own database. You may also need to change the port, if your database server is not running on the default port.
Edit the
<home-directory>/
confluence.cfg.xmlhibernate
.
Insert the following at the start of the
<properties>
section.- Start Confluence.
Upgrading Confluence with a datasource
If you're upgrading Confluence (manually or using the installer) you will need to:
- Stop Confluence (if you have attempted to start it).
- Copy your database driver into the
<installation-directory>/lib
directory. - Edit
<installation-directory>/conf/server.xml
and add your datasource resource. - Edit
<installation-directory>/confluence/WEB-INF/web.xml
to configure Confluence to use this datasource.
If you forget to do these steps, Confluence will not start up after upgrade and you'll see the following error:
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.
Known issues
- If you experience a lot of
ContentUpdatedEvent
errors in the logs, you may need to add adddefaultAutoCommit="false"
to the datasource in theserver.xml
file. See - CONFSERVER-59524Getting 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-60120Getting issue details... STATUS for more information and a workaround.
- There's a known issue when running Oracle with Native Network Encryption that can cause Confluence to become unresponsive. See
-
CONFSERVER-60152Getting issue details...
STATUS
for more details and Confluence Unresponsive Due to High Database Connection Latency for some suggested mitigation strategies.