JMX-соединение с Gemfire через SSL - PullRequest
0 голосов
/ 07 февраля 2019

Я использовал GFSH для запуска локатора, как показано ниже

start locator --name=gemfire_locator --security-properties-file="../config/gfsecurity.properties" --J=-Dgemfire.ssl-enabled-components=all --mcast-port=0 --J=-Dgemfire.jmx-manager-ssl=true

Также запущен сервер

start server --name=server1 --security-properties-file="../config/gfsecurity.properties" --J=-Dgemfire.ssl-enabled-components=all --mcast-port=0 --J=-Dgemfire.jmx-manager-ssl=true

Я пытаюсь подключиться к Gemfire как ClientCache, который отлично работает по SSL.Но когда я подключаюсь как клиент JMX, я получаю ниже ошибку в коде Java, а также Jconsole.

Error: 
Exception in thread "main" java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: non-JRMP server at remote endpoint]
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270)
    at SamplePlugin.main(SamplePlugin.java:101)

Я пропускаю какие-либо другие конфигурации?

Вот мой JAVA_TOOL_OPTIONS:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=true
-Djava.rmi.server.hostname=myhostname

1 Ответ

0 голосов
/ 15 февраля 2019

Вам также необходимо добавить банку geode-core в ваш путь к классу для jvisualvm.Используйте опцию --cp:a.Я бы предложил просто использовать geode-dependencies.jar, поскольку это получит все, что вам может понадобиться.

Причина, по которой это требуется, объясняется немного в комментариях к ContextAwareSSLRMIClientSocketFactory .В основном кажется, что когда RMI использует SSL, необходимые RMIClientSocketFactory экспортируются с сервера клиенту для использования там.В общем, это просто будет SslRMIClientSocketFactory.Но в нашем случае у нас есть фабрика нестандартных сокетов, и поэтому клиент (в данном случае jvisualvm) должен иметь к ней доступ.

...