在Java桌面应用程序中接收http请求

问题描述 投票:0回答:1

我有一个Java桌面应用程序(jdk8,但我可以升级没有问题),它循环运行并通过

SocketChannel
与其他设备通信。还有一个使用
Node
制作的 Web 应用程序的后端。当后端收到前端的请求时,它会对其进行管理,然后将另一个请求(POST)发送到
localhost
中的服务器。

我需要在桌面应用程序中接收最后一个请求。我知道 Java 有像

com.sun.net.httpserver
这样的包,但据我了解,它们并不适合生产或高负载工作。我尝试了
Tomcat
,但无法将其嵌入桌面应用程序中。既然最后一个请求发送到了
localhost
,那么使用上述包可以吗?我怎样才能做到这一点以及有哪些技术可以实现?

java servlets desktop-application
1个回答
0
投票

解决方案完全取决于项目要求和个人偏好

Spring Boot 是一种解决方案,正如人们在评论中提到的那样,尽管它非常强大并且使用非常广泛,但它因成为配置噩梦(对于新用户)而臭名昭著。

如果您想使用轻量级工具包而不是框架,可以尝试Eclipse Vert.x。它非常适合快速设置项目,而无需进行配置的麻烦。最好的起点是入门页面。它帮助我在几分钟内创建了这个基本示例:

public class MainVerticle extends AbstractVerticle implements Handler<HttpServerRequest> {
    @Override
    public void start() throws Exception {
        super.vertx.createHttpServer().requestHandler(this).listen(8888)
                .onSuccess(server -> System.out.println("HTTP server started on port " + server.actualPort()));
    }

    @Override
    public void handle(HttpServerRequest event) {
        String path = event.path();
        if (path.equals("/api/myendpoint")) {
            // Do something
        }
    }
}

不要忘记考虑防火墙。我认为不需要任何端口转发,因为 Node 服务器和 Java 应用程序在同一台机器上运行。

© www.soinside.com 2019 - 2024. All rights reserved.