Skip to end of metadata
Go to start of metadata

中文标题【配置一个数据源连接】


这个指南指导你如何配置使用 JNDI 数据源来连接到你的数据库。使用这个类型的连接,Confluence 将会询问应用服务器(Tomcat)中你配置的连接信息。

如果你希望使用 JDBC 的数据库连接方式,请参考下面的指南:

JDBC 直接连接 Confluence 到数据库为更加常用的连接方式,而且使用这种方式连接到数据库更加简单,在升级 Confluence 的时候也不需要重新配置 Confluence。



本页面中的内容:

相关页面:

新 Confluence 安装

如果在你的 Tomcat 中配置了数据源,并且Confluence 设置指南在安装的时候检测到这个配置的时候,配置数据源的选项将会提供给你进行配置。入股你希望使用数据源,请参考下面的配置。

1. 停止 Confluence

在 Confluence 的配置指南中,你将会提示选择你的数据库,在这个时候,你应该:

  1. 使用 bin/stop-confluence.sh or bin/stop-confuence.bat 停止  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:进入 Database JDBC Drivers  页面来下载驱动
  • Oracle:进入 Database JDBC Drivers  页面来下载驱动

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 之前)。

    <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"
        validationQuery="select 1"/>  
    <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"
        validationQuery="select 1"/>

    如果你正在使用的 Confluence 6.3 及其早期的版本,针对 SQL Server 数据库服务器,你 制定jTDS 驱动。请参考  Configuring a SQL Server Datasource in Apache Tomcat 中的文档来进行配置。

    <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"
        validationQuery="Select 1"/>
    <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"/>

    See how to find your Oracle URL


    替换 <database-user>, <password>, <host><database-name> (或针对 Oracle 使用 <SID>  )来配置你自己的数据库。你同事还需要修改这个端口,如果你的数据库没有在默认端口中运行的话。

  4. 配置连接池和其他属性,请参考 Apache Tomcat 8 Datasource documentation 页面来获得更多的信息。

    下面是针对 Tomcat 标准数据资源工厂类的配置属性(org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory):

    • driverClassName - 完全匹配的 Java 类,在 JDBC 驱动中使用的名称。
    • maxTotal - 活动实例的最大数量,这个是可以同时在连接池中允许连接的数量。
    • maxIdle - 可以限制的连接的最大数量,这个数量是在链接中允许的数量。
    • maxWaitMillis - 连接池中连接等待的最大毫秒数(当连接不可用的时候),针对连接可以在抛出异常之前先返回。
    • password - JDBC 连接时候使用的密码。
    • url - 连接的 URL,这个连接的 URL 将会传递给 JDBC 驱动(针对兼容性的需求,属性中的驱动名也会被同时识别)。
    • user - 传递给 JDBC 驱动使用的用户名。
    • validationQuery - SQL 查询,通常这个查询被用来校验连接池中连接的的可用性。使用这个校验先对连接进行校验后返回给应用程序。如果指定这个参数的话,这个查询必须为一个 SQL SELECT 查询语句,并且至少能够返回一行数据。当一个数据库服务器重启,或者因为其他网络问题导致连接失败的话,所有在连接池中的连接都会被中断,通常这个时候需要要求重新启动服务器。但是,通常在 Tomcat 中运行的 DBCP (数据库连接池 Database Connection Pool)在触发一个异常之前先会运行一个简单的 SQL查询,如果发现连接中断的话,那么将会尝试重新建立连接并且替换掉中断的连接。希望进行这方面的配置,针对数据库连接池,你需要设置 "validationQuery" 选项。
  5. 如果你计划使用协作编辑,你需要确定:
    • 你需要使用支持的数据库驱动。如果你使用了不支持的数据库驱动或者自定义的 JDBC 驱动,或者你数据源中的  driverClassName,协作写编辑将会失败。请参考 Database JDBC Drivers 页面中的内容。
    • 你数据库连接池需要允许有足够的连接数来同时支持  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 然后继续设置进程

现在你的数据源已经成功配置了,你可以继续你 Confluence 的安装进程了。

  1. 使用 bin/start-confluence.sh 或  bin/start-confuence.bat 来重启你的 Confluence
  2. Go to http://localhost:8090 to return to the setup wizard. 
  3. 当提示选择 My own database (datasource)
  4. 输入你数据源的 JNDI 名称,例如,java:comp/env/jdbc/confluence
  5. 针对弹出的内容来完成你 Confluence 的设置。

已经存在的 Confluence 安装

如果你希望在使用 JDBC 直接方式的应用中切换到使用数据源:

  • 停止 Confluence.
  • 备份下面的文件,以防止你可能需要重新恢复你的配置:
    • <installation-directory>/conf/server.xml
    • <installation-directory>/confluence/WEB-INF/web.xml
    • <home-directory>/confluence.cfg.xml
  • 请按照上面新安装使用的步骤,同时拷贝你的驱动并且将数据源添加到正确的文件中。你可以针对当前数据连接中的配置找到细节信息 <home-directory>/confluence.cfg.xml
  • 编辑 <home-directory>/confluence.cfg.xml 文件,同时删掉 hibernate 元素之前的所有内容。

  • 将下面的内容插入到  <properties> 部分。

    <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>
    
    <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>
    
    <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>
    
    <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 使用数据源

如果你对 Confluence 进行升级(手动或者使用安装器),你需要:

  • 停止 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.
  • No labels