管理端点在不同端口上服务时抛出 GroovyCastException
management endpoints throwing GroovyCastException when served on different port
我的 application.yml 文件中有以下健康管理端点
management:
endpoints:
health:
sensitive: false
web:
base-path: /
我有一个拦截器,代码如下
class TestInterceptor {
TestInterceptor() {
matchAll()
}
boolean before() {
if (request.forwardURI?.endsWith('.json')) {
// ... some code
return false
}
true
}
}
效果很好。该应用程序正在 8080 上工作。
但是一旦我更改了管理端点的端口(以便在不同的端口上进行健康检查),下面的代码
management:
server:
port: 8989
endpoints:
health:
sensitive: false
web:
base-path: /
然后应用程序在拦截器中访问请求对象时抛出强制转换异常
org.springframework.web.util.NestedServletException: Request
processing failed; nested exception is
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot
cast object 'Request(GET
//localhost:8989/testApp/health)@68117e64' with class
'org.springframework.web.context.request.ServletRequestAttributes' to
class 'org.grails.web.servlet.mvc.GrailsWebRequest'
任何解决问题的建议。
(Grails 4.0.12,Groovy 2.5.14 和 Java 11)
升级到 Grails 5。以上功能可以正常工作。
我的 application.yml 文件中有以下健康管理端点
management:
endpoints:
health:
sensitive: false
web:
base-path: /
我有一个拦截器,代码如下
class TestInterceptor {
TestInterceptor() {
matchAll()
}
boolean before() {
if (request.forwardURI?.endsWith('.json')) {
// ... some code
return false
}
true
}
}
效果很好。该应用程序正在 8080 上工作。
但是一旦我更改了管理端点的端口(以便在不同的端口上进行健康检查),下面的代码
management:
server:
port: 8989
endpoints:
health:
sensitive: false
web:
base-path: /
然后应用程序在拦截器中访问请求对象时抛出强制转换异常
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Request(GET //localhost:8989/testApp/health)@68117e64' with class 'org.springframework.web.context.request.ServletRequestAttributes' to class 'org.grails.web.servlet.mvc.GrailsWebRequest'
任何解决问题的建议。
(Grails 4.0.12,Groovy 2.5.14 和 Java 11)
升级到 Grails 5。以上功能可以正常工作。