Sun Java System Web Server 7.0 管理员指南

Procedure创建 JDBC 连接池

  1. 启动 wadm。

  2. 创建 JDBC 资源。

    使用基本配置创建一个 JDBC 资源。其他属性可用于微调连接池。有关更多属性和示例的信息,请参阅手册页。


    wadm> create-jdbc-resource --config=test 
    --datasourceclass=oracle.jdbc.pool.OracleDataSource jdbc/MyPool
  3. 配置特定于供应商的属性。

    使用相应的属性配置特定于驱动程序供应商的属性。在以下示例中,属性 urluserpassword 被添加到 JDBC 资源中。


    wadm> add-jdbc-resource-userprop --config=test --jndi-name=jdbc/MyPool 
    url=jdbc:oracle:thin:@hostname:1521:MYSID user=myuser password=mypassword
  4. 启用连接验证。

    可以对连接池启用连接验证。如果使用此选项,则连接在传递到应用程序之前将被验证。这样,如果由于网络出现故障或数据库服务器崩溃造成数据库不可用,Web 服务器将自动重新建立数据库连接。连接验证将引起额外开销,并且会导致性能稍有下降。


    wadm> set-jdbc-resource-prop --config=test --jndi-name=jdbc/MyPool 
    connection-validation-table-name=test connection-validation=table
  5. 更改默认池设置。

    在以下实例中,将更改最大连接数。


    wadm> set-jdbc-resource-prop --config=test --jndi-name=jdbc/MyPool 
    max-connections=100
  6. 部署配置。


    wadm> deploy-config test
  7. 提供包含 JDBC 驱动程序的 Jar 文件。

    需要将实现该驱动程序的类提供给服务器。可以通过两种方法执行该操作:

    • 将驱动程序的 jar 文件复制到服务器实例 lib 目录中。这是最简单的方法,因为实例 lib 目录中包括的 jar 文件将会自动加载并对服务器可用。

    • 修改 JVM 的类路径后缀以包含 JDBC 驱动程序的 jar 文件。


      wadm> set-jvm-prop  --config=test class-path-suffix=/export/home/lib/classes12.jar
  8. 在 Web 应用程序中使用。

    • 修改 WEB-INF/web.xml


      <web-app>
      ...
        <resource-ref>
          <description>JDBC Connection Pool</description>
          <res-ref-name>jdbc/myJdbc</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
        </resource-ref>
      ...
      </web-app>
    • 修改 WEB-INF/sun-web.xml


      <sun-web-app>
      ...
        <resource-ref>
          <res-ref-name>jdbc/myJdbc</res-ref-name>
          <jndi-name>jdbc/MyPool</jndi-name>
        </resource-ref>
      ...
      </sun-web-app>
    • 使用连接池。


      Context initContext = new InitialContext();
          Context webContext = (Context)context.lookup("java:/comp/env");
      
          DataSource ds = (DataSource) webContext.lookup("jdbc/myJdbc");
          Connection dbCon = ds.getConnection();