【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元素,代码如下:(请注意修改用户名和密码)<Resourcename="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>