当我将enableTransactionSupport设置为true时,连接不会返回到池。即使事务方法已经完成,连接也会绑定到线程,这是一个大问题,如何解决?我使用spring数据redis 2.7.2和jedis 2.8.1
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.maxTotal}" />
<property name="maxIdle" value="${redis.maxIdle}" />
<property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
<property name="testOnReturn" value="false" />
</bean>
<bean id="jedisFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="${redis.host}" />
<property name="port" value="${redis.port}" />
<property name="usePool" value="true" />
<property name="poolConfig" ref="jedisPoolConfig" />
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisFactory" />
<property name="enableTransactionSupport" value="true" />
<property name="defaultSerializer">
<bean class="com.wd.ics.util.CustomRedisSerializer" /> </property>
</bean>
连接没有释放到redis池,如果我没有使用enableTransactionSupport,这是可以的。但它不支持Spring的Transactional。如何解决?
可以这样解除绑定连接。
RedisConnectionUtils.unbindConnection(redisTemplate.getConnectionFactory());
如果您使用jedis。它将返回到池的连接。
if (pool != null) {
if (!broken) {
// reset the connection
try {
if (dbIndex > 0) {
jedis.select(0);
}
pool.returnResource(jedis);
return;
} catch (Exception ex) {
DataAccessException dae = convertJedisAccessException(ex);
if (broken) {
pool.returnBrokenResource(jedis);
} else {
pool.returnResource(jedis);
}
throw dae;
}
} else {
pool.returnBrokenResource(jedis);
return;
}
}
使用来自DBCP的BasicDataSource,如果我们执行getConnection()并且在最后一个块中我们关闭连接,它是真的将连接返回到池还是关闭连接。我正在检查的代码片段是这样的 我正在检查BasicDataSource的源代码,并访问了这个包装类以获取连接。 委托对象的类型为java。sql。联系包装器代码调用委托的close方法,该方法将关闭集合,而不是将连接返回到池。这是DBCP的
问题内容: 我试图在Windows 2008 R2中使用Kibana运行ElasticSearch。 我关注了这篇文章:在带有木瓜的Windows服务器上安装logstash 一步一步,但我得到的是: 当我去 我得到: 因此,似乎ElasticSearch正在运行,但是由于某些原因,Kibana无法连接到它。 ElasticSearch日志包含错误: 知道我在做什么错吗? 问题答案: 我也遇到过类
我正在尝试在同一台机器上设置ElasticSearch、Logstash和Kibana。我设置了: elasticsearch-1.4.0 logstash-1.4.2 kibana-3.1.2 根据本文,我遵循了所有步骤:http://aarvik.dk/a-bit-on-elasticsearch-logstash-kibana-the-elk-stack/ 我运行了ElasticSearch
我想返回每个行,并为和提供空值,如果它们没有。当我执行此查询时,我得到空结果。如果我使用而不是,我得到不正确的结果。如何过滤左连接,以便如果没有匹配,我仍然得到返回的p行与和的空值? 注:我在末尾添加了,仅用于测试目的。
我正在做jndi查找JBOSS AS. Code中配置的数据源,如下所示。 initialContext=新的initialContext(道具); dataSource=(dataSource)initialContext。查找(bundle.getString(“jndiName”); ource.get连接; 这段代码放在servlet的doPost中。我也很安全地打电话给你 联系关闭()
问题内容: 我们看到的情况是,我们的数据库连接由于套接字写入错误而终止: 当然,所有随后的写入连接的尝试都会失败: 在更新代码以捕获此类异常并在发生连接时请求新连接后,该连接再次失败。我是否怀疑每次调用实际上都不在提供新的连接?难道不只是重用已关闭的现有连接吗? 如果我是正确的,那么丢弃旧的连接并请求新的连接的正确方法是什么? 编辑:这是我想知道的更简洁的版本: “ c1 == c2”是正确的说法