【0】README
0)intro to jndi, plase visit intro to jndi;
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>