You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:30:56