Java How to - Spring Hessian Client с SSL

Я пытаюсь использовать SSL-сервис Spring/Java Hessian.

Проблема: Нет, где я мог найти пример, как я могу настроить SSL для передачи моего сертификата клиента:(

Любая помощь здесь наиболее ценится.

Настройка сервера

  1. С приложением Jetty выставляю гессенский сервис следующим образом.
  2. Следующее "бронирование" Сервис выставлено на https://super.server/service/booking.
  3. Здесь, прежде чем запрос достигнет веб-приложения Java, он проходит через веб-сервер, где запрос защищен с помощью SSL. Если он будет передан, то только он будет перенаправлен на хостинг веб-приложений Java после службы Hessian.
    @Bean(name = "/booking") 
    RemoteExporter bookingService() {
        HessianServiceExporter exporter = new HessianServiceExporter();
        exporter.setService(new CabBookingServiceImpl());
        exporter.setServiceInterface( CabBookingService.class );
        return exporter;
    }

Настройка клиента

  1. Здесь как-то я должен получить доступ к URL-адресу https, то есть настроить SSL.
  2. Я знаю, как это сделать для HttpCleint.
  3. Я также хорошо знаю, что даже Гессиан использует 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 ответ

Решение
  1. HessianProxyFactory - это та, которая возвращает целевой прокси-сервис.
  2. HessianProxyFactory имеет метод createHessianConnectionFactory(), возвращающий HessianURLConnectionFactory.
  3. HessianURLConnectionFactory является целью построения HessianURLConnection (внутренне использует Java URLConnection).
  4. 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();
    }
}
  1. Идея состоит в том, чтобы вернуть Custom HessianURLConnectionFactory, который создает SSL-интегрированные URLConnection.
Другие вопросы по тегам