Java How to - Spring Hessian Client с SSL
Я пытаюсь использовать SSL-сервис Spring/Java Hessian.
Проблема: Нет, где я мог найти пример, как я могу настроить SSL для передачи моего сертификата клиента:(
Любая помощь здесь наиболее ценится.
Настройка сервера
- С приложением Jetty выставляю гессенский сервис следующим образом.
- Следующее "бронирование" Сервис выставлено на https://super.server/service/booking.
- Здесь, прежде чем запрос достигнет веб-приложения Java, он проходит через веб-сервер, где запрос защищен с помощью SSL. Если он будет передан, то только он будет перенаправлен на хостинг веб-приложений Java после службы Hessian.
@Bean(name = "/booking")
RemoteExporter bookingService() {
HessianServiceExporter exporter = new HessianServiceExporter();
exporter.setService(new CabBookingServiceImpl());
exporter.setServiceInterface( CabBookingService.class );
return exporter;
}
Настройка клиента
- Здесь как-то я должен получить доступ к URL-адресу https, то есть настроить SSL.
- Я знаю, как это сделать для HttpCleint.
- Я также хорошо знаю, что даже Гессиан использует URLConnection. И я уверен, что здесь есть более простой способ зацепить ssl.
@Configuration
public class HessianClient {
@Bean
public HessianProxyFactoryBean hessianInvoker() {
HessianProxyFactoryBean invoker = new HessianProxyFactoryBean();
invoker.setServiceUrl("https://super.server/booking");
invoker.setServiceInterface(CabBookingService.class);
return invoker;
}
}
1 ответ
Решение
- HessianProxyFactory - это та, которая возвращает целевой прокси-сервис.
- HessianProxyFactory имеет метод createHessianConnectionFactory(), возвращающий HessianURLConnectionFactory.
- HessianURLConnectionFactory является целью построения HessianURLConnection (внутренне использует Java URLConnection).
- HessianURLConnectionFactory типа является
decided on runtime
на основе System.property. Ниже приведен пример кода из HessianProxyFactory.class
Class HessianProxyFactory{
protected HessianConnectionFactory createHessianConnectionFactory(){
String className= System.getProperty(HessianConnectionFactory.class.getName());
HessianConnectionFactory factory = null;
try {
if (className != null) {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class<?> cl = Class.forName(className, false, loader);
factory = (HessianConnectionFactory) cl.newInstance();
return factory;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return new HessianURLConnectionFactory();
}
}
- Идея состоит в том, чтобы вернуть Custom HessianURLConnectionFactory, который создает SSL-интегрированные URLConnection.