首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jedis断管异常

Jedis断管异常
EN

Stack Overflow用户
提问于 2015-09-07 01:26:59
回答 1查看 6.5K关注 0票数 2

我在servlet过滤器中使用Redis进行身份验证,并且没有修改redis.conf

代码语言:javascript
复制
jedis = new Jedis("localhost");
String authToken = jedis.get(uid);

第2行抛出一个异常。

代码语言:javascript
复制
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Broken pipe
redis.clients.jedis.Connection.flush(Connection.java:291)
redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:214)
redis.clients.jedis.Connection.getBulkReply(Connection.java:205)
redis.clients.jedis.Jedis.get(Jedis.java:105)
filter.AuthFilter.doFilter(AuthFilter.java:38)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
EN

回答 1

Stack Overflow用户

发布于 2015-09-07 13:35:44

连接似乎被重置/断开。当您使用长期存在的连接(例如,在应用程序启动时连接到Redis,然后一遍又一遍地使用该连接),就会发生这种情况。

可能的解决办法是:

  1. 使用JedisPool在需要时获得连接,并在使用后返回它
  2. 如果连接中断,则重新连接(需要一些尝试/捕获魔法来防止错误传播到应用程序逻辑中)
  3. 在你需要连接的时候连接,然后断开连接

还有一些Java客户端提供透明的重新连接,这意味着您永远不会看到套接字异常(生菜雷迪逊)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32429981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档