当前位置:首页 > 开发 > 互联网 > 正文

jedis 中出现ArrayIndexOutOfBoundsException异常的解决方法

发表于: 2014-09-10   作者:bsr1983   来源:转载   浏览次数:
摘要: 在使用jedis连接redis并调用publish方法发布消息时,出现了ArrayIndexOutOfBoundsException异常,当时使用的是jedis2.1.0版本,查看源代码发现是write方法中通过递增count,向缓存字节数组中写入数据时出现的ArrayIndexOutOfBoundsException,而且该异常是偶发的,并不是必现的,因此原因也不好追查。 之前在别的模块也遇
在使用jedis连接redis并调用publish方法发布消息时,出现了ArrayIndexOutOfBoundsException异常,当时使用的是jedis2.1.0版本,查看源代码发现是write方法中通过递增count,向缓存字节数组中写入数据时出现的ArrayIndexOutOfBoundsException,而且该异常是偶发的,并不是必现的,因此原因也不好追查。
之前在别的模块也遇到过jedis连接redis时出现的各种问题,例如还有下面的异常:
org.jivesoftware.openfire.RedisConnection - Subscribing failed with exception:
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Broken pipe
        at redis.clients.jedis.Connection.flush(Connection.java:66)
        at redis.clients.jedis.JedisPubSub.proceed(JedisPubSub.java:82)
        at redis.clients.jedis.Jedis.subscribe(Jedis.java:1971)
        at org.jivesoftware.openfire.RedisConnection$1.run(RedisConnection.java:116)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
        at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:29)
        at redis.clients.util.RedisOutputStream.flush(RedisOutputStream.java:227)
        at redis.clients.jedis.Connection.flush(Connection.java:64)
        ... 4 more
后来解决的方式就是替换了一个新版本的jedis的jar包——jedis2.5.1,需要提醒的是,这个版本中使用的commons-pool2的是commons-pool2-2.2.jar,需要Java 6.0+。
如果项目中同时用到了commons DBCP,那么需要注意,如果你使用的是commons-dbcp-1.4,那还需要保留原有的commons-pool1.x(Java 6.0+),否则需要将commons-dbcp升级到2.x版本,而且commons-dbcp2-2.0.1需要Java 7.0+。
处理替换jar,在释放redis连接方面也做了部分改动,会重试几次连接和释放。

jedis 中出现ArrayIndexOutOfBoundsException异常的解决方法

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
这种情况,起初以为是pool的配置不对,但是在调大了各种相应配置之后这样的问题还是经常出现,在查
在opensuse12.3中,我有一个java程序已经打成jar,执行该jar需要root权限。 先登入root su 命令输入
当在静态初始化块中出现了异常的时候,JVM会抛出 java.lang.ExceptionInInitializerError异常。如果
当在静态初始化块中出现了异常的时候,JVM会抛出 java.lang.ExceptionInInitializerError异常。如果
libvlc.dll使用时,Debug版没有问题,而Release版中出现函数定位错误的情况: 解决方法:1./OPT:REF
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
Eclipse出现问题解决 1. 更新SDK版本后,打开Eclipse出现This Android SDK requires Android Develo
问题现象 基于JedisPool管理Jedis对象,通过get方法获取值,出现key对应的value值错误,例如: K V
最近在做毕设时,出现了这样一个问题,MyEclipse重新部署项目到Tomcat上时,总是报这样一个错误: E
首先谈一下异常的分类。先看下图: 未检查的异常:派生至Error类和RuntimeException类的所有异常类(
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号