我有一个基于Spring Boot(v1.5.9)的应用程序,其中包含Spring Boot执行器提供的Jolokia。
Jolokia工作正常。我可以读取值,例如:
http://localhost:8080/jolokia/read/java.lang:type=ClassLoading/Verbose
给我:
{"request":{"mbean":"java.lang:type=ClassLoading","attribute":"Verbose","type":"read"},"value":false,"timestamp":1527859447,"status":200}
我想要的是禁用写操作,例如:
http://localhost:8080/jolokia/write/java.lang:type=ClassLoading/Verbose/true
Spring Boot配置如下所示:
management.security.enabled=false
management.endpoints.jmx.exposure.exclude=*
management.endpoints.web.exposure.include=jolokia,metrics
management.endpoint.jolokia.config.policyLocation=classpath:/jolokia.xml
WEB-INF \ classes \ jolokia.xml中的Jolokia策略(根据https://jolokia.org/reference/html/security.html的说法,这导致了战争)包含:
<restrict>
<commands>
<command>read</command>
<command>list</command>
<command>version</command>
<command>search</command>
</commands>
</restrict>
尽管如此,我还是在应用程序日志中看到以下注释:
jolokia: No access restrictor found, access to any MBean is allowed
上面示例中的写操作工作正常。
我做错了什么?我应该将策略文件放在其他地方吗?是否可以直接从Spring引导配置中配置Jolokia的策略?
最佳答案
您似乎无意中将Spring Boot 2.0配置属性与Spring Boot 1.5.x一起使用了。在1.5中,您应该使用jolokia.config.policyLocation
。 reference documentation中有更多信息。