SpringBoot整合JNDI:JDBC正常JPA部署异常及相关问题咨询
Tomcat JNDI配置与SpringBoot应用测试问题
测试场景说明
我在Tomcat中配置了JNDI,分别基于两个SpringBoot应用做测试:一个依赖spring-boot-starter-jdbc,另一个依赖spring-boot-starter-jpa。两个应用的控制器代码完全一致:
@RequestMapping( value = "/employees", method = RequestMethod.GET) public ResponseEntity<Object> getEmployees() { System.out.println("inside getEmployees() method ...."); List<Employee> employeeList = repository.findAll(); return new ResponseEntity<>(employeeList, HttpStatus.OK); }
同时在application.properties中配置了JNDI数据源:
spring.datasource.jndi-name=java:comp/env/jdbc/TestDB
JDBC应用状态(正常运行)
JDBC应用的Repository实现类如下,能够正常通过GET接口查询数据库数据:
@Repository public class EmployeeRepository { @Autowired private JdbcTemplate jdbcTemplate; @Transactional(readOnly = true) public List<Employee> findAll() { return jdbcTemplate.query("select * from EMPLOYEE", new EmployeeRowMapper()); } }
JPA应用状态(部署失败)
JPA应用通过继承JpaRepository实现数据访问,代码如下,War包已部署到Tomcat但无法启动:
@Repository public interface EmployeeRepository extends JpaRepository<EmployeeEntity, Long> { @Override @Transactional(readOnly = true) List<EmployeeEntity> findAll(); }
补充:Tomcat的server.xml和context.xml配置确认无误,测试使用MySQL 5.x版本。
待解决问题
- 如何通过JNDI管理数据库连接池?
- 基于JPA的应用(包含大量Web服务)无法启动,该如何排查解决?
- 能否让外部Jar应用复用Tomcat的数据库连接池?目前未找到相关实现示例。
内容的提问来源于stack exchange,提问作者davidvera
相关产品推荐
相关产品推荐

