我有一个Java桌面应用程序(jdk8,但我可以升级没有问题),它循环运行并通过
SocketChannel
与其他设备通信。还有一个使用 Node
制作的 Web 应用程序的后端。当后端收到前端的请求时,它会对其进行管理,然后将另一个请求(POST)发送到localhost
中的服务器。
我需要在桌面应用程序中接收最后一个请求。我知道 Java 有像
com.sun.net.httpserver
这样的包,但据我了解,它们并不适合生产或高负载工作。我尝试了Tomcat
,但无法将其嵌入桌面应用程序中。既然最后一个请求发送到了localhost
,那么使用上述包可以吗?我怎样才能做到这一点以及有哪些技术可以实现?
解决方案完全取决于项目要求和个人偏好。
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 应用程序在同一台机器上运行。