Java中支持SSL的Akka HTTP服务器 - 如何创建配置?

时间:2016-03-24 15:53:56

标签: java ssl akka tls1.2 akka-http

我正在尝试创建一个支持SSL的Akka HTTP服务器。

我知道scala Akka HTTP 2.0 to use SSL (HTTPS)的这个问题,我正在尝试将其用于Java代码,但我迷路了。

DSL akka.http.javadsl.Http类与Java不同,需要akka.actor.ExtendedActorSystem,当我尝试为它创建实例时,我需要使用com.typesafe.config创建应用程序配置。配置类,我无法弄清楚如何实例化以及放入什么内容。

有没有更简单的方法?或者我可以用来创建所有必需配置的任何类?

这是代码的片段:

    // boot up server using the route as defined below
    final ActorSystem system = ActorSystem.create();
    final ActorMaterializer materializer = ActorMaterializer.create(system);

    // Run the server bound to the local machine IP
    String hostAddress = InetAddress.getLocalHost().getHostAddress();

    // No implementation here?????
    Config applicationConfig = new Config() {
    }
    ExtendedActorSystem extendedActorSystem = new ActorSystemImpl("HttpProxy", applicationConfig, ClassLoader.getSystemClassLoader(), Option.empty());
    // todo: missing handler, settings, httpsContext and log
    Flow<HttpRequest, HttpResponse, ?> handler;
    ServerSettings settings;
    akka.japi.Option<HttpsContext> httpsContext;
    LoggingAdapter log;
    new Http(extendedActorSystem).bindAndHandle(handler, hostAddress, PORT, settings, httpsContext, log, materializer);

    System.out.println("Starting server on " + hostAddress + ":" + PORT);

    // The server would stop if carriage return is entered in the system cosole
    System.out.println("Type RETURN to exit");
    System.in.read();
    system.shutdown();

1 个答案:

答案 0 :(得分:1)

它应该是这样的:

//使用下面定义的路由启动服务器

// Run the server bound to the local machine IP
String hostAddress = InetAddress.getLocalHost().getHostAddress();

// No implementation here?????
Config applicationConfig = ConfigFactory.load();
ActorSystem system =  ActorSystem.create("HttpProxy", applicationConfig);
final ActorMaterializer materializer = ActorMaterializer.create(system);


// todo: missing handler, settings, httpsContext and log
Flow<HttpRequest, HttpResponse, ?> handler;
ServerSettings settings;
akka.japi.Option<HttpsContext> httpsContext;
LoggingAdapter log;
Http.get(system).bindAndHandle(handler, hostAddress, 9000, settings, httpsContext, log, materializer);

System.out.println("Starting server on " + hostAddress + ":" + 9000);