最近看了看开源项目appllo配置中心的源码,发现一个很有意思的东东:
(1)原理:由于使用了DeferredResult,根据Spring DispatcherServlet的默认逻辑,数据库连接只有在异步请求真正返回给客户端的时候才会释放回连接池
(2)应用场景:长连接时间很长,对于大部分请求可能都要数小时以上才会返回。在这么长的一段时间内一直占用着数据库连接是不合理的
长连接场景解决:
@Component
public class EntityManagerUtil extends EntityManagerFactoryAccessor {
private static final Logger logger = LoggerFactory.getLogger(EntityManagerUtil.class);
/**
* close the entity manager.
* Use it with caution! This is only intended for use with async request, which
* Spring won't close the entity manager until the async request is finished.
*/
public void closeEntityManager() {
EntityManagerHolder emHolder = (EntityManagerHolder)
TransactionSynchronizationManager.getResource(getEntityManagerFactory());
if (emHolder == null) {
return;
}
logger.debug("Closing JPA EntityManager in EntityManagerUtil");
EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
}
}
分享到:
相关推荐
Spring中的异步REST结果 大部分Spring Boot REST教程... 但是,当您开始在生产中使用Spring Boot时,您很快就会发现,按照字母中的示例操作可能会导致性能问题。 在本文中,我将向您展示如何利用Spring的内置异步功能。
前言 第一篇 网站基础知识 第1章 网站架构及其演变过程2 1.1 软件的三大类型2 ...22.2.4 DeferredResult类型异步请求的处理过程及用法303 22.2.5 ListenableFuture类型异步请求的处理过程及用法305 22.3 小结309
ServletContext注册三大组件 springmvc-定制与接管SpringMVC springmvc-异步请求-返回Callable 异步请求-返回DeferredResult.
检查:Java (TM) SE 运行时环境(构建 1.8.0_31-b13) apache-tomcat-8.0.21 url - http: // 本地主机: 8080 / SimpleWebChatSpring / 聊天控制器根据聊天记录的请求返回 DeferredResult,因此它不适用于 tomcat 6...
AsyncTask 实现 进度条 网络下载进度条 例子
动作可以返回rx.Observable,就像返回Callable或DeferredResult一样,请参见RxJavaController 当控制器返回Callable / DeferredResult / Observable时,提供支持MDC值 先决条件 Maven / SBT 为什么使用maven而...
Spring MVCReact式处理程序用于Reactor3和RxJava3集成的Spring Boot启动器设置专家< dependency>< groupId>io.iceflower... 在DeferredResult,ListenableFuture和REST Endpoint中下载。 io.reactivex.rxjava3.core.
您不再需要使用阻塞操作或将值分配给DeferredResult或ListenableFuture,而可以声明REST端点返回Observable。 例: @RestController public static class InvoiceResource { @RequestMapping(method
DeferredResult 指南 | 贝尔东: 从 JUnit 4 迁移到 JUnit 5 | 贝尔东: 包 — 柜台 — Oracle 开发人员 — 中: Java 映射框架的性能 | 贝尔东: 用你的方式掌握 RxJava – Niklas Baudy – Medium: 更具表现力...