如何正确的在java web配置数据池

时间:2023-01-01 06:50:23

在tomcat context.xml中配置数据

<Context reloadable="true">

<!-- Default set of monitored resources -->

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<Resource name="jdbc/bookstore" auth="Container"      type="javax.sql.DataSource"      driverClassName="com.mysql.jdbc.Driver"      maxActive="100" maxIdle="30" maxWait="10000"      username="root" password="root"      url="jdbc:mysql://localhost:3306/bookstore" />

<!-- Uncomment this to disable session persistence across Tomcat restarts -->

<!--

<Manager pathname="" />

-->

<!-- Uncomment this to enable Comet connection tacking (provides events

on session expiration as well as webapp lifecycle) -->

<!--

<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

-->

</Context>

在server.xml中修改如下

<GlobalNamingResources>

<!-- Editable user database that can also be used by          UserDatabaseRealm to authenticate users     -->

<Resource name="UserDatabase" auth="Container"               type="org.apache.catalina.UserDatabase"               description="User database that can be updated and saved"               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"               pathname="conf/tomcat-users.xml" />

<Resource name="jdbc/bookstore" auth="Container" type="javax.sql.DataSource"                maxActive="100" maxIdle="30" maxWait="1000"                username="root" password="root" driverClassName="com.mysql.jdbc.Driver"                url="jdbc:mysql://localhost:3306/bookstore?autoReconnect=true"/>

</GlobalNamingResources>

在项目的xml中配置

<resource-ref>

<description>MySQL Datasource v3hd</description>

<res-ref-name>jdbc/bookstore</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

访问代码

private DataSource ds=null;
 public BookDBBean() throws NamingException
 {
  Context ctx=new InitialContext();
  ds=(DataSource) ctx.lookup("java:comp/env/jdbc/bookstore");
 }
 public Connection getConnection() throws SQLException
 {
  return ds.getConnection();
 }