如何配置与Spring集成的嵌入式Tomcat监听IP地址的请求,除了localhost?


23

我试图运行弹簧指南中的示例: Building a RESTful Web Service

如果我打开localhost:8080/greeting,它会很好用。

但它不能使连接,如果我打开其中192.168.1.111:8080/greeting,或140.112.134.22:8080/greeting代替,尽管这两个IP地址实际上是由我在互联网上的计算机使用。

有人可以建议我如何在Spring中配置嵌入式Tomcat以接受除本地主机(即127.0.0.1)之外的其他IP地址上的HTTP请求吗?

谢谢! :)

  0

如果您只是按照您在Building Web Services上发布的教程链接进行操作,那么您的Web Service不会在嵌入式Tomcat或任何Web应用程序服务器上运行。它运行在一个主要方法的独立Java应用程序上。您需要创建一个WAR文件并在tomcat服务器中进行部署。 30 5月. 142014-05-30 03:11:20

  0

shazin可能击中了但是有很好的诊断方法可以解决这类问题。为什么不使用netstat工具来查看您是否在端口8080上发布服务?如果是,请尝试telnet到IP和端口。这些是Web开发人员的基本工具 - 您需要熟悉。它们可以在Window和Linux上使用。 30 5月. 142014-05-30 06:36:31

+5

@ user3467488,你们都不正确。他链接的教程是使用Spring Boot,它允许您使用嵌入式应用服务器创建可执行JAR等等。默认是Tomcat,但您可以通过简单包括Jetty JAR而不是Tomcat JAR来将其交换为Jetty。这是一个非常有趣的平台,并且提供了一个快速的方式将Spring应用程序运行在一起。你可以选择将你的Spring Boot应用程序变成一个WAR,但是他所链接的教程并没有涉及到。 30 5月. 142014-05-30 11:11:28

39

为了指定你想让Tomcat绑定过的IP,我相信你可以简单地添加以下到您的application.properties:

server.address=<your_ip> 
server.port=<your_port> 

与你想要的IP地址更换<your_ip>听。这和其他基本属性可以在Spring Boot Reference Guide, Appendix A中找到。

配置嵌入式Tomcat的另一种方式是通过实现EmbeddedServletContainerCustomizer接口来创建代码中的自定义配置器。您可以在Spring Boot Reference Guide, Section 55.5-55.8中阅读更多关于此的内容。

+4

默认情况下,tomcat将绑定到0.0.0.0并侦听所有可用的地址。如果其他地址或端口不工作(如防火墙),则必须对其进行环境限制。 02 6月. 142014-06-02 06:19:40

  0

@CodeChimp感谢您的建议!对于这个[Spring指南](https://spring.io/guides/gs/rest-service/),我们要修改的“application.properties”文件在哪里? 12 6月. 142014-06-12 18:02:48

  0

我认为在Spring Boot中,它会尝试首先查看JAR,然后在类路径中,然后在本地目录中运行应用程序。文档/参考指南进入。 12 6月. 142014-06-12 20:04:59

  0

此链接解释了如何加载弹簧引导属性。有几个地方可以将配置从命令行参数传递到外部yml或属性文件。如果指定了此application.properties的位置,那么https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html 15 2月. 162016-02-15 14:29:56

+3

本来就很棒。我已经在Spring文档中阅读了很多关于application.properties的知识。但他们没有提到简单的文本 - 将这个application.properties放在你的应用程序根目录或 18 3月. 162016-03-18 21:00:23

  0

看到它可以放在你的应用程序的src/main/resources中的某个地方。我改变了那里的港口。我重新启动启动cli后,它适用于端口。将不得不尝试ip地址。 20 3月. 162016-03-20 04:40:59

  0

你也可以在你的application.yml中指定它作为服务器:然后作为地址:在那之下。我把它放在环境中:/ development:部分。 30 6月. 172017-06-30 17:54:39