Spark 绑定 http 端口失败
Spark fails to bind http port
我正在尝试将端口 80 绑定到我的 Spark
服务器:
import static spark.Spark.get;
import static spark.Spark.port;
public class Main {
public static void main(String[] args) {
port(80);
get("/hello", (request, response) -> "hello world");
}
}
但由于某种原因,我收到以下错误:
22:51:56.067 [Thread-0] ERROR spark.Spark - ignite failed
java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:298)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:431)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at spark.embeddedserver.jetty.EmbeddedJettyServer.ignite(EmbeddedJettyServer.java:149)
at spark.Service.lambda$init(Service.java:496)
at java.lang.Thread.run(Thread.java:748)
我在我的 OS
中到处搜索是否有任何连接到端口 80 的绑定,但我没有找到。
有什么解决办法吗?
直接绑定到端口 80 可能不是一个好主意。
此端口(任何小于 1024 的端口)需要 root 权限(但 运行宁可作为 root 非常不鼓励),或者一些 capabilities setting。
通常你 运行 Spark 在非特权端口上。如果你确实想将它公开为 Web 连接的默认值,请考虑通过 Web 服务器代理它,例如 nginx 或 apache;无论如何,您可能希望在附近举办其他活动。
我正在尝试将端口 80 绑定到我的 Spark
服务器:
import static spark.Spark.get;
import static spark.Spark.port;
public class Main {
public static void main(String[] args) {
port(80);
get("/hello", (request, response) -> "hello world");
}
}
但由于某种原因,我收到以下错误:
22:51:56.067 [Thread-0] ERROR spark.Spark - ignite failed
java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:298)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:431)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at spark.embeddedserver.jetty.EmbeddedJettyServer.ignite(EmbeddedJettyServer.java:149)
at spark.Service.lambda$init(Service.java:496)
at java.lang.Thread.run(Thread.java:748)
我在我的 OS
中到处搜索是否有任何连接到端口 80 的绑定,但我没有找到。
有什么解决办法吗?
直接绑定到端口 80 可能不是一个好主意。
此端口(任何小于 1024 的端口)需要 root 权限(但 运行宁可作为 root 非常不鼓励),或者一些 capabilities setting。
通常你 运行 Spark 在非特权端口上。如果你确实想将它公开为 Web 连接的默认值,请考虑通过 Web 服务器代理它,例如 nginx 或 apache;无论如何,您可能希望在附近举办其他活动。