英文:
Spring actuator giving 404 Not found error even after setting server.servlet.contextPath
问题
我有一个Spring Batch项目(使用Gradle)。我希望将该项目集成到Actuator中。
我已经在Gradle中添加了以下导入:
implementation "org.springframework.boot:spring-boot-starter-actuator"
在application.yaml中,我已经添加了以下内容:
server:
port: 8083
servlet:
context-path: "/test"
现在,当我尝试在本地访问 http://localhost:8083/test/health
时,我得到错误:
{
"timestamp": "2020-09-21T18:36:42.779+00:00",
"status": 404,
"error": "Not Found",
"message": "",
"path": "/test/health"
}
在浏览器上运行相同的端点时,我看到这个错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Mon Sep 21 18:45:07 UTC 2020
There was an unexpected error (type=Not Found, status=404).
但是,当我访问其他端点,比如 http://localhost:8083/nikhil/api/boot-appliation
时,它是可以工作的!
是否有任何建议我可能遗漏了什么?
谢谢
英文:
I have a spring batch project (Using Gradle). I want to the project to be integrated with Actuator.
I have added this to import to gradle
implementation "org.springframework.boot:spring-boot-starter-actuator"
In application.yaml, I have added
server:
port: 8083
servlet:
context-path: "/test"
Now, when I try to hit - http://localhost:8083/test/health
on my local, I get error -
{
"timestamp": "2020-09-21T18:36:42.779+00:00",
"status": 404,
"error": "Not Found",
"message": "",
"path": "/test/health"
}
On running the same endpoint on browser, I see this error-
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Mon Sep 21 18:45:07 UTC 2020
There was an unexpected error (type=Not Found, status=404).
But when I hit other endpoints like http://localhost:8083/nikhil/api/boot-appliation
, it works!
Any suggestions where I am missing?
Thanks
答案1
得分: 1
默认情况下,上下文路径是 /
,而执行器端点是:
/actuator/health
将上下文路径设置为 /test
时,执行器端点是:
/test/actuator/health
URL 中的 /actuator
部分来自于 management.endpoints.web.base-path
属性。我认为这是您想要设置的内容:
management:
endpoints:
web:
base-path: /actuator
因此,综合起来,如果您的配置如下:
server:
port: 8083
servlet:
context-path: /
management:
endpoints:
web:
base-path: "/test"
您的执行器端点将是:
/test/health
英文:
By default the context-path is /
, and the actuator endpoint is:
/actuator/health
With the context-path set to /test
, the actuator endpoint is:
/test/actuator/health
The /actuator
portion of the url is from management.endpoints.web.base-path
property. I think this is what you meant to set:
management:
endpoints:
web:
base-path: /actuator
So, all together, if your configuration is this:
server:
port: 8083
servlet:
context-path: /
management:
endpoints:
web:
base-path: "/test"
Your actuator endpoint will be:
/test/health
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论