This page has been replaced by Configure application server based data sources and Data source configuration - problem determination. Some of the information is out of date with respect to new releases of the app. However, we have kept the page as it has comments and answers that may still be helpful. |
|
Many users install the standard Confluence standalone distribution. This section discusses configuration specific to this application server environment. The most recent versions of Confluence use newer versions of the Tomcat application server where the following configuration examples apply:
Put the driver jar in <install-dir>/lib - this is the directory that has other Tomcat jars. If you have an older version of Confluence that does not have this directory, look for <install-dir>/common/lib instead.
Modify <install-dir>/conf/server.xml to add one or more data source resource elements. User's Guide is an example of adding a few data sources for various local and non-local databases.
The essential element is something like the following, where the data source name is myDS:
<Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource" username="confluence" password="confluence" maxActive="100" maxIdle="10" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/mydatabase" validationQuery="Select 1" /> |
|
The sql macro markup looks like: {sql:datasource=myDS| ... }
Database, Information, JDBC driver example, Resource configuration PostgreSQL, [PostgreSQL JDBC|http://jdbc.postgresql.org/], postgresql-8.2-507.jdbc3.jar, "{noformat} <Resource name=""jdbc/myDS"" auth=""Container"" type=""javax.sql.DataSource"" username=""confluence"" password=""confluence"" maxActive=""100"" maxIdle=""10"" driverClassName=""org.postgresql.Driver"" url=""jdbc:postgresql://localhost:5432/confluence"" validationQuery=""Select 1"" />{noformat}" MySQL, [MySql connector|http://dev.mysql.com/downloads/connector/j/5.1.html], mysql-connector-java-3.1.14-bin.jar, "{noformat} <Resource name=""jdbc/myDS"" auth=""Container"" type=""javax.sql.DataSource"" driverClassName=""com.mysql.jdbc.Driver"" url=""jdbc:mysql://localhost/mydatabase?autoReconnect=true"" username=""username"" password=""password"" maxActive=""25"" maxIdle=""5"" maxWait=""10000"" /> {noformat}\\ See SQL-146 for info on how to configure multiple result sets." Oracle, Thin Driver\\ [Oracle JDBC|http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-111060-084321.html], ojdbc6.jar, "{noformat} <Resource name=""jdbc/myDS"" auth=""Container"" type=""javax.sql.DataSource"" driverClassName=""oracle.jdbc.OracleDriver"" url=""jdbc:oracle:thin:@www.some_server.com:1521:mysid"" username=""username"" password=""password"" connectionProperties=""SetBigStringTryClob=true"" maxActive=""25"" maxIdle=""5"" maxWait=""10000"" /> {noformat}" Oracle Advanced, Thin Driver \\ [Oracle JDBC|http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-111060-084321.html], ojdbc6.jar, See [Tomcat 6.0 using Oracle Universal Connection Pool|http://www.oracle.com/technetwork/articles/oem/ucp-jdbc-tomcat-355431.html] Microsoft SQL Server, [jtds driver|http://jtds.sourceforge.net/], jtds-1.2.2.jar, "{noformat} <Resource name=""jdbc/myDS"" auth=""Container"" type=""javax.sql.DataSource"" driverClassName=""net.sourceforge.jtds.jdbc.Driver"" url=""jdbc:jtds:sqlserver://mysqlserver:1433/mydatabase"" username=""username"" password=""password"" maxActive=""20"" maxIdle=""10"" maxWait=""-1"" /> {noformat}" Derby, [Derby|http://db.apache.org/derby/], derbyclient.jar, "{noformat} <Resource name=""jdbc/myDS"" auth=""Container"" type=""javax.sql.DataSource"" driverClassName=""org.apache.derby.jdbc.ClientDriver"" url=""jdbc:derby://localhost:1527/dbname"" username=""username"" password=""password"" maxActive=""20"" maxIdle=""10"" />{noformat}" |
Support for other databases depends on the capabilities provided by the JDBC driver. The SQL for Confluence expects certain JDBC features to be available. In some cases, parameter choices can affect which capabilities are needed. User testing and community support is about the only help that is available for less popular databases/JDBC drivers. If you have had success with other databases, please add information to this page.
Here are some common errors and examples.
Check your driver location. The driver must be installed in a location that is on the classpath of your application server. For standalone installations, the location is <install-directory>/lib.
sql: Unexpected program error: com.atlassian.renderer.v2.macro.MacroException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'net.sourceforge.jtds.jdbc.Driver' |
Check your application server (server.xml) configuration and ensure the DNS host name is valid on the server running Confluence.
sql: Unexpected program error: com.atlassian.renderer.v2.macro.MacroException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Unknown server host name 'myserver'.) |
The database may not be listening on the requested port - verify the port configuration in server.xml and database.
sql: Unexpected program error: com.atlassian.renderer.v2.macro.MacroException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Network error IOException: Connection refused) |
Application server configuration (server.xml) has the wrong password.
sql: Unexpected program error: com.atlassian.renderer.v2.macro.MacroException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: password authentication failed for user "bad") |
Validation query not supported or incorrect syntax - remove the validation query or ensure it is correct for your database.
sql: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Syntax error: Encountered "<EOF>" at line 1, column 8.) |
User does not have permission to the database or table - modify your database configuration.
sql: org.postgresql.util.PSQLException: ERROR: permission denied for relation test01 |
The resource configuration is outside of the confluence context - change your application server configuration (server.xml) to ensure the resource is within the Confluence context.
sql: Unexpected program error: com.atlassian.renderer.v2.macro.MacroException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' |
After upgrading Confluence or your application server, this error can occur if your data source configuration is out of date. Look for something like factory="org.apache.commons.dbcp.BasicDataSourceFactory" in your server.xml. Either remove it or rename it to factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory". Reference is SQL-68.
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSourceFactory |
If you are using a non-standard JDBC driver for accessing less common databases, there are potential problems with unsupported or non-standard behavior. Experiment on a test instance to ensure it works as expected. Here are some workarounds for problems you might encounter. If you continue to have problems, you may need to debug the code on your installation.
Add a validation query to your configuration. This helps the application server connection pool to recover from database connection problems.
validationQuery="Select 1" |
For other errors related to connectivity, google your symptoms and application server combination.
Consult your database documentation as SQL has some database specific differences . It is best to validate your SQL outside of Confluence before putting it on a page. Use a database admininstrator tools (pgAdmin for instance), some general SQL client, or various Eclipse database plugins.