【问题标题】:How to get Javalin's Jetty http server to bind/listen on a specific address/port?如何让 Javalin 的 Jetty http 服务器绑定/监听特定地址/端口?
【发布时间】:2019-02-04 04:40:58
【问题描述】:
使用Javalin.create().port(portNumber)设置监听端口,但不清楚如何设置监听/绑定地址。
【问题讨论】:
标签:
java
kotlin
jetty
embedded-jetty
javalin
【解决方案1】:
发现可以自己创建 Jetty Server 实例并进行配置。在 Kotlin 中:
val port = Integer.parseInt(System.getProperty("PORT", "8080"))
val jettyServer = JettyServerUtil.defaultServer()
jettyServer.apply {
connectors = arrayOf(ServerConnector(jettyServer).apply {
this.host = System.getProperty("HOST", "0.0.0.0")
this.port = port
})
}
val app = Javalin.create()
.port(port)
.server { jettyServer }
.start()
【解决方案2】:
下面是如何在 Java 中做同样的事情:
int port = Integer.parseInt(System.getProperty("PORT", "8080"))
org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server();
ServerConnector connector = new ServerConnector(server);
connector.setHost(System.getProperty("HOST", "0.0.0.0"));
connector.setPort(port);
server.setConnectors(new ServerConnector[] { connector });
Javalin app = Javalin.create(config -> {
config.server(() -> server);
}).start(port);
参考:https://github.com/tipsy/javalin/issues/138