Что у меня есть:
Простое приложение Springboot, которое печатает «Hello World» при открытии через браузер. Буквально один контроллер и пустой основной класс.
начальные параметры (параметры виртуальной машины):
Код: Выделить всё
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.rmi.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.registry.ssl=false
-Dcom.sun.management.jmxremote.ssl.need.client.auth=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=127.0.0.1
-Djava.rmi.server.host=127.0.0.1
Также , я могу использовать синтаксис "service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi".
Это работает.Следующий шаг: я хочу включить SSL:
создание ключей с помощью этого документа: https://unix.stackexchange.com/questions/347116/how-to -create-keystore-and-truststore-using-self-signed-certificate
Изменение начальных параметров на
Код: Выделить всё
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.rmi.port=1234
-Dcom.sun.management.jmxremote.registry.ssl=true
-Dcom.sun.management.jmxremote.authenticate=false
-Djavax.net.ssl.keyStore=cert/server.keystore
-Djavax.net.ssl.keyStorePassword=qweasd
-Djavax.net.ssl.trustStore=cert/server.truststore
-Djavax.net.ssl.trustStorePassword=qweasd
Код: Выделить всё
jconsole -debug -J-Djavax.net.ssl.trustStore=client.truststore -J-Djavax.net.ssl.trustStorePassword=qweasd localhost:1234
Следующим шагом я хочу подключиться к этому приложению локально, используя «< Strong>service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi".
Получается следующая ошибка:
Код: Выделить всё
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: non-JRMP server at remote endpoint]
at java.management.rmi/javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:370)
at java.management/javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270)
at jdk.jconsole/sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:357)
at jdk.jconsole/sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313)
at jdk.jconsole/sun.tools.jconsole.VMPanel$2.run(VMPanel.java:296)
Caused by: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: non-JRMP server at remote endpoint]
at jdk.naming.rmi/com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:138)
at java.naming/com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:220)
at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
at java.management.rmi/javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1839)
at java.management.rmi/javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1813)
at java.management.rmi/javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:302)
... 4 more
Caused by: java.rmi.ConnectIOException: non-JRMP server at remote endpoint
at java.rmi/sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:252)
at java.rmi/sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:204)
at java.rmi/sun.rmi.server.UnicastRef.newCall(UnicastRef.java:344)
at java.rmi/sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:116)
at jdk.naming.rmi/com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:134)
... 9 more
Как должен выглядеть синтаксис?
В конце я хочу закрепить это приложение, опубликовать его в GCP и установить то же соединение, поэтому я предполагаю, что это должно быть «service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi». .
Но сначала хочется, чтобы это работало локально. Любая помощь?
Я пробовал:
Добавить эти параметры в SSL-соединение
Код: Выделить всё
-Djava.rmi.server.hostname=localhost
-Djava.rmi.server.host=localhost
-Dcom.sun.management.jmxremote.local.only=false
https://docs.oracle.com/javadb/10.10.1. ... wdssl.html
Поиск в Интернете, но большинство документов, которые я нашел, используют синтаксис «localhost:port» или не используют SSL.
Чего я ожидаю:
Используйте Jconsole для подключения к моему приложению, над которым работаете Кластер ГКЕ. Ему нужен SSL.
Изменить: я понял, как подключиться к док-приложению, размещенному на GCP, с использованием SSL-шифрования. Я использовал синтаксис хост:порт, поэтому думаю, что весь вопрос больше не нужен. Закрытие
Подробнее здесь: https://stackoverflow.com/questions/787 ... rough-jndi