创建简单 Java HttpServer 的方法

Posted

技术标签:

【中文标题】创建简单 Java HttpServer 的方法【英文标题】:Way to create a simple Java HttpServer 【发布时间】:2021-12-14 21:55:53 【问题描述】:

我在 Tomcat 上有一个带有 Spring MVC 的旧应用程序,我想在其中启动另一个端口上的服务器。

对于这种情况,我通常使用方便的Javalin。但在这种情况下,它不适合我,因为它是使用加载 javax.servlet-api 3.1 的 Jetty 加载的,但应用程序使用 javax.servlet-api 3.0

任何人都可以为 HttpServer 建议一个类似的框架或方便的模式(以免为每个请求创建一个处理程序)。

在 Javalin 中创建服务器的示例:

public MyServer() 
    Javalin app = Javalin.create (). Start (7000);
    app.get ("/", ctx -> ctx.result ("Hello World"));
    

【问题讨论】:

Servlet 3.1 向上兼容任何 Servlet 3.0 代码。在 Servlet 3.1 容器中运行 Servlet 3.0 应用程序究竟关心什么? 仅供参考,有关 Servlet 3.0 和 3.1 之间变化的讨论,请参阅 IBM.com 上的这两个帖子:behavior changes 和 features。 Java 18 带来了一个内置的简单网络服务器。见JEP 408: Simple Web Server。抢先体验available now。我不知道这是否满足您的需求。而且这个网络服务器打算以任何严肃的方式在生产中使用:“提供功能丰富的或商业级的服务器不是目标。存在更好的选择……” @BasilBourque 基本上,问题在于我们有多个服务器用于不同的区域,具有不同的 gradle 配置。这可能很多。 您可能想了解12factor.net上的不同服务器或区域没有不同的构建环境 【参考方案1】:

你可以使用 Vert.x

HttpServer server = Vertx.vertx().createHttpServer();
server.requestHandler(new Handler<HttpServerRequest>() 
  public void handle(HttpServerRequest request) 
    request.response.end("Hello Vert.x");
  
);
System.out.println("server is running on http://localhost:9090/");
server.listen(9090);

【讨论】:

以上是关于创建简单 Java HttpServer 的方法的主要内容,如果未能解决你的问题,请参考以下文章

利用Java手写简单的httpserver

Eclipse 无法识别 com.sun.net.httpserver.HttpServer 包

使用Java实现简单的Http服务器

如何开发自己的HttpServer-NanoHttpd源码解读

java Httpserver 传递过来的json里面的汉字 接收到的每个汉字对应一个问号“?” 请问该如何解决这个问题

Thread-Pre-Message设计模式