如何在专用网络中部署 Java Web 服务

Posted

技术标签:

【中文标题】如何在专用网络中部署 Java Web 服务【英文标题】:How to Deploy a Java Web Service in a Private Network 【发布时间】:2020-09-08 14:17:57 【问题描述】:

我能够使用 SpringBoot 创建一个 JAVA Rest API Web 服务。如何部署它,不仅我的本地主机可以访问它,而且私有 LAN 中的其他计算机也可以访问它。

我不想在外面正式发布它。 Glassfish 是用于此目的的工具吗?

我想要一个类似的端点

 https://privatewebservice.net/api/

在其他人可以使用的专用网络中。

谢谢。

【问题讨论】:

如果您使用服务器并且与其他计算机在同一网络局域网中,他们可以访问您的https://localhost:port/api/,只需将localhost替换为您当前的ip adress @ZINEMahmoud 澄清一下,我们指的是什么服务器,Tomcat 服务器? 在@noogui下方查看我的评论 【参考方案1】:

按照这个步骤:

1- 生成 Spring-boot 项目 API 的 war 文件 - see here how to do

2- 部署到tomcat服务器see here how to do

3- 将您的localhost 替换为您的@adress ip(服务器所在位置和项目部署位置)

【讨论】:

【参考方案2】:

它需要运行一个 a servlet 容器(又名 Web 服务器)。有许多; Jetty、Tomcat、Glassfish 等。该 servlet 容器将启动并托管您的应用程序,并通过其端口使其可用。

您可以在 LAN 上可见的任何物理机或虚拟机上运行此过程。如果您的 LAN 可以看到它,您甚至可以使用您自己的机器来执行此操作(除非防火墙/网络规则阻止流量)。

要从您的计算机上将其提供给您的 LAN,请找到您计算机的内部 LAN IP 地址(在 Linux 上运行 ifconfig 或在 Windows 上运行 ipconfig),然后尝试从浏览器通过该 IP 访问应用程序。如果您 LAN 上的其他机器可以看到您的机器,那么它们也应该能够通过该 IP 地址访问它(您的机器可能还会有一个内部 DNS 名称,如果您的 IP 地址发生变化,使用它会更清晰)。

显然这只对开发和测试有好处。通常,对于您公司的内部托管应用程序,您会在某个地方运行一台机器,您可以部署该应用程序以使其可供您 LAN 上的其他人访问。

值得注意的是,Spring Boot 默认带有一个嵌入式服务器/servlet 容器。默认情况下这是 Tomcat,但可以通过配置和更改 maven POM 文件或 Gradle 构建文件中的默认依赖项来更改为 Jetty。除非您有特定的理由更改它,否则默认值会很好。

要使用此嵌入式服务器,请使用 Maven 或 Gradle Spring Boot plugins 之一,这将提供一组任务,这些任务可用于为将在嵌入式服务器上运行应用程序的应用程序构建可执行的 Java jar 文件,以及其中的应用程序。然后可以使用 java -jar myapp.jar

之类的东西运行它

从技术上讲,这可能是部署应用程序的最简单方法。对您要部署的机器的唯一主要要求是成为 Java 的兼容版本。尽管我建议将该应用程序包装在已经具有 Java 的 Docker 映像中,并使用 Docker 将 docker 映像作为容器运行。这意味着您的应用程序的依赖项(包括 Java 及其特定版本)位于 docker 映像/容器中,也意味着将运行该应用程序的机器可以有效地托管许多不同的应用程序资源(RAM、CPU 等),每个都管理它们的自己的依赖。托管应用程序的机器只需要在其上安装 Docker,并且不会受到任何其他应用程序依赖项的污染。

【讨论】:

【参考方案3】:

将其余部分部署在您的 tomcat 服务器上的端口 80 和其他 PC 上的专用 LAN 更新 host 文件为 privatewebservice.net 以指向您 PC 在 LAN 中的 IP

【讨论】:

谢谢你的建议,我不想碰别人的电脑。我只想在私有网络中像应用服务器(Glassfish)一样使用,并将端点共享给同事。

以上是关于如何在专用网络中部署 Java Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

我可以构建一个 Web 应用程序,以便将其部署到云或专用服务器/VPS 吗?如何?

专用5G网络的7种部署方案

如何将Java Web项目部署到服务器上

需要有关如何在多个专用服务器中创建部署 spring-cloud-dataflow 应用程序以创建流的建议

新开发的Java项目,如何部署到服务器上。

如何统一使用光子网络连接到我们自己的专用服务器?(自托管)