我有一个 spring boot 项目。我将我的项目作为 jar 远程部署在 tomcat 上。我在远程服务器上运行的用于部署 jar 的脚本:
#!/bin/sh
/usr/local/java8/jdk1.8.0_71/bin/java -jar -Duser.timezone=Europe/Athens example.jar> log.out
整个项目运行良好,但有时 Web 服务会自动调用,而无需我做任何事情或让调度程序调用它们。
例如我的 Controller 类中的一个方法
@RequestMapping(value = "/heartbeat")
public ResponseEntity<String> heartbeat() {
Log.info("heartbeat");
return new ResponseEntity<>("success", org.springframework.http.HttpStatus.OK);
}
当远程部署项目时,我可以从日志中看到每分钟都会调用此方法,即使没有人调用它:
02/05/19 15:23:22.721 INFO http-nio-8044-exec-9 TestController:238 - heartbeat
02/05/19 15:24:22.133 INFO http-nio-8044-exec-1 TestController:238 - heartbeat
02/05/19 15:25:22.426 INFO http-nio-8044-exec-8 TestController:238 - heartbeat
02/05/19 15:26:22.782 INFO http-nio-8044-exec-7 TestController:238 - heartbeat
02/05/19 15:27:22.179 INFO http-nio-8044-exec-5 TestController:238 - heartbeat
在我的 pom 和属性中,我找不到与调度程序相关的内容。此外,我的 Controller 方法都没有使用@Scheduled 进行注释。有什么想法吗?
application.properties
management.context-path=/internal/manage
management.security.enabled=false
endpoints.health.id = health
endpoints.health.sensitive = true
endpoints.health.enabled = true
endpoints.info.id=info
endpoints.info.sensitive=false
endpoints.info.enabled=true
info.app.name=Test app name
info.app.description=Test project
endpoints.actuator.enabled=true
spring.application.admin.enabled=true
endpoints.hypermedia.enabled=true
management.info.git.mode=full
最佳答案
它可以是 kubernetes liveliness probe,如果端点/heartbeat 配置为 liveliness probe,kubernetes 会在每个配置的时间间隔轮询端点以检查服务是否存活。在你的情况下,它是一分钟。
如果您不在 kubernetes 环境中,端点可能会被监控系统调用以检查服务健康状况。
关于java - 每分钟都会调用远程 Web 服务,而无需我调用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54536254/