Поскольку я перевожу старую архитектуру на новое решение Spring Boot, я выполняю вызовы через @ RestController.
Теперь FE должен передать данные моему @RestController, который его обрабатывает, и сделать старый RPC-вызов старому SoapWs.
Rpc Ws-Endpoint использует Https и нуждается в сертификате.
Поэтому я положил все в хранилище ключей и соответственно установил свойства System.Properties.
Теперь интересная часть.
Если я определю свойства системы в основной весенней загрузке, класс запуска приложения:
@Component
public class ApplicationStartup
implements ApplicationListener<ApplicationReadyEvent> {
@Override
public void onApplicationEvent(final ApplicationReadyEvent event) {
System.setProperty("javax.net.ssl.keyStore","/cert/clientkeystore.jks");
System.setProperty("javax.net.ssl.trustStore","/cert/clientkeystore.jks");
System.setProperty("javax.net.debug","ssl");
System.setProperty("javax.net.ssl.keyStorePassword","changeit");
System.setProperty("javax.net.ssl.trustStorePassword","changeit");
}
Я вижу их в @RestController. Я проверил их через метод System.getProperties (...), и они находятся там, где они должны быть.
Но вызов remote-rpc ws дает сбой Handshake.
Если установить переменные в конструкторе @RestController .... это работает!
Это единственное изменение.
Я удивлен, никаких подсказок.