如何将 HttpServer 功能添加到 Java 应用程序,必须适用于 Oracle 和 Open JDK

How do I add HttpServer features to Java application, must work for Oracle and Open JDK

我有一个应用程序,目前只能 运行 作为 Gui 应用程序或命令行。我想添加支持,以便它 运行 成为一个服务器,并且可以通过网络浏览器通过另一台计算机进行控制。

所以它将 运行 持续在端口上,我希望用户在浏览器中连接到该端口并查看摘要页面,然后能够通过 http get 请求发起请求。

它需要与 OpenJdk 一起工作,而不仅仅是 Oracle Java,所以我想这会停止使用 com.sun.httpserver。

这是对现有产品的改进,无法将其重新设计为 运行 作为 Servlet 引擎(例如 Jetty 或 Tomcat 中的 servlet,事实上大多数用户将继续使用它Gui 或 cmd 行模式。

我不想重新发明轮子,所以我不想尝试从头开始添加这个基本的 http 支持。

我正在使用 Java 8

有人可以提出一个方法吗?

尝试Spark Java

添加maven pom依赖:

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.6.0</version>
</dependency>

然后您就可以启动简单的网络服务器了。该示例仅显示 get 方法 URI,但所有 HTTP 方法都可用。

import static spark.Spark.*;

public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World");
    }
}

检查它是否正常工作:

http://localhost:4567/hello

当然还有其他解决方案,例如 NanoHttpd — 我见过的最基本的 HTTP 服务器实现。通常用于 android 个应用。