There are many examples of how to use $ id and $ ref within the same Json schema file. But I have not found any example of how to use it with multiple schema files. I am with a Spring Boot project and mongoDB. I have my Schema files in the path:
/resources/schemas/
root_schema.json
centros_schema.json
the root_schema.json is an array of buildings (centros), and the centros_schema.json is where I define how is a building (centro).
I have followed the documentation here. But I have not been able to make it work and link the $id in centros_shema.json with the $ref in root_schema. See if someone can tell me how I can do it.
this is my root_schema.json:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"centros": {
"type": "array",
"items": [
{
"$ref": "centros_schema.json"
}
]
}
},
"required": [
"centros"
]
}
and this is my centros_schema.json:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "centros_schema.json",
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"nombre": {
"type": "string"
},
"tipo": {
"type": "string"
},
"direccion": {
"type": "object",
"properties": {
"calle": {
"type": "string"
},
"codigoPostal": {
"type": "string"
},
"municipio": {
"type": "string"
},
"provincia": {
"type": "string"
},
"ubicacion": {
"type": "object",
"properties": {
"latitud": {
"type": "string"
},
"longitud": {
"type": "string"
}
},
"required": [
"latitud",
"longitud"
]
}
},
"required": [
"calle",
"codigoPostal",
"municipio",
"provincia",
"ubicacion"
]
},
"horario": {
"type": "object",
"properties": {
"apertura": {
"type": "string"
},
"cierre": {
"type": "string"
}
},
"required": [
"apertura",
"cierre"
]
},
"dispositivos": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"descripcion": {
"type": "string"
},
"tipo": {
"type": "string"
},
"adquisicion": {
"type": "string"
},
"sensores": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"variable": {
"type": "string"
},
"unidad": {
"type": "string"
}
},
"required": [
"variable",
"unidad"
]
},
{
"type": "object",
"properties": {
"variable": {
"type": "string"
},
"unidad": {
"type": "string"
}
},
"required": [
"variable",
"unidad"
]
}
]
}
},
"required": [
"uid",
"descripcion",
"tipo",
"adquisicion",
"sensores"
]
},
{
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"descripcion": {
"type": "string"
},
"tipo": {
"type": "string"
},
"adquisicion": {
"type": "string"
},
"sensores": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"variable": {
"type": "string"
},
"unidad": {
"type": "string"
}
},
"required": [
"variable",
"unidad"
]
}
]
}
},
"required": [
"uid",
"descripcion",
"tipo",
"adquisicion",
"sensores"
]
}
]
}
},
"required": [
"uid",
"nombre",
"tipo",
"direccion",
"horario",
"dispositivos"
]
}
Updated
This is the error it throws at me. it doesn't matter which routes i use.
2021-05-24 21:34:54.140[0;39m [31mERROR[0;39m [35m4304[0;39m [2m---[0;39m [2m[nio-9000-exec-2][0;39m [36mo.a.c.c.C.[.[.[/].[dispatcherServlet] [0;39m [2m:[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.networknt.schema.JsonSchemaException: java.io.FileNotFoundException: \centros_schema.json (El sistema no puede encontrar el archivo especificado)] with root cause
java.io.FileNotFoundException: \centros_schema.json (El sistema no puede encontrar el archivo especificado)
at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_291]
at java.io.FileInputStream.open(Unknown Source) ~[na:1.8.0_291]
at java.io.FileInputStream.<init>(Unknown Source) ~[na:1.8.0_291]
at java.io.FileInputStream.<init>(Unknown Source) ~[na:1.8.0_291]
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) ~[na:1.8.0_291]
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) ~[na:1.8.0_291]
at com.networknt.schema.uri.URLFetcher.openConnectionCheckRedirects(URLFetcher.java:57) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.uri.URLFetcher.fetch(URLFetcher.java:43) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.uri.URISchemeFetcher.fetch(URISchemeFetcher.java:50) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchemaFactory.getSchema(JsonSchemaFactory.java:337) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.RefValidator.getRefSchema(RefValidator.java:83) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.RefValidator.<init>(RefValidator.java:46) ~[json-schema-validator-1.0.52.jar:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_291]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_291]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_291]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_291]
at com.networknt.schema.ValidatorTypeCode.newValidator(ValidatorTypeCode.java:131) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonMetaSchema.newValidator(JsonMetaSchema.java:351) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.ValidationContext.newValidator(ValidationContext.java:57) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.read(JsonSchema.java:217) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.getValidators(JsonSchema.java:406) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.validate(JsonSchema.java:239) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.ItemsValidator.doValidate(ItemsValidator.java:99) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.ItemsValidator.validate(ItemsValidator.java:80) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.validate(JsonSchema.java:241) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.PropertiesValidator.validate(PropertiesValidator.java:70) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.validate(JsonSchema.java:241) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.BaseJsonValidator.validate(BaseJsonValidator.java:103) ~[json-schema-validator-1.0.52.jar:na]
at com.envira.gijonin.centros.utils.Utils.validateJsonUsingSchema(Utils.java:31) ~[classes/:na]
at com.envira.gijonin.centros.centros.CentrosController.postCentros(CentrosController.java:83) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_291]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_291]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_291]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.6.jar:5.3.6]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) ~[tomcat-embed-core-9.0.45.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.6.jar:5.3.6]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.45.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.45.jar:9.0.45]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_291]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_291]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.45.jar:9.0.45]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_291]
Update 2
when i use "$ref": "centros_schema.json"
it seems to find the file, but now it throws me the following error:
[2m2021-05-24 21:45:14.175[0;39m [31mERROR[0;39m [35m4304[0;39m [2m---[0;39m [2m[nio-9000-exec-8][0;39m [36mo.a.c.c.C.[.[.[/].[dispatcherServlet] [0;39m [2m:[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.networknt.schema.JsonSchemaException: #/properties/centros/items/$ref: Reference centros_schema.json cannot be resolved] with root cause
com.networknt.schema.JsonSchemaException: #/properties/centros/items/$ref: Reference centros_schema.json cannot be resolved
at com.networknt.schema.RefValidator.<init>(RefValidator.java:50) ~[json-schema-validator-1.0.52.jar:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_291]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_291]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_291]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_291]
at com.networknt.schema.ValidatorTypeCode.newValidator(ValidatorTypeCode.java:131) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonMetaSchema.newValidator(JsonMetaSchema.java:351) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.ValidationContext.newValidator(ValidationContext.java:57) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.read(JsonSchema.java:217) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.getValidators(JsonSchema.java:406) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.validate(JsonSchema.java:239) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.ItemsValidator.doValidate(ItemsValidator.java:99) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.ItemsValidator.validate(ItemsValidator.java:80) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.validate(JsonSchema.java:241) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.PropertiesValidator.validate(PropertiesValidator.java:70) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.JsonSchema.validate(JsonSchema.java:241) ~[json-schema-validator-1.0.52.jar:na]
at com.networknt.schema.BaseJsonValidator.validate(BaseJsonValidator.java:103) ~[json-schema-validator-1.0.52.jar:na]
at com.envira.gijonin.centros.utils.Utils.validateJsonUsingSchema(Utils.java:31) ~[classes/:na]
at com.envira.gijonin.centros.centros.CentrosController.postCentros(CentrosController.java:83) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_291]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_291]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_291]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.6.jar:5.3.6]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.6.jar:5.3.6]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) ~[tomcat-embed-core-9.0.45.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.6.jar:5.3.6]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.45.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.6.jar:5.3.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.6.jar:5.3.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) [tomcat-embed-core-9.0.45.jar:9.0.45]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.45.jar:9.0.45]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_291]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_291]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.45.jar:9.0.45]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_291]