一 在tomcat下jndi有多种配置方式:
(1)全局配置:
在tomcat的conf目录下的context.xml文件中加入如下配置:
<Resource name="jdbc/mysql" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="60" wait_timeout="18800"
timeBetweenEvictionRunsMillis="300000" minEvictableIdleTimeMillis="600000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/family?comautoReconnect=true&failOverReadOnly=false"
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"/>
配置项意义:
- * driverClassName - 所使用的JDBC驱动类全称。
- * maxActive - 同一时刻可以自数据库连接池中被分配的最大活动实例数。
- * maxIdle - 同一时刻数据库连接池中处于非活动状态的最大连接数。
- * maxWait - 当连接池中没有可用连接时,连接池在抛出异常前将等待的最大时间,单位毫秒。
- * password - 传给JDBC驱动的数据库密码。
- * url - 传给JDBC驱动的连接URL。
- * user - 传给JDBC驱动的数据库用户名。
- * validationQuery - 一个SQL查询语句,用于在连接被返回给应用前的连接池验证。 如果指定了该属性,则必为至少返回一行记录的SQL SELECT语句
(2)局部配置:
在应用服务的META-INFO下创建context.xml并且内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
password="root"
username="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/family?comautoReconnect=true&failOverReadOnly=false"
maxIdle="30"
maxWait="5000"
maxActive="100"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
/>
</Context>
(3) 还有一种方式是修改tomcat的server.xml,此方式不推荐,所以在此处就不在叙述
针对以上配置需要在应用的web.xml添加如下配置:
<resource-ref> <description>JNDI DataSource</description> <res-ref-name>jdbc/mysql</res-ref-name> <res-ref-type>javax.sql.DataSource</res-ref-type> <res-auth>Container</res-auth> </resource-ref>
针对以上web.xml中的配置,网上很多描述要配置,本人把(1),(2)两种情况在不配置web.xml的情况下均能正常使用数据源
二 在web项目中配置好了数据源,可以做如下使用
(1) 直接使用数据源,操作如下代码:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
System.out.println(ds.getClass().getSimpleName());
Connection conn = ds.getConnection();
注意:此段代码不能使用application运行,不然会报错(数据源配置在tomcat或web容器上) (2)在spring中使用,有如下两种配置方式
<jee:jndi-lookup id="dataSource" jndi-name="java:/comp/env/jdbc/sqlserver"/>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/comp/env/jdbc/sqlserver"></property>
</bean>
1372

被折叠的 条评论
为什么被折叠?



