org.apache.activemq.util.IntrospectionSupport 无法访问 sun.security.ssl.SSLSocketImpl

问题描述 投票:0回答:1

我想将 gitlab-runner 上运行的回归测试中的一些消息推送到 ActiveMQ Classic。我在集群上拥有所有必要的规则。我按照这个例子,但我仍然收到异常。我正在使用 Java 版本 Zulu17.34+19-CA (build 17.0.3+7-LTS) 和 org.apache.activemq.activemq-pool 5.15.1。我的 Java 客户端配置如下所示:

  ActiveMQConnectionFactory connectionFactory = new 
  ActiveMQConnectionFactory(prop("activeMQUrl"));
  connectionFactory.setUserName(prop("activeMQUser"));
  connectionFactory.setPassword(prop("activeMQPassword"));

  PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
  pooledConnectionFactory.setConnectionFactory(connectionFactory);
  pooledConnectionFactory.setMaxConnections(10);
  SimpleActiveMqProducer activeMq =
      new SimpleActiveMqProducer(pooledConnectionFactory,
          prop("activeMQUser"),
          prop("activeMQPassword"));
  activeMq
      .toQueue(prop("myQueue"))
      .send(objectToJson(myMessage))

特性:

myQueue=Consumer.my-consumer
activeMQUrl=failover:(nio+ssl://some.box.on.aws1:61617,nio+ssl://some.box.on.aws2:61617)?randomize=false&jms.optimizeAcknowledge=true&maxReconnectDelay=150&startupMaxReconnectAttempts=5
activeMQUser=root
activeMQPassword=root

错误:

15:39:20.861 [ActiveMQ Task-1] ERROR - Could not set property host on SSLSocket[hostname=null, port=0, Session(1689349160860|SSL_NULL_WITH_NULL_NULL)]
java.lang.IllegalAccessException: class org.apache.activemq.util.IntrospectionSupport cannot access class sun.security.ssl.SSLSocketImpl (in module java.base) because module java.base does not export sun.security.ssl to unnamed module @2dc9b0f5
    at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown Source)
    at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.activemq.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:181)
    at org.apache.activemq.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:155)
    at org.apache.activemq.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:140)
    at org.apache.activemq.transport.tcp.SslTransport.(SslTransport.java:72)
    at org.apache.activemq.transport.tcp.SslTransportFactory.createTransport(SslTransportFactory.java:122)
    at org.apache.activemq.transport.TransportFactory.doCompositeConnect(TransportFactory.java:138)
    at org.apache.activemq.transport.TransportFactory.compositeConnect(TransportFactory.java:91)
    at org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:1011)
    at org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:148)
    at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
    at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

有人可以帮我吗?

java activemq-classic
1个回答
3
投票

您应该使用最新的 ActiveMQ Classic 客户端依赖项,目前为 5.18.2。版本 5.15.1(您现在正在使用的)大约在 6 年前发布,即 2017 年 9 月。我不相信它支持在 JDK 17 上运行。

© www.soinside.com 2019 - 2024. All rights reserved.