Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring绝地连接未返回池_Java_Spring_Spring Mvc_Redis_Spring Transactions - Fatal编程技术网

Java Spring绝地连接未返回池

Java Spring绝地连接未返回池,java,spring,spring-mvc,redis,spring-transactions,Java,Spring,Spring Mvc,Redis,Spring Transactions,我的应用程序由一个SpringREST控制器组成,它使用redis调用一个服务。 我使用的是spring boot starter redis 1.2.5,我在beans.xml文件中定义了一个模板: <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${spring.redis.h

我的应用程序由一个SpringREST控制器组成,它使用redis调用一个服务。 我使用的是spring boot starter redis 1.2.5,我在beans.xml文件中定义了一个模板:

<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
    p:host-name="${spring.redis.host}"
    p:use-pool="true" 
    p:port="${spring.redis.port}"
/>

<bean id="redisTemplateForTransaction" class="org.springframework.data.redis.core.RedisTemplate"
    p:connection-factory-ref="jedisConnectionFactory"
    p:keySerializer-ref="stringRedisSerializer"
    p:valueSerializer-ref="jsonRedisSerializerForTransaction"
    p:enableTransactionSupport="true">
    <qualifier value="redisTemplateForTransaction" />
</bean>

当我启动8个以上的查询时,我的应用程序将被阻止。我知道我已达到池中的默认连接数

为什么在请求处理结束时不会自动返回连接


如何在事务模式下工作,以便任何传入的请求都将获得其redis连接,并在处理结束时返回该连接?

您需要通过提供
PlatformTransactionManager
bean为应用程序启用事务管理

最简单的方法是将
@EnableTransactionManagement
添加到Spring引导应用程序中。如果不可能,请配置
PlatformTransactionManager
bean。重用现有的
数据源TransactionManager
是最简单的方法。如果不使用JDBC兼容的数据库,只需插入内存中的H2数据库即可

如果您想使用JTA事务管理器,请参阅以下博文:


HTH,Mark

非常感谢您的帮助,我会尝试一下并让您知道。但令人惊讶的是,我们无法控制连接池来简单地调用returnResource或returnResourceObject。Spring Data Redis隐藏了客户端的详细信息。问题是,一旦事务请求启动,如果未配置事务管理器,则不会释放事务/连接。