diff --git a/db/vehicleSimulationDataBaseFile.mv.db b/db/vehicleSimulationDataBaseFile.mv.db deleted file mode 100644 index ec5f815..0000000 Binary files a/db/vehicleSimulationDataBaseFile.mv.db and /dev/null differ diff --git a/db/vehicleSimulationDataBaseFile.trace.db b/db/vehicleSimulationDataBaseFile.trace.db deleted file mode 100644 index 5d8338f..0000000 --- a/db/vehicleSimulationDataBaseFile.trace.db +++ /dev/null @@ -1,1515 +0,0 @@ -2024-06-10 20:50:14 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.createStatement(JdbcConnection.java:206) - at com.zaxxer.hikari.pool.ProxyConnection.createStatement(ProxyConnection.java:294) - at com.zaxxer.hikari.pool.HikariProxyConnection.createStatement(HikariProxyConnection.java) - at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:256) - at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:254) - at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:54) - at org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer.runScripts(DataSourceScriptDatabaseInitializer.java:90) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.runScripts(AbstractScriptDatabaseInitializer.java:145) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applyScripts(AbstractScriptDatabaseInitializer.java:107) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applySchemaScripts(AbstractScriptDatabaseInitializer.java:97) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.initializeDatabase(AbstractScriptDatabaseInitializer.java:75) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.afterPropertiesSet(AbstractScriptDatabaseInitializer.java:65) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) - at com.muyu.VehicleSimulationApplication.main(VehicleSimulationApplication.java:18) -2024-06-10 20:50:14 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:60) - at org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer.runScripts(DataSourceScriptDatabaseInitializer.java:90) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.runScripts(AbstractScriptDatabaseInitializer.java:145) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applyScripts(AbstractScriptDatabaseInitializer.java:107) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applySchemaScripts(AbstractScriptDatabaseInitializer.java:97) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.initializeDatabase(AbstractScriptDatabaseInitializer.java:75) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.afterPropertiesSet(AbstractScriptDatabaseInitializer.java:65) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) - at com.muyu.VehicleSimulationApplication.main(VehicleSimulationApplication.java:18) -2024-06-11 15:24:37 jdbc[3]: exception -org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "[*]\feffcreate table if not exists vehicle ( `vin` char (17) primary key not null, `remaining_battery` DOUBLE not null, `total_mileage` DOUBLE not null, `battery_level` DOUBLE not null, `create_time` datetime not null ) "; SQL statement: -create table if not exists vehicle ( `vin` char (17) primary key not null, `remaining_battery` DOUBLE not null, `total_mileage` DOUBLE not null, `battery_level` DOUBLE not null, `create_time` datetime not null ) [42000-214] -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:449) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:141) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.(SQLErrorCodeSQLExceptionTranslator.java:102) - at org.mybatis.spring.MyBatisExceptionTranslator.lambda$new$0(MyBatisExceptionTranslator.java:55) - at org.mybatis.spring.MyBatisExceptionTranslator.initExceptionTranslator(MyBatisExceptionTranslator.java:106) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:141) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.(SQLErrorCodeSQLExceptionTranslator.java:102) - at org.mybatis.spring.MyBatisExceptionTranslator.lambda$new$0(MyBatisExceptionTranslator.java:55) - at org.mybatis.spring.MyBatisExceptionTranslator.initExceptionTranslator(MyBatisExceptionTranslator.java:106) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) diff --git a/pom.xml b/pom.xml index b0bd12d..901723e 100644 --- a/pom.xml +++ b/pom.xml @@ -12,13 +12,14 @@ 17 17 UTF-8 - 3.5.1 + 3.5.7 + 1.5.36 org.springframework.boot spring-boot-starter-parent - 2.7.15 + 3.2.4 @@ -40,7 +41,7 @@ 1.2.5 - + org.projectlombok lombok @@ -49,25 +50,17 @@ com.baomidou - mybatis-plus-boot-starter + mybatis-plus-spring-boot3-starter ${mybatisplus.version} + + - com.baomidou - mybatis-plus-generator - ${mybatisplus.version} - - - org.freemarker - freemarker - - - - - com.h2database - h2 + com.mysql + mysql-connector-j + com.alibaba.fastjson2 fastjson2 @@ -77,14 +70,8 @@ com.dtflys.forest - forest-spring-boot-starter - 1.5.33 - - - - com.alibaba - fastjson - 1.2.73 + forest-spring-boot3-starter + ${forest.version} diff --git a/src/main/java/com/muyu/system/context/SystemUserContext.java b/src/main/java/com/muyu/system/context/SystemUserContext.java new file mode 100644 index 0000000..bb3e7cc --- /dev/null +++ b/src/main/java/com/muyu/system/context/SystemUserContext.java @@ -0,0 +1,29 @@ +package com.muyu.system.context; + +import com.muyu.system.domain.LoginUserInfo; + +/** + * @Description: 系统用户上下文 + * @author: MuYu + * @date: 2024/9/10-下午5:52 + */ +public class SystemUserContext { + + /** + * 系统用户线程变量 + */ + private static final ThreadLocal basicContextLocal = new ThreadLocal<>(); + + + public static LoginUserInfo get() { + return basicContextLocal.get(); + } + + public static void set(LoginUserInfo value) { + basicContextLocal.set(value); + } + + public static void remove() { + basicContextLocal.remove(); + } +} diff --git a/src/main/java/com/muyu/system/domain/LoginUserInfo.java b/src/main/java/com/muyu/system/domain/LoginUserInfo.java new file mode 100644 index 0000000..1f15d04 --- /dev/null +++ b/src/main/java/com/muyu/system/domain/LoginUserInfo.java @@ -0,0 +1,41 @@ +package com.muyu.system.domain; + +import com.muyu.system.properties.ServerConfigProperties; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 登陆用户信息 + * @author: MuYu + * @date: 2024/9/11-上午10:15 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LoginUserInfo { + + /** + * 用户ID + */ + private Long id; + + /** + * 用户名称 + */ + private String userName; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 服务配置 + */ + private ServerConfigProperties serverConfig; + + +} diff --git a/src/main/java/com/muyu/system/handle/SystemHandler.java b/src/main/java/com/muyu/system/handle/SystemHandler.java new file mode 100644 index 0000000..d6bd3f1 --- /dev/null +++ b/src/main/java/com/muyu/system/handle/SystemHandler.java @@ -0,0 +1,53 @@ +package com.muyu.system.handle; + +import com.muyu.system.context.SystemUserContext; +import com.muyu.system.domain.LoginUserInfo; +import com.muyu.system.properties.ServerConfigProperties; + +/** + * @Description: 系统处理器 + * @author: MuYu + * @date: 2024/9/11-上午10:23 + */ +public class SystemHandler { + + /** + * 获取登陆用户信息 + * @return 登陆用户信息 + */ + public static LoginUserInfo getUserInfo(){ + return SystemUserContext.get(); + } + + + /** + * 登陆用户ID + * @return 登录用户ID + */ + public static Long getUserId(){ + return getUserInfo().getId(); + } + + /** + * 获取服务器配置 + * @return 当前用户服务器配置 + */ + public static ServerConfigProperties getServerConfig(){ + return SystemUserContext.get().getServerConfig(); + } + + /** + * 存储当前服务器配置 + */ + public static void setServerConfig(ServerConfigProperties serverConfig){ + SystemUserContext.get().setServerConfig(serverConfig); + } + + /** + * 获取负载地址 + * @return 负载地址 + */ + public static String getLoadReqUrl(){ + return getServerConfig().getLoadReqUrl(); + } +} diff --git a/src/main/java/com/muyu/system/properties/ServerConfigProperties.java b/src/main/java/com/muyu/system/properties/ServerConfigProperties.java new file mode 100644 index 0000000..1ccf014 --- /dev/null +++ b/src/main/java/com/muyu/system/properties/ServerConfigProperties.java @@ -0,0 +1,75 @@ +package com.muyu.system.properties; + +import com.muyu.web.domain.model.ServerConfigModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: DongZeLiang + * @date: 2024/6/10 + * @Description: 服务器配置类 + * @Version: 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ServerConfigProperties { + + /** + * 主机地址 + */ + private String host; + /** + * 端口号 + */ + private String port; + /** + * 负载地址 + */ + private String uri; + /** + * 负载请求格式化地址 + */ + private String loadReqUrl; + /** + * 默认MQTT地址 + */ + private String mqttAddr; + /** + * 默认MQTT主题 + */ + private String mqttTopic; + /** + * 默认MQTT交付级别 + */ + private Integer mqttQos; + + /** + * 模型构建配置 + * @param serverConfigModel 配置模型对象 + * @return 配置对象 + */ + public static ServerConfigProperties modelToProperties(ServerConfigModel serverConfigModel) { + + return ServerConfigProperties.builder() + .host(serverConfigModel.getHost()) + .port(serverConfigModel.getPort()) + .uri(serverConfigModel.getUri()) + .mqttAddr(serverConfigModel.getDefaultMqttAddr()) + .mqttTopic(serverConfigModel.getDefaultMqttTopic()) + .mqttQos(serverConfigModel.getDefaultMqttQos()) + .loadReqUrl( + String.format( + "http://%s:%s%s", + serverConfigModel.getHost(), + serverConfigModel.getPort(), + serverConfigModel.getUri().startsWith("/") ? serverConfigModel.getUri() : "/" + serverConfigModel.getUri() + ) + ) + .build(); + } + +} diff --git a/src/main/java/com/muyu/vehicle/VehicleInstance.java b/src/main/java/com/muyu/vehicle/VehicleInstance.java index 3933e8a..d9bfe0c 100644 --- a/src/main/java/com/muyu/vehicle/VehicleInstance.java +++ b/src/main/java/com/muyu/vehicle/VehicleInstance.java @@ -3,7 +3,7 @@ package com.muyu.vehicle; import com.alibaba.fastjson2.JSONObject; import com.muyu.web.common.SystemConstant; import com.muyu.web.common.pool.ScheduledThreadPool; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.model.PositionModel; import com.muyu.web.utils.CalculateCheckDigit; import com.muyu.web.utils.ConversionUtil; @@ -56,7 +56,7 @@ public class VehicleInstance { /** * 车辆 */ - private Vehicle vehicle; + private VehicleInfo vehicleInfo; /** * 实例数据 */ @@ -95,7 +95,7 @@ public class VehicleInstance { * @return VIN */ public String getVin() { - return this.vehicle.getVin(); + return this.vehicleInfo.getVin(); } /** diff --git a/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java b/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java index 3c6cb15..aac5986 100644 --- a/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java +++ b/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java @@ -1,6 +1,6 @@ package com.muyu.vehicle.api.req; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/src/main/java/com/muyu/vehicle/core/LocalContainer.java b/src/main/java/com/muyu/vehicle/core/LocalContainer.java index 33b391e..d237db4 100644 --- a/src/main/java/com/muyu/vehicle/core/LocalContainer.java +++ b/src/main/java/com/muyu/vehicle/core/LocalContainer.java @@ -27,7 +27,7 @@ public class LocalContainer { vehicleInstance.forEach(LocalContainer::setVehicleInstance); } public static void setVehicleInstance(VehicleInstance vehicleInstance){ - String vin = vehicleInstance.getVehicle().getVin(); + String vin = vehicleInstance.getVehicleInfo().getVin(); if (!vehicleDataMap.containsKey(vin)) { vehicleDataMap.put(vin, vehicleInstance); } diff --git a/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java b/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java index 536f529..820246f 100644 --- a/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java +++ b/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java @@ -3,17 +3,17 @@ package com.muyu.vehicle.core; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.muyu.web.common.pool.FixedThreadPool; import com.muyu.web.common.pool.ScheduledThreadPool; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; +import com.muyu.web.service.VehicleInfoService; import com.muyu.web.service.VehicleInstanceService; -import com.muyu.web.service.VehicleService; import com.muyu.vehicle.VehicleInstance; +import jakarta.annotation.PreDestroy; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.context.annotation.Configuration; -import javax.annotation.PreDestroy; import java.util.List; /** @@ -27,7 +27,7 @@ import java.util.List; @AllArgsConstructor public class VehicleConfiguration implements ApplicationRunner { - private final VehicleService vehicleService; + private final VehicleInfoService vehicleInfoService; private final VehicleInstanceService vehicleInstanceService; @@ -39,11 +39,11 @@ public class VehicleConfiguration implements ApplicationRunner { int page = 0, pageSize = 10; log.info("初始开始,批量从数据库当中加载数据到内存当中,每次[{}]条", pageSize); while (true){ - Page vehiclePage = vehicleService.page(new Page<>(page++, pageSize)); - List vehicleList = vehiclePage.getRecords(); - vehicleList.forEach(vehicleInstanceService::init); - log.debug("第[{}]页,[{}]条", page, vehicleList.size()); - if (vehicleList.size() < pageSize){ + Page vehiclePage = vehicleInfoService.page(new Page<>(page++, pageSize)); + List vehicleInfoList = vehiclePage.getRecords(); + vehicleInfoList.forEach(vehicleInstanceService::init); + log.debug("第[{}]页,[{}]条", page, vehicleInfoList.size()); + if (vehicleInfoList.size() < pageSize){ break; } } @@ -65,7 +65,7 @@ public class VehicleConfiguration implements ApplicationRunner { log.info("数据库同步"); - vehicleService.syncDb(); + vehicleInfoService.syncDb(); log.info("下线所有车辆"); List onlineVehicleInstanceList = LocalContainer.getOnlineVehicleInstance(); diff --git a/src/main/java/com/muyu/vehicle/model/VehicleData.java b/src/main/java/com/muyu/vehicle/model/VehicleData.java index d8b8cf1..a7866f3 100644 --- a/src/main/java/com/muyu/vehicle/model/VehicleData.java +++ b/src/main/java/com/muyu/vehicle/model/VehicleData.java @@ -1,7 +1,7 @@ package com.muyu.vehicle.model; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -69,6 +69,7 @@ public class VehicleData { /** * 档位 */ + @Builder.Default private String gear = "P"; /** @@ -179,86 +180,103 @@ public class VehicleData { /** * 车辆状态 */ + @Builder.Default private int vehicleStatus = 1; /** * 充电状态 */ + @Builder.Default private int chargingStatus = 1; /** * 运行状态 */ + @Builder.Default private int operatingStatus = 1; /** * SOC */ + @Builder.Default private int socStatus = 1; /** * 可充电储能装置工作状态 */ + @Builder.Default private int chargingEnergyStorageStatus = 1; /** * 驱动电机状态 */ + @Builder.Default private int driveMotorStatus = 1; /** * 定位是否有效 */ + @Builder.Default private int positionStatus = 1; /** * EAS(汽车防盗系统)状态 */ + @Builder.Default private int easStatus = 1; /** * PTC(电动加热器)状态 */ + @Builder.Default private int ptcStatus = 1; /** * EPS(电动助力系统)状态 */ + @Builder.Default private int epsStatus = 1; /** * ABS(防抱死)状态 */ + @Builder.Default private int absStatus = 1; /** * MCU(电机/逆变器)状态 */ + @Builder.Default private int mcuStatus = 1; /** * 动力电池加热状态 */ + @Builder.Default private int heatingStatus = 1; /** * 动力电池当前状态 */ + @Builder.Default private int batteryStatus = 1; /** * 动力电池保温状态 */ + @Builder.Default private int batteryInsulationStatus = 1; /** * DCDC(电力交换系统)状态 */ + @Builder.Default private int dcdcStatus = 1; /** * CHG(充电机)状态 */ + @Builder.Default private int chgStatus = 1; /** @@ -385,16 +403,16 @@ public class VehicleData { /** * 汽车对象构造企业VIN - * @param vehicle 汽车对象 + * @param vehicleInfo 汽车对象 * @return 汽车数据对象 */ - public static VehicleData vehicleBuild (Vehicle vehicle) { + public static VehicleData vehicleBuild (VehicleInfo vehicleInfo) { return VehicleData.builder() - .vin(vehicle.getVin()) + .vin(vehicleInfo.getVin()) .gear("P") - .remainingBattery(vehicle.getRemainingBattery()) - .batteryLevel(vehicle.getBatteryLevel()) - .mileage(vehicle.getTotalMileage()) + .remainingBattery(vehicleInfo.getRemainingBattery()) + .batteryLevel(vehicleInfo.getBatteryLevel()) + .mileage(vehicleInfo.getTotalMileage()) .vehicleStatus(1) .chargingStatus(1) .operatingStatus(1) diff --git a/src/main/java/com/muyu/web/config/ForsetConfig.java b/src/main/java/com/muyu/web/config/ForsetConfig.java index 5e6e522..fce8f53 100644 --- a/src/main/java/com/muyu/web/config/ForsetConfig.java +++ b/src/main/java/com/muyu/web/config/ForsetConfig.java @@ -1,10 +1,7 @@ package com.muyu.web.config; import com.dtflys.forest.annotation.BindingVar; -import com.dtflys.forest.reflection.ForestMethod; -import com.muyu.web.config.properties.ServiceConfigProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; +import com.muyu.system.handle.SystemHandler; import org.springframework.stereotype.Service; /** @@ -16,9 +13,6 @@ import org.springframework.stereotype.Service; @Service("forsetConfig") public class ForsetConfig { - @Autowired - private ServiceConfigProperties serviceConfigProperties; - /** * 使用 @BindingVar 注解 * 将变量名 baseUrl 和一段方法代码绑定 @@ -26,7 +20,7 @@ public class ForsetConfig { */ @BindingVar("vehicleLoadUrl") public String getBaseUrl() { - return serviceConfigProperties.getLoadReqUrl(); + return SystemHandler.getLoadReqUrl(); } } diff --git a/src/main/java/com/muyu/web/config/LoadServerConfig.java b/src/main/java/com/muyu/web/config/LoadServerConfig.java deleted file mode 100644 index 382d242..0000000 --- a/src/main/java/com/muyu/web/config/LoadServerConfig.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.muyu.web.config; - -import com.muyu.web.config.properties.ServiceConfigProperties; -import com.muyu.web.domain.model.ServerConfigModel; -import com.muyu.web.service.ServerConfigService; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @Author: DongZeLiang - * @date: 2024/6/10 - * @Description: 负载服务器配置 - * @Version: 1.0 - */ -@Configuration -public class LoadServerConfig { - - /** - * 静态引入,解决循环依赖的问题 - */ - private static final ServiceConfigProperties serviceConfigProperties = new ServiceConfigProperties(); - - @Bean - public ServiceConfigProperties serverConfig(ServerConfigService serverConfigService) { - return serviceConfigProperties.modelToProperties(serverConfigService.get()); - } - - public static void modelToProperties(ServerConfigModel serverConfigModel){ - serviceConfigProperties.modelToProperties(serverConfigModel); - } -} diff --git a/src/main/java/com/muyu/web/config/properties/ServiceConfigProperties.java b/src/main/java/com/muyu/web/config/properties/ServiceConfigProperties.java deleted file mode 100644 index 7dc977e..0000000 --- a/src/main/java/com/muyu/web/config/properties/ServiceConfigProperties.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.muyu.web.config.properties; - -import com.muyu.web.domain.model.ServerConfigModel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @Author: DongZeLiang - * @date: 2024/6/10 - * @Description: 服务器配置类 - * @Version: 1.0 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ServiceConfigProperties { - - /** - * 主机地址 - */ - private String host; - /** - * 端口号 - */ - private String port; - /** - * 负载地址 - */ - private String loadUrl; - /** - * 负载请求格式化地址 - */ - private String loadReqUrl; - /** - * 默认MQTT地址 - */ - private String mqttAddr; - /** - * 默认MQTT主题 - */ - private String mqttTopic; - /** - * 默认MQTT交付级别 - */ - private Integer mqttQos; - - /** - * 模型构建配置 - * @param serverConfigModel 配置模型对象 - * @return 配置对象 - */ - public ServiceConfigProperties modelToProperties(ServerConfigModel serverConfigModel) { - this.host = serverConfigModel.getHost(); - this.port = serverConfigModel.getPort(); - this.loadUrl = serverConfigModel.getLoadUrl(); - this.mqttAddr = serverConfigModel.getDefaultMqttAddr(); - this.mqttTopic = serverConfigModel.getDefaultMqttTopic(); - this.mqttQos = serverConfigModel.getDefaultMqttQos(); - this.loadReqUrl = String.format("http://%s:%s%s", host, port, loadUrl.startsWith("/") ? loadUrl : "/" + loadUrl); - return this; - } - -} diff --git a/src/main/java/com/muyu/web/controller/VehicleController.java b/src/main/java/com/muyu/web/controller/VehicleController.java index f44e76a..85dc9e4 100644 --- a/src/main/java/com/muyu/web/controller/VehicleController.java +++ b/src/main/java/com/muyu/web/controller/VehicleController.java @@ -1,9 +1,9 @@ package com.muyu.web.controller; import com.muyu.web.common.Result; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.req.VehicleCreateAddReq; -import com.muyu.web.service.VehicleService; +import com.muyu.web.service.VehicleInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -20,11 +20,11 @@ import java.util.List; public class VehicleController { @Autowired - private VehicleService vehicleService; + private VehicleInfoService vehicleInfoService; @GetMapping("/list") - public Result> list(){ - return Result.success(vehicleService.list()); + public Result> list(){ + return Result.success(vehicleInfoService.list()); } /** @@ -34,7 +34,7 @@ public class VehicleController { */ @GetMapping("/gen/{sum}") public Result generate(@PathVariable(value = "sum") Integer sum){ - vehicleService.generate(sum); + vehicleInfoService.generate(sum); return Result.success(); } /** @@ -44,7 +44,7 @@ public class VehicleController { */ @PostMapping("/create") public Result create(@RequestBody VehicleCreateAddReq vehicleCreateAddReq){ - vehicleService.create(vehicleCreateAddReq.getVinStr()); + vehicleInfoService.create(vehicleCreateAddReq.getVinStr()); return Result.success(); } @@ -56,7 +56,7 @@ public class VehicleController { */ @DeleteMapping("/{vin}") public Result delete(@PathVariable("vin") String vin){ - this.vehicleService.delete(vin); + this.vehicleInfoService.delete(vin); return Result.success(null,"删除成功"); } } diff --git a/src/main/java/com/muyu/web/controller/VerifyController.java b/src/main/java/com/muyu/web/controller/VerifyController.java index dc42ea5..ba0b8aa 100644 --- a/src/main/java/com/muyu/web/controller/VerifyController.java +++ b/src/main/java/com/muyu/web/controller/VerifyController.java @@ -1,7 +1,8 @@ package com.muyu.web.controller; +import com.muyu.system.handle.SystemHandler; import com.muyu.web.common.Result; -import com.muyu.web.config.properties.ServiceConfigProperties; +import com.muyu.system.properties.ServerConfigProperties; import com.muyu.web.domain.model.MqttServerModel; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; @@ -18,8 +19,6 @@ import org.springframework.web.bind.annotation.RestController; @AllArgsConstructor public class VerifyController { - private final ServiceConfigProperties serviceConfigProperties; - /** * 新增车辆默认上线主题 @@ -27,10 +26,11 @@ public class VerifyController { */ @PostMapping("/vehicleConnection") public Result vehicleConnection(){ + ServerConfigProperties serverConfig = SystemHandler.getServerConfig(); return Result.success( MqttServerModel.builder() - .broker(serviceConfigProperties.getMqttAddr()) - .topic(serviceConfigProperties.getMqttTopic()) + .broker(serverConfig.getMqttAddr()) + .topic(serverConfig.getMqttTopic()) .build() ); } diff --git a/src/main/java/com/muyu/web/domain/ServerConfig.java b/src/main/java/com/muyu/web/domain/ServerConfig.java index c8734da..c69ae1c 100644 --- a/src/main/java/com/muyu/web/domain/ServerConfig.java +++ b/src/main/java/com/muyu/web/domain/ServerConfig.java @@ -1,5 +1,7 @@ package com.muyu.web.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.web.domain.model.ServerConfigModel; import lombok.AllArgsConstructor; @@ -25,7 +27,17 @@ public class ServerConfig { /** * 主键 */ - private Integer id; + @TableId( + value = "id", + type = IdType.AUTO + ) + private Long id; + + /** + * 租户ID + */ + private String tenantId; + /** * 主机地址 */ @@ -37,7 +49,7 @@ public class ServerConfig { /** * 负载地址 */ - private String loadUrl; + private String uri; /** * 默认MQTT地址 */ @@ -51,12 +63,12 @@ public class ServerConfig { */ private Integer defaultMqttQos; - public static ServerConfig modeBuild (ServerConfigModel serverConfigModel, Supplier idKey) { + public static ServerConfig modeBuild (ServerConfigModel serverConfigModel, Supplier idKey) { return builder() .id(idKey.get()) .host(serverConfigModel.getHost()) .port(serverConfigModel.getPort()) - .loadUrl(serverConfigModel.getLoadUrl()) + .uri(serverConfigModel.getUri()) .defaultMqttAddr(serverConfigModel.getDefaultMqttAddr()) .defaultMqttTopic(serverConfigModel.getDefaultMqttTopic()) .defaultMqttQos(serverConfigModel.getDefaultMqttQos()) diff --git a/src/main/java/com/muyu/web/domain/Vehicle.java b/src/main/java/com/muyu/web/domain/VehicleInfo.java similarity index 83% rename from src/main/java/com/muyu/web/domain/Vehicle.java rename to src/main/java/com/muyu/web/domain/VehicleInfo.java index 1f0b853..13e1cc3 100644 --- a/src/main/java/com/muyu/web/domain/Vehicle.java +++ b/src/main/java/com/muyu/web/domain/VehicleInfo.java @@ -24,8 +24,8 @@ import java.util.Date; @Builder @NoArgsConstructor @AllArgsConstructor -@TableName("vehicle") -public class Vehicle { +@TableName("vehicle_info") +public class VehicleInfo { /** * VIN @@ -61,17 +61,17 @@ public class Vehicle { * 生成车辆数据 * @return 车辆数据 */ - public static Vehicle gen() { - return Vehicle.create(VehicleUtils.genVin()); + public static VehicleInfo gen() { + return VehicleInfo.create(VehicleUtils.genVin()); } /** * 生成车辆数据 * @return 车辆数据 */ - public static Vehicle create(String vin) { + public static VehicleInfo create(String vin) { BigDecimal battery = VehicleUtils.genBattery(); - return Vehicle.builder() + return VehicleInfo.builder() .vin(vin) .createTime(new Date()) .batteryLevel(battery) @@ -81,9 +81,9 @@ public class Vehicle { } - public static Vehicle instanceBuild (VehicleInstance vehicleInstance) { + public static VehicleInfo instanceBuild (VehicleInstance vehicleInstance) { VehicleData vehicle = vehicleInstance.getVehicleData(); - return Vehicle.builder() + return VehicleInfo.builder() .vin(vehicleInstance.getVin()) .remainingBattery(vehicle.getRemainingBattery()) .totalMileage(vehicle.getMileage()) diff --git a/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java b/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java index 6c5f274..505d27d 100644 --- a/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java +++ b/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java @@ -1,6 +1,5 @@ package com.muyu.web.domain.model; -import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.web.domain.ServerConfig; import com.muyu.web.domain.req.ServerConfigEditReq; import lombok.AllArgsConstructor; @@ -31,7 +30,7 @@ public class ServerConfigModel { /** * 负载地址 */ - private String loadUrl; + private String uri; /** * 默认MQTT地址 */ @@ -49,7 +48,7 @@ public class ServerConfigModel { return builder() .host(serverConfig.getHost().trim()) .port(serverConfig.getPort()) - .loadUrl(serverConfig.getLoadUrl().trim()) + .uri(serverConfig.getUri().trim()) .defaultMqttAddr(serverConfig.getDefaultMqttAddr().trim()) .defaultMqttTopic(serverConfig.getDefaultMqttTopic().trim()) .defaultMqttQos(serverConfig.getDefaultMqttQos()) @@ -60,7 +59,7 @@ public class ServerConfigModel { return builder() .host(serverConfigReq.getHost().trim()) .port(serverConfigReq.getPort()) - .loadUrl(serverConfigReq.getLoadUrl().trim()) + .uri(serverConfigReq.getLoadUrl().trim()) .defaultMqttAddr(serverConfigReq.getDefaultMqttAddr().trim()) .defaultMqttTopic(serverConfigReq.getDefaultMqttTopic().trim()) .defaultMqttQos(serverConfigReq.getDefaultMqttQos()) diff --git a/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java b/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java index 1a98ccc..bce1f13 100644 --- a/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java +++ b/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java @@ -1,6 +1,5 @@ package com.muyu.web.domain.resp; -import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.web.domain.model.ServerConfigModel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -49,7 +48,7 @@ public class ServerConfigResp { return builder() .host(serverConfigModel.getHost()) .port(serverConfigModel.getPort()) - .loadUrl(serverConfigModel.getLoadUrl()) + .loadUrl(serverConfigModel.getUri()) .defaultMqttAddr(serverConfigModel.getDefaultMqttAddr()) .defaultMqttTopic(serverConfigModel.getDefaultMqttTopic()) .defaultMqttQos(serverConfigModel.getDefaultMqttQos()) diff --git a/src/main/java/com/muyu/web/mapper/VehicleMapper.java b/src/main/java/com/muyu/web/mapper/VehicleInfoMapper.java similarity index 68% rename from src/main/java/com/muyu/web/mapper/VehicleMapper.java rename to src/main/java/com/muyu/web/mapper/VehicleInfoMapper.java index c393170..3b4b43e 100644 --- a/src/main/java/com/muyu/web/mapper/VehicleMapper.java +++ b/src/main/java/com/muyu/web/mapper/VehicleInfoMapper.java @@ -1,7 +1,7 @@ package com.muyu.web.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import org.apache.ibatis.annotations.Mapper; /** @@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper; * @since 2022-07-05 */ @Mapper -public interface VehicleMapper extends BaseMapper { +public interface VehicleInfoMapper extends BaseMapper { } diff --git a/src/main/java/com/muyu/web/service/VehicleService.java b/src/main/java/com/muyu/web/service/VehicleInfoService.java similarity index 83% rename from src/main/java/com/muyu/web/service/VehicleService.java rename to src/main/java/com/muyu/web/service/VehicleInfoService.java index 47e4ddc..bee946e 100644 --- a/src/main/java/com/muyu/web/service/VehicleService.java +++ b/src/main/java/com/muyu/web/service/VehicleInfoService.java @@ -1,7 +1,7 @@ package com.muyu.web.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; /** *

@@ -11,7 +11,7 @@ import com.muyu.web.domain.Vehicle; * @author DongZeLiang * @since 2022-07-05 */ -public interface VehicleService extends IService { +public interface VehicleInfoService extends IService { /** * 根据数量生成测试车辆 diff --git a/src/main/java/com/muyu/web/service/VehicleInstanceService.java b/src/main/java/com/muyu/web/service/VehicleInstanceService.java index c438998..ae83b34 100644 --- a/src/main/java/com/muyu/web/service/VehicleInstanceService.java +++ b/src/main/java/com/muyu/web/service/VehicleInstanceService.java @@ -1,7 +1,7 @@ package com.muyu.web.service; import com.muyu.web.common.PageList; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.req.CheckPositionReq; import com.muyu.web.domain.req.GearReq; import com.muyu.web.domain.req.MsgReq; @@ -18,9 +18,9 @@ public interface VehicleInstanceService { /** * 根据车辆生成车辆实例 - * @param vehicle 车辆信息 + * @param vehicleInfo 车辆信息 */ - public void init(Vehicle vehicle); + public void init(VehicleInfo vehicleInfo); /** diff --git a/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java b/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java index d59d4ee..c18d3ef 100644 --- a/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java +++ b/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java @@ -2,12 +2,11 @@ package com.muyu.web.service.impl; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.web.config.LoadServerConfig; -import com.muyu.web.config.properties.ServiceConfigProperties; +import com.muyu.system.handle.SystemHandler; +import com.muyu.system.properties.ServerConfigProperties; import com.muyu.web.domain.ServerConfig; import com.muyu.web.domain.model.ServerConfigModel; import com.muyu.web.service.ServerConfigService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -31,7 +30,7 @@ public class ServerConfigServiceImpl extends ServiceImpl key); + ServerConfig serverConfig = ServerConfig.modeBuild(serverConfigModel, () -> SystemHandler.getUserId()); updateById(serverConfig); - LoadServerConfig.modelToProperties(serverConfigModel); + SystemHandler.setServerConfig( + ServerConfigProperties.modelToProperties(serverConfigModel) + ); } } diff --git a/src/main/java/com/muyu/web/service/impl/VechileServiceImpl.java b/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java similarity index 73% rename from src/main/java/com/muyu/web/service/impl/VechileServiceImpl.java rename to src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java index b681adb..7928ac5 100644 --- a/src/main/java/com/muyu/web/service/impl/VechileServiceImpl.java +++ b/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java @@ -3,10 +3,10 @@ package com.muyu.web.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.web.domain.Vehicle; -import com.muyu.web.mapper.VehicleMapper; +import com.muyu.web.domain.VehicleInfo; +import com.muyu.web.mapper.VehicleInfoMapper; import com.muyu.web.service.VehicleInstanceService; -import com.muyu.web.service.VehicleService; +import com.muyu.web.service.VehicleInfoService; import com.muyu.vehicle.VehicleInstance; import com.muyu.vehicle.core.LocalContainer; import lombok.extern.log4j.Log4j2; @@ -30,7 +30,7 @@ import java.util.stream.Stream; */ @Log4j2 @Service -public class VechileServiceImpl extends ServiceImpl implements VehicleService { +public class VechileInfoServiceImpl extends ServiceImpl implements VehicleInfoService { @Autowired @@ -44,9 +44,9 @@ public class VechileServiceImpl extends ServiceImpl impl @Override @Transactional public void generate (Integer sum) { - List vehicleList = Stream.generate(Vehicle::gen).limit(sum).toList(); - this.saveBatch(vehicleList); - vehicleList.forEach(vehicleInstanceService::init); + List vehicleInfoList = Stream.generate(VehicleInfo::gen).limit(sum).toList(); + this.saveBatch(vehicleInfoList); + vehicleInfoList.forEach(vehicleInstanceService::init); } /** @@ -63,8 +63,8 @@ public class VechileServiceImpl extends ServiceImpl impl if (vin.length() != 17) { errorMsg.append("vin[").append(vin).append("]").append("不为17位\n"); } else { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Vehicle::getVin, vin); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(VehicleInfo::getVin, vin); long count = this.count(queryWrapper); if (count == 1) { errorMsg.append("vin[").append(vin).append("]").append("已经存在\n"); @@ -74,9 +74,9 @@ public class VechileServiceImpl extends ServiceImpl impl if (!errorMsg.isEmpty()) { throw new RuntimeException(errorMsg.toString()); } - List vehicleList = Arrays.stream(vinList).map(Vehicle::create).toList(); - this.saveBatch(vehicleList); - vehicleList.forEach(vehicleInstanceService::init); + List vehicleInfoList = Arrays.stream(vinList).map(VehicleInfo::create).toList(); + this.saveBatch(vehicleInfoList); + vehicleInfoList.forEach(vehicleInstanceService::init); } /** @@ -91,15 +91,15 @@ public class VechileServiceImpl extends ServiceImpl impl Collection vehicleInstanceList = LocalContainer.getOnlineVehicleInstance(); // 成功数量 AtomicInteger syncSuccessSum = new AtomicInteger(); - List vehicleList = vehicleInstanceList.stream() + List vehicleInfoList = vehicleInstanceList.stream() .filter(VehicleInstance::isOnline) - .map(Vehicle::instanceBuild) + .map(VehicleInfo::instanceBuild) .toList(); - vehicleList.forEach(vehicle -> { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(Vehicle::getRemainingBattery, vehicle.getRemainingBattery()); - updateWrapper.set(Vehicle::getTotalMileage, vehicle.getTotalMileage()); - updateWrapper.eq(Vehicle::getVin, vehicle.getVin()); + vehicleInfoList.forEach(vehicle -> { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(VehicleInfo::getRemainingBattery, vehicle.getRemainingBattery()); + updateWrapper.set(VehicleInfo::getTotalMileage, vehicle.getTotalMileage()); + updateWrapper.eq(VehicleInfo::getVin, vehicle.getVin()); try { this.update(updateWrapper); syncSuccessSum.incrementAndGet(); @@ -109,7 +109,7 @@ public class VechileServiceImpl extends ServiceImpl impl } }); log.info("同步数据库结束 - 耗时:[{}MS],同步量:[{}辆],成功:[{}辆],失败:[{}辆]", - System.currentTimeMillis() - startTime, vehicleList.size(),syncSuccessSum.get(), vehicleList.size() - syncSuccessSum.get()); + System.currentTimeMillis() - startTime, vehicleInfoList.size(),syncSuccessSum.get(), vehicleInfoList.size() - syncSuccessSum.get()); }catch (Exception exception){ log.error("数据同步异常:{}", exception.getMessage(), exception); } diff --git a/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java b/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java index 9b2a026..e11394f 100644 --- a/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java +++ b/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java @@ -8,7 +8,7 @@ import com.muyu.vehicle.model.VehicleData; import com.muyu.vehicle.model.properties.MqttProperties; import com.muyu.web.common.PageList; import com.muyu.web.common.Result; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.model.MqttServerModel; import com.muyu.web.domain.model.PositionModel; import com.muyu.web.domain.req.CheckPositionReq; @@ -50,15 +50,15 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService { /** * 根据车辆生成车辆实例 * - * @param vehicle 车辆信息 + * @param vehicleInfo 车辆信息 */ @Override - public void init(Vehicle vehicle) { + public void init(VehicleInfo vehicleInfo) { VehicleInstance vehicleInstance = new VehicleInstance(); - vehicleInstance.setVehicle(vehicle); - vehicleInstance.setVehicleData(VehicleData.vehicleBuild(vehicle)); + vehicleInstance.setVehicleInfo(vehicleInfo); + vehicleInstance.setVehicleData(VehicleData.vehicleBuild(vehicleInfo)); LocalContainer.setVehicleInstance(vehicleInstance); - log.debug("构建车辆对象: [{}]", vehicle.getVin()); + log.debug("构建车辆对象: [{}]", vehicleInfo.getVin()); } /** diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4ca9853..cd0f314 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,30 +7,14 @@ spring: static-path-pattern: /static/** datasource: - username: muyu - password: 123456 - # 如果需要数据本地化,则改成 file 方式 - # jdbc:h2:mem:testDB;DB_CLOSE_DELAY=-1 - url: jdbc:h2:file:./db/vehicleSimulationDataBaseFile;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1 - driver-class-name: org.h2.Driver - h2: - # 开启这个配置就可以通过 web 页面访问了,例如:http://localhost:8080/springboot-h2/h2-console - console: - enabled: true - settings: - # 开启h2 console 跟踪 方便调试 默认 false - trace: false - # 允许console 远程访问 默认false - web-allow-others: true - # h2 访问路径上下文 - path: /h2-console + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://47.92.86.60:23658/muyu-vehicle?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: Vehicle@666 # mybatis-plus 配置 mybatis-plus: - mapper-locations: classpath*:/com.muyu.mapper/**/*.xml - #实体扫描,多个package用逗号或者分号分隔 - typeAliasesPackage: com.dmo.entity global-config: #数据库相关配置 db-config: