tomcat中配置jndi数据源以便spring获取

【0】README
0)intro to jndi, plase visit intro to jndi;
1)本文译自 Configuring Spring MVC JdbcTemplate with JNDI Data Source in Tomcat;
2)本文旨在分析如何通过springmvc 获取 JNDI 数据源 以连接到数据库;
3)for jndi datasource for db conn pooling in tomcat, please visit  Configuring JNDI DataSource for Database Connection Pooling in Tomcat;

【1】具体steps
step1)数据库请自行创建;
step2)在tomcat中配置jndi数据源:在tomcat_home/conf/context.xml 文件添加 Resource元素,代码如下:(请注意修改用户名和密码)
<Resource
    name="jdbc/spring"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/usersDB"
    username="root"
    password="secret"
    />
step3)在spring mvc 中获取 jndi数据源
step3.1)java config的方式获取
@Configuration
public class RepositoryConfig {

 @Bean  // 引入jndi数据源
 public JdbcTemplate getJdbcTemplate(DataSource ds) {
  return new JdbcTemplate(ds);
 }
 
 /*@Bean // 使用数据源连接池 配置数据源
 public BasicDataSource getDataSource() {
  BasicDataSource ds = new BasicDataSource();
  ds.setDriverClassName("com.mysql.jdbc.Driver");
  ds.setUrl("jdbc:mysql://localhost:3306/t_spring");
  ds.setUsername("root");
  ds.setPassword("root");
  return ds;
 }*/
 
 @Bean  // 使用JNDI 配置数据源.
 public DataSource dataSource() {
  JndiTemplate jndiTemplate = new JndiTemplate();
     DataSource dataSource = null;      
  try {
   dataSource = (DataSource) jndiTemplate.lookup("java:comp/env/jdbc/spring");
  } catch (NamingException e) {
   e.printStackTrace();
  }
     return dataSource;
 }
} 
step3.2) XML 配置的方式获取
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/spring"/>
</bean>
 
<!-- 下面进行引用就可以了 -->
<bean id="userDao" class="net.codejava.spring.dao.UserDAOImpl">
    <constructor-arg>
        <ref bean="dataSource" />
    </constructor-arg>
</bean>

你可能感兴趣的:(tomcat中配置jndi数据源以便spring获取)