Java 如何 - 使用 SSL 的 Spring Caucho Hessian 客户端

标签 java spring ssl certificate caucho

我正在尝试使用 SSL 保护的 Spring/Java Hessian 服务。

问题: 我找不到示例如何设置 SSL 来传递我的客户端证书:(

非常感谢此处的任何帮助。

服务器设置

  1. 使用 Jetty 应用程序公开 Hessian 服务,如下所示。
  2. 以下“预订”服务在 https://super.server/service/booking 上公开.
  3. 在请求到达 Java Web 应用程序之前,它会通过一个 Web 服务器,在该服务器上请求使用 SSL 进行保护。 如果通过,则仅将其转发到 Hessian 服务之后的 Java Web 应用程序托管。
    @Bean(name = "/booking") 
    RemoteExporter bookingService() {
        HessianServiceExporter exporter = new HessianServiceExporter();
        exporter.setService(new CabBookingServiceImpl());
        exporter.setServiceInterface( CabBookingService.class );
        return exporter;
    }

客户端设置

  1. 在这里我必须以某种方式访问​​ https URL,即设置 SSL。
  2. 我知道如何为 HttpCleint 做这件事。
  3. 我在内部也知道甚至 Hessian 也在使用 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 是返回目标代理服务的那个。
  2. HessianProxyFactory 有方法 createHessianConnectionFactory() 返回 HessianURLConnectionFactory。
  3. HessianURLConnectionFactory 是构建目标 HessianURLConnection(内部使用 Java URLConnection)。
  4. HessianURLConnectionFactory 类型是基于 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. 想法是返回构建 SSL 集成 URLConnection 的自定义 HessianURLConnectionFactory。

关于Java 如何 - 使用 SSL 的 Spring Caucho Hessian 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133647/

相关文章:

java - JSON:反序列化子类型

azure - 如何使用流量管理器后面的多个应用服务与自定义域设置 SSL?

ssl - http keep alive 和 ssl

c# - 使用相同的证书进行 SSL 通信以及对 EXE 和 DLL 进行签名

java - 使用评估顺序来检查空值是不好的做法吗?

java - request.getParameter 返回空值 : servlet

java - 查找整数和任何操作数的组合以获得固定结果的算法

java - 如何显示特定字段使用ebean关系

spring - JavaMailSender 返回空指针异常

java - SseEmitter 和 jackson 没有适合类 java.lang.String 的转换器