【问题标题】:jedis - Can't connect to redis after JMS request - access deniedjedis - JMS请求后无法连接到redis - 访问被拒绝
【发布时间】:2018-05-15 19:19:09
【问题描述】:

我使用的语言是 Java (Groovy)。

我正在使用 javax.JMS 通过 JMS WebLogic 队列发送文件。在成功发送 JMS 消息(单独验证)后,我立即从 QueueSession 实例调用 close() 方法,然后从 QueueConnection 实例调用。

在这一切之后,我尝试使用 jedis 连接到 redis(在所有其他情况下都可以完美运行),我立即收到以下错误消息:

java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:585)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1848)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:322)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
at org.apache.commons.pool2.impl.BaseGenericObjectPool.jmxRegister(BaseGenericObjectPool.java:883)
at org.apache.commons.pool2.impl.BaseGenericObjectPool.<init>(BaseGenericObjectPool.java:130)
at org.apache.commons.pool2.impl.GenericObjectPool.<init>(GenericObjectPool.java:107)
at redis.clients.util.Pool.initPool(Pool.java:44)
at redis.clients.util.Pool.<init>(Pool.java:23)
at redis.clients.jedis.JedisPool.<init>(JedisPool.java:185)
at redis.clients.jedis.JedisPool.<init>(JedisPool.java:162)
at redis.clients.jedis.JedisPool.<init>(JedisPool.java:28)
at sun.reflect.GeneratedConstructorAccessor46.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:255)
at com.<mysoftware>.core.Ecosystem.createRedisConnection(Ecosystem.groovy:93)

这就是我调用 new JedisPool(...) 的时候 - 同样,我从来没有遇到过 JedisPool 的问题。 我只有在通过 JMS 队列发送文件后才会遇到这个问题。

我该如何解决这个问题?我看到有人建议在 java.policy 文件中添加一行,但我可以在我的程序中执行此操作吗?我不想在我的软件安装过程中添加新的非常具体的步骤。

【问题讨论】:

    标签: java redis jms jedis mbeans


    【解决方案1】:

    你检查过jms使用的端口号吗,jms使用的端口号可能在redis上被阻塞了。如果您使用的是基于 unix 的机器,那么您可以使用 telnet 命令简单地检查它。例如:

    telnet RedisInstance Portnumber
    

    【讨论】:

    • 很遗憾,这不是端口冲突。他们使用两个不同的端口。
    猜你喜欢
    • 2021-10-22
    • 2019-04-04
    • 1970-01-01
    • 2017-12-27
    • 2017-10-05
    • 2019-02-04
    • 2021-09-18
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多