首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java16升级后的“需要Jedis NOAUTH身份验证”-spam

Java16升级后的“需要Jedis NOAUTH身份验证”-spam
EN

Stack Overflow用户
提问于 2021-07-18 23:25:24
回答 1查看 273关注 0票数 0

最近,由于客户的要求,我们将我们所有的系统迁移到了java16。所以这是一个不可改变的决定。

现在,在升级之后,我们的jedis连接开始向终端发送垃圾邮件,错误代码如下:

代码语言:javascript
复制
[17:17:31 ERROR]: [redis.clients.jedis.JedisFactory] Error while validating pooled Jedis object.
redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
        at redis.clients.jedis.Protocol.processError(Protocol.java:135) ~[?:?]
        at redis.clients.jedis.Protocol.process(Protocol.java:169) ~[?:?]
        at redis.clients.jedis.Protocol.read(Protocol.java:223) ~[?:?]
        at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:352) ~[?:?]
        at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:270) ~[?:?]
        at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:379) ~[?:?]
        at redis.clients.jedis.JedisFactory.validateObject(JedisFactory.java:214) ~[?:?]
        at org.apache.commons.pool2.impl.GenericObjectPool.evict(GenericObjectPool.java:810) ~[?:?]
        at org.apache.commons.pool2.impl.BaseGenericObjectPool$Evictor.run(BaseGenericObjectPool.java:1160) ~[?:?]
        at org.apache.commons.pool2.impl.EvictionTimer$WeakRunner.run(EvictionTimer.java:213) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[?:?]
        at java.lang.Thread.run(Thread.java:831) [?:?]

系统信息:

Debian buster (10) Java版本: 16.0.1 Jedis版本:4.0.0-快照(也尝试过3.6.x和3.5.x)远程服务器的Redis版本: 5.0.3 Commons pool: 2.9.0 (也尝试过2.5.0)

连接代码:

代码语言:javascript
复制
Jedis jedis = null;
try {
    jedisPool = new JedisPool("XXX.XXX.XXX.XXX", XXX, 10000);
    jedis = MasterMind.getInstance().getJedisPool().getResource();
    jedis.auth("<SuperSafePass>");
    jedis.exists("test");
    Bukkit.getLogger().info("Connection build");
} catch (Exception e) {
    e.printStackTrace();
    Bukkit.getLogger().warning("Connection failure");
} finally {
    if (jedis != null)
        jedis.close();
}

如您所见,我的身份验证是正确的。建立连接。大约30秒后,它开始向错误发送垃圾邮件(大约每30秒发送10次)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 07:35:54

如果Redis需要口令,则必须在创建JedisPool时使用以下构造函数之一设置口令

代码语言:javascript
复制
public JedisPool(final GenericObjectPoolConfig poolConfig, final String host, int port,
                 int timeout, final String password) { ... }

手动身份验证使用

代码语言:javascript
复制
jedis.auth(...);

在这种情况下不再需要。

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

https://stackoverflow.com/questions/68430511

复制
相关文章

相似问题

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