0 0

Jedis failed java.lang.NoSuchMethodError:org.apache.commons.pool.impl.GenericObj5

背景:向redis写入字符串方法,采用jedis方法。一般正常情况下没有问题,该问题出现的概率非常小,极低几个月一次吧,不知道原因无法模拟出来。方法段:

public boolean setData(String key,String value) {
    	ShardedJedis jedis =null;
    	boolean borrowOrOprSuccess = true;
        try {
        	jedis=shardedJedisPool.getResource();
        	jedis.set(key,value);
        	return true;
        } catch (Exception e) {
            e.printStackTrace();
            if(jedis!=null)
            	shardedJedisPool.returnBrokenResource(jedis);
            logger.info(Utils.getStackMsg(e));
            return false;
        }
        finally{
        	if (borrowOrOprSuccess){
        		shardedJedisPool.returnResource(jedis);
        	}
        	else{
        		logger.info("jedis==null;shardedJedisPool.getResource()获取连接资源失败!");
        	}
        }
    }

 目前没有多线程并发的场景,一般情况下正常无误。有的时候导致 org.apache.commons.pool.impl.GenericObjectPool.invalidateObject(Ljava/lang/Object;)V的错误。这个方法体出现异常catch不住,比exception还要高的错误,找不到方法,从jar里看,的确没有这个方法,是否是版本导致的错误?

 

请有过类似的经验的高手出来解答一下,什么时候去invalidateObject方法,这样就知道什么时候发生这个事件了,就能找到根本的原因。

2014年12月29日 10:50

1个答案 按时间排序 按投票排序

0 0

试试一个高版本的commonds-pool

2014年12月29日 13:38

相关推荐

    java.lang.NoSuchMethodError异常处理要点.doc

    在Java编程中,`java.lang.NoSuchMethodError`异常是一个运行时异常,通常发生在程序试图执行一个不存在的方法时。这个异常的出现通常意味着编译时和运行时的类版本不匹配,或者是在编译期间存在而运行时不存在的...

    jedis-3.3.0.jar

    java.lang.NoSuchMethodError: redis.clients.jedis.ScanResult.getStringCursor()Ljava/lang/String; at org.crazycake.shiro.WorkAloneRedisManager.keys(WorkAloneRedisManager.java:149) at org.crazycake....

    commons-pool.jar,jedis-2.4.2.jar

    <groupId>org.apache.commons <artifactId>commons-pool2 <version>2.4.2 ``` 然后,在Java代码中初始化Jedis实例并设置连接池配置: ```java import redis.clients.jedis.JedisPool; import redis.clients....

    jedis-2.1.0.jar+commons-pool-1.6.jar

    Apache Commons Pool是Apache软件基金会的一个项目,它提供了一个通用的对象池接口和实现,可以用于创建任何可池化的对象。在Jedis中,Commons Pool库被用来管理Redis连接的池化。通过连接池,应用程序可以在需要时...

    jedis-2.9.0.jar

    jedis.auth("192.168akeiekekKKDJEikekEJkeu^&&%%$&#*($#&^$&^#$*((BNGGyjekeuh{}jejekekej:"); ping(jedis); hashBytesSave(jedis); hashBytesGet(jedis); // ListCommandsTest jedis.close();...

    jedis-3.2.0.jar + commons-pool2-2.6.2.jar

    标题中的"jedis-3.2.0.jar + commons-pool2-2.6.2.jar"提到了两个关键的Java库:Jedis和Apache Commons Pool2。Jedis是Java编程语言中广泛使用的Redis客户端,而Apache Commons Pool2则是一个对象池实现,用于有效地...

    jedis-2.9.0.jar和commons-pool2-2.6.0.jar下载(jedis连接redis数据库)

    **标题与描述解析** 标题"jedis-2.9.0.jar和commons-pool2-2.6.0.jar下载...通过理解和正确使用Jedis及Apache Commons Pool,Java开发者可以高效地与Redis数据库进行交互,实现数据存储、检索和缓存等多种功能。

    jedis-3.3.0.jar文件

    总结来说,"jedis-3.3.0.jar"和"commons-pool2-2.9.0.jar"的结合使用,为Java开发者提供了高效、稳定的Redis连接和资源管理方案,通过Jedis的API可以便捷地操作Redis,而Apache Commons Pool 2则确保了连接资源的...

    redis缓存需要的jar commons-pool.jar jedis-1.5.2.jar

    在Java开发中,为了与Redis进行交互,通常需要引入相关的Java库,如`commons-pool.jar`和`jedis-1.5.2.jar`。 `commons-pool.jar`是Apache Commons的一个组件,全称为Apache Commons Pool,它提供了一种对象池化...

    jedis-2.7.0.jar和commons-pool2-2.3.jar

    commons-pool2-2.3.jar commons-pool2.jar是一个十分常用的jar文件,commons-pool2.jar文件适用于java开发中的与连接池进行连接部分使用,如果您缺少这个jar文件马上下载commons-pool2.jar吧

    jedis-2.9.0.jar及连接池分享

    Apache Commons Pool 2是Apache软件基金会提供的一个通用对象池库,用于管理和复用对象,包括Jedis连接。在这个案例中,commons-pool2-2.4.2.jar是Jedis连接池的依赖,它为Jedis提供了一个连接管理框架,确保高效地...

    jedis-2.9.0.jar+commons-pool2-2.4.2.jar

    `commons-pool2-2.4.2.jar`是Apache Commons Pool的第2版,这是一个通用的对象池服务。对象池设计的目的是减少创建和销毁对象的开销,特别是在频繁创建和销毁时。在Redis连接池中,它被用来管理Jedis实例,避免了...

    jedis-2.9.0.jar+commons-pool2-2.4.3.jar

    import org.apache.commons.pool2.impl.GenericObjectPoolConfig; public class RedisClient { private JedisPool pool; public RedisClient(String host, int port) { GenericObjectPoolConfig config = new ...

    jedis-2.8.0.jar 、jedis-2.1.0.jar

    jedis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠 edis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠 jedis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠 jedis-2.8.0.jar 、jedis-2.1.0.jar 资源可靠

    jedis-2.1.0.jar commons-pool-1.5.4.jar

    标题中的"jedis-2.1.0.jar"和"commons-pool-1.5.4.jar"分别指的是两个Java库文件,它们是用于在Java应用程序中与Redis内存数据存储进行交互的重要工具。Redis是一个高性能的键值数据库,广泛应用于缓存、消息中间件...

    jedis-2.9.0+commons-pool2-2.4.2redis依赖包

    import org.apache.commons.pool2.impl.GenericObjectPoolConfig; ``` 2. 创建JedisPoolConfig配置对象: ```java GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig....

    jedis-2.6.2.zip

    此资源为Java连接redis的工具...注意点二:JedisPoolConfig 连接池 引用的是org.apache.commons.pool1.impl.GenericObjectPoolConfig;部分功能没有; 正确重新引用 org.apache.commons.pool2.jar。 详细请阅览相关资料

    jedis-2.8.0.jar

    jedis-2.8.0.jar

Global site tag (gtag.js) - Google Analytics