dmahapatro / grails-actuator-ui Goto Github PK
View Code? Open in Web Editor NEWUI representation of Spring Boot Actuator in a Grails 3 app
License: Apache License 2.0
UI representation of Spring Boot Actuator in a Grails 3 app
License: Apache License 2.0
Plugin: 1.1
Grails: 3.2.1.
In the dashboard, clicking More Info
buttons doesn't do anything. Is it just that there is nothing implemented yet or it's my misconfiguration (or a bug)? Please, add this info in the documentation also.
Impressed with the UI of this application and would like to know if this can be used for Spring boot application which is exposing Actuator end points.
Can someone please add if this project can be used for the same and any info regarding it if possible?
Apologize if creating new issue for this isn't appropriate.
Great plugin!
With securityConfigType = "Annotation", I cannot seem to secure http://localhost:8080/actuator/dashboard/
if I use:
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
[pattern: '/', access: ['permitAll']],
[pattern: '/error', access: ['permitAll']],
[pattern: '/index', access: ['permitAll']],
[pattern: '/index.gsp', access: ['permitAll']],
[pattern: '/shutdown', access: ['permitAll']],
[pattern: '/assets/', access: ['permitAll']],
[pattern: '//js/', access: ['permitAll']],
[pattern: '//css/', access: ['permitAll']],
[pattern: '//images/', access: ['permitAll']],
[pattern: '//favicon.ico', access: ['permitAll']],
[pattern: '/login/impersonate', access: ['ROLE_ADMIN', 'IS_AUTHENTICATED_FULLY']],
[pattern: '/logout/impersonate', access: ['permitAll']],
[pattern: '/console/', access: ['ROLE_ADMIN']],
[pattern: '/metrics/', access: ['ROLE_ADMIN']],
[pattern: '/trace/', access: ['ROLE_ADMIN']],
[pattern: '/monitoring', access: ['ROLE_ADMIN']],
[pattern: '//installer/', access: ['denyAll']],
[pattern: '/persistentLogin/', access: ['ROLE_ADMIN']],
[pattern: '/role/', access: ['ROLE_ADMIN']],
[pattern: '/registrationCode/', access: ['ROLE_ADMIN']],
[pattern: '/securityInfo/', access: ['ROLE_ADMIN']],
[pattern: '/dump/', access: ['ROLE_ADMIN']],
[pattern: '/actuator/', access: ['ROLE_ADMIN']],
[pattern: '/actuatordashboard/', access: ['ROLE_ADMIN']]
]
Stack:
Plugins:
Am I missing something obvious?
For some reason Spring Security requires this pattern /actuator:actuatordashboard/**
to be enabled for an admin role. I found out by enabling logging for spring security:
2018-04-18 09:03:22,272 TRACE grails.plugin.springsecurity.web.access.intercept.AnnotationFilterInvocationDefinition - Requested url: /actuator/dashboard
2018-04-18 09:03:22,273 TRACE grails.plugin.springsecurity.web.access.intercept.AnnotationFilterInvocationDefinition - Resolved full controller name for controller "actuatorDashboard" and namespace "actuator" as "actuator:actuatorDashboard"
2018-04-18 09:03:22,273 TRACE grails.plugin.springsecurity.web.access.intercept.AnnotationFilterInvocationDefinition - Final url is /actuator:actuatordashboard/index
Great plugin, but does not work with Grails 3.3.2. Accessing the dashboard URL produces this:
URI: /actuatorDashboard/index
Class: org.grails.web.json.JSONException
Message: null
Caused by: Missing value. at character 0 of
Trace
Line | Method
->> 211 | invoke in org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 188 | invoke in org.grails.core.DefaultGrailsControllerClass
| 90 | handle . . . . . in org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter
| 967 | doDispatch in org.springframework.web.servlet.DispatcherServlet
| 901 | doService . . . in ''
| 970 | processRequest in org.springframework.web.servlet.FrameworkServlet
| 861 | doGet . . . . . in ''
| 846 | service in ''
| 55 | doFilterInternal in org.springframework.boot.web.filter.ApplicationContextHeaderFilter
| 317 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 127 | invoke . . . . . in org.springframework.security.web.access.intercept.FilterSecurityInterceptor
| 91 | doFilter in ''
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 114 | doFilter in org.springframework.security.web.access.ExceptionTranslationFilter
| 64 | doFilter . . . . in grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 54 | doFilter . . . . in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 158 | doFilter . . . . in org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 170 | doFilter . . . . in org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 200 | doFilter . . . . in org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 64 | doFilter . . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 105 | doFilter . . . . in org.springframework.security.web.context.SecurityContextPersistenceFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 58 | doFilter . . . . in grails.plugin.springsecurity.web.SecurityRequestHolderFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 214 | doFilterInternal in org.springframework.security.web.FilterChainProxy
| 177 | doFilter in ''
| 77 | doFilterInternal in org.grails.web.servlet.mvc.GrailsWebRequestFilter
| 67 | doFilterInternal in org.grails.web.filters.HiddenHttpMethodFilter
| 1149 | runWorker . . . in java.util.concurrent.ThreadPoolExecutor
| 624 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 748 | run . . . . . . in java.lang.Thread
Caused by ConverterException: Error parsing JSON
->> 260 | parse in grails.converters.JSON
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 45 | parsedEndpointResponse in org.grails.plugins.actuator.ui.ActuatorDashboardController
| 15 | index . . . . . in ''
| 211 | invoke in org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker
| 188 | invoke . . . . . in org.grails.core.DefaultGrailsControllerClass
| 90 | handle in org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter
| 967 | doDispatch . . . in org.springframework.web.servlet.DispatcherServlet
| 901 | doService in ''
| 970 | processRequest . in org.springframework.web.servlet.FrameworkServlet
| 861 | doGet in ''
| 846 | service . . . . in ''
| 55 | doFilterInternal in org.springframework.boot.web.filter.ApplicationContextHeaderFilter
| 317 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 127 | invoke in org.springframework.security.web.access.intercept.FilterSecurityInterceptor
| 91 | doFilter . . . . in ''
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 114 | doFilter . . . . in org.springframework.security.web.access.ExceptionTranslationFilter
| 64 | doFilter in grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 54 | doFilter in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 158 | doFilter in org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 170 | doFilter in org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 200 | doFilter in org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 64 | doFilter in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 105 | doFilter in org.springframework.security.web.context.SecurityContextPersistenceFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 58 | doFilter in grails.plugin.springsecurity.web.SecurityRequestHolderFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 214 | doFilterInternal in org.springframework.security.web.FilterChainProxy
| 177 | doFilter . . . . in ''
| 77 | doFilterInternal in org.grails.web.servlet.mvc.GrailsWebRequestFilter
| 67 | doFilterInternal in org.grails.web.filters.HiddenHttpMethodFilter
| 1149 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 624 | run . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 748 | run in java.lang.Thread
Caused by JSONException: Missing value. at character 0 of
->> 470 | syntaxError in org.grails.web.json.JSONTokener
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 357 | nextValue in ''
| 251 | parse . . . . . in grails.converters.JSON
| 45 | parsedEndpointResponse in org.grails.plugins.actuator.ui.ActuatorDashboardController
| 15 | index . . . . . in ''
| 211 | invoke in org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker
| 188 | invoke . . . . . in org.grails.core.DefaultGrailsControllerClass
| 90 | handle in org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter
| 967 | doDispatch . . . in org.springframework.web.servlet.DispatcherServlet
| 901 | doService in ''
| 970 | processRequest . in org.springframework.web.servlet.FrameworkServlet
| 861 | doGet in ''
| 846 | service . . . . in ''
| 55 | doFilterInternal in org.springframework.boot.web.filter.ApplicationContextHeaderFilter
| 317 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 127 | invoke in org.springframework.security.web.access.intercept.FilterSecurityInterceptor
| 91 | doFilter . . . . in ''
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 114 | doFilter . . . . in org.springframework.security.web.access.ExceptionTranslationFilter
| 64 | doFilter in grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 54 | doFilter in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 158 | doFilter in org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 170 | doFilter in org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 200 | doFilter in org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 64 | doFilter in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 105 | doFilter in org.springframework.security.web.context.SecurityContextPersistenceFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 58 | doFilter in grails.plugin.springsecurity.web.SecurityRequestHolderFilter
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 214 | doFilterInternal in org.springframework.security.web.FilterChainProxy
| 177 | doFilter . . . . in ''
| 77 | doFilterInternal in org.grails.web.servlet.mvc.GrailsWebRequestFilter
| 67 | doFilterInternal in org.grails.web.filters.HiddenHttpMethodFilter
| 1149 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 624 | run . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 748 | run in java.lang.Thread
in some sense both plugins are used to inspect a running app, so it might be worth combining their powers.
Hi! I cannot seem to implement your plugin, which looks very helpful!
Here is my stacktrace:
017-06-14 14:11:39,281 - ERROR org.grails.web.errors.GrailsExceptionResolver - OutOfMemoryError occurred when processing request: [GET] /myApp/actuator/dashboard Java heap space. Stacktrace follows: java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426) at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:210) at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:187) at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:281) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:115) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) at grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:53) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:157) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:116) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:62) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3210) at java.util.Arrays.copyOf(Arrays.java:3181) at java.util.ArrayList.grow(ArrayList.java:261) at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235) at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227) at java.util.ArrayList.add(ArrayList.java:458) at org.grails.web.json.JSONArray.<init>(JSONArray.java:117) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:331) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at org.grails.web.json.JSONObject.<init>(JSONObject.java:175) at org.grails.web.json.JSONTokener.nextValue(JSONTokener.java:328) at grails.converters.JSON.parse(JSON.java:251) at grails.converters.JSON$parse$0.call(Unknown Source) at org.grails.plugins.actuator.ui.ActuatorDashboardController.parsedEndpointResponse(ActuatorDashboardController.groovy:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Here is my configuration of your plugin:
In build.gradle:
`repositories {
mavenLocal()
maven { url "https://repo.grails.org/grails/core" }
maven {
credentials {
username "our username"
password "our password"
}
url "https://repodev.our.company/artifactory/repo/"
}
maven {
url "http://dl.bintray.com/dmahapatro/plugins"
}
}
dependencies {
...
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.grails.plugins:actuator-ui:1.1"
...
}`
application.yml:
grails: profile: web spring: transactionManagement: proxies: false actuator: gravatar: disabled: true
application.groovy:
`grails {
plugin {
databasemigration {
changelogLocation = "database"
}
springsecurity {
logout {
postOnly = false
}
securityConfigType = "Annotation"
controllerAnnotations {
staticRules = [
[pattern:'/actuator/**', access:['permitAll']],
[pattern:'/actuatordashboard/**', access:['permitAll']],
[pattern:'/actuator:actuatordashboard/**', access:['permitAll']]
]
}
}
}
}`
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.