This commit is contained in:
kochetkov 2024-09-06 11:04:48 +03:00
parent 298c135dea
commit ced6aea94d
5 changed files with 240 additions and 45 deletions

View file

@ -53,7 +53,6 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
@ -130,6 +129,7 @@
<dependency>
<groupId>ru.cg.webbpm.modules.database</groupId>
<artifactId>database-impl</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ru.cg.webbpm.modules.jndi</groupId>
@ -208,18 +208,6 @@
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>org.mnode.ical4j</groupId>
<artifactId>ical4j</artifactId>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
@ -232,6 +220,22 @@
<groupId>ru.cg.webbpm.packages.base</groupId>
<artifactId>backend</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${parent.artifactId}</finalName>

View file

@ -0,0 +1,151 @@
package ru.micord.ervu.db;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.jooq.ConnectionProvider;
import org.jooq.DSLContext;
import org.jooq.ExecuteListener;
import org.jooq.conf.Settings;
import org.jooq.impl.DefaultConfiguration;
import org.jooq.impl.DefaultDSLContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
import org.springframework.transaction.PlatformTransactionManager;
import ru.fix.aggregating.profiler.PrefixedProfiler;
import ru.fix.aggregating.profiler.Profiler;
import ru.cg.webbpm.modules.core.metrics.MetricsConfig;
import ru.cg.webbpm.modules.core.runtime.api.context.ExecutionContextHelper;
import ru.cg.webbpm.modules.database.api.ConfigurationProvider;
import ru.cg.webbpm.modules.database.api.metrics.DataSourceWithMetrics;
import ru.cg.webbpm.modules.database.api.provider.DslProvider;
import ru.cg.webbpm.modules.database.bean.config.Datasource;
import ru.cg.webbpm.modules.database.impl.DbConfInitializer;
import ru.cg.webbpm.modules.database.impl.data_source.DataSourceConfigReader;
import ru.cg.webbpm.modules.database.impl.data_source.DataSourceFactory;
import ru.cg.webbpm.modules.database.impl.data_source.HikariDataSourceFactory;
import ru.cg.webbpm.modules.database.impl.data_source.JndiDataSourceFactory;
import ru.cg.webbpm.modules.database.impl.provider.DefaultConnectionProvider;
import ru.cg.webbpm.modules.database.impl.provider.DslProviderImpl;
import ru.cg.webbpm.modules.database.impl.service.ProcessSqlService;
import ru.cg.webbpm.modules.resources.api.ResourceProvider;
@Configuration
@Import(MetricsConfig.class)
public class DbConfiguration {
@Value("${webbpm.db.query_timeout:120}")
private Integer queryTimeout;
@Autowired
private ResourceProvider resourceProvider;
@Autowired
private ProcessSqlService processSqlService;
@Autowired
private Profiler profiler;
@Autowired
private ExecutionContextHelper executionContextHelper;
@Autowired
private ExecuteListener[] executeListeners;
private final Map<String, DSLContext> dslContextMap = new HashMap<>();
private final Map<String, ConnectionProvider> connectionProviderMap = new HashMap<>();
@Bean
public Datasource datasourceConfig() {
return DataSourceConfigReader.read(resourceProvider);
}
@Bean(destroyMethod = "destroy")
public DataSourceFactory dataSourceFactory(HikariDataSourceFactory hikariDataSourceFactory) {
return new DataSourceFactory(hikariDataSourceFactory);
}
@Bean
@Primary
public DataSource datasource(DataSourceFactory dataSourceFactory) {
DataSource dataSource = dataSourceFactory.createDataSource(datasourceConfig(),
JndiDataSourceFactory::createDataSource
);
return new DataSourceWithMetrics(
dataSource,
"project",
new PrefixedProfiler(profiler, "webbpm.db"),
executionContextHelper
);
}
@Bean
public PlatformTransactionManager txManager(@Qualifier("datasource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
@Primary
public TransactionAwareDataSourceProxy transactionAwareDataSource(DataSource dataSource) {
return new TransactionAwareDataSourceProxy(dataSource);
}
@Bean
@Primary
public DefaultConnectionProvider connectionProvider(
TransactionAwareDataSourceProxy transactionAwareDataSourceProxy) {
return new DefaultConnectionProvider(transactionAwareDataSourceProxy, processSqlService,
connectionProviderMap
);
}
@Bean
public Settings jooqSettings(DataSourceFactory dataSourceFactory) {
Settings settings = new Settings();
if (dataSourceFactory.dataSourceType() == DataSourceFactory.DataSourceType.HIKARI) {
settings.setQueryTimeout(queryTimeout);
}
return settings;
}
@Bean
@Primary
public org.jooq.Configuration jooqConfiguration(ConnectionProvider connectionProvider,
Settings jooqSettings) {
DefaultConfiguration configuration = new DefaultConfiguration();
configuration.setSQLDialect(datasourceConfig().getSqlDialect());
jooqSettings = jooqSettings.withExecuteLogging(false);
configuration.setSettings(jooqSettings);
configuration.setConnectionProvider(connectionProvider);
configuration.set(executeListeners);
return configuration;
}
@Bean
@Primary
public DSLContext dsl(org.jooq.Configuration configuration) {
return new DefaultDSLContext(configuration);
}
@Bean
public ConfigurationProvider configurationProvider(
PlatformTransactionManager platformTransactionManager) {
return () -> platformTransactionManager;
}
@Bean
public DslProvider dslProvider(@Qualifier("dsl") DSLContext dsl) {
return new DslProviderImpl(dsl, this.dslContextMap);
}
@Bean
public DbConfInitializer dbConfInitializer(DataSourceFactory dataSourceFactory,
org.jooq.Configuration masterConfiguration, Datasource datasource) {
return new DbConfInitializer(dataSourceFactory, masterConfiguration, datasource,
processSqlService, connectionProviderMap, dslContextMap);
}
}

View file

@ -1,8 +1,7 @@
package ru.micord.security;
package ru.micord.ervu.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

View file

@ -0,0 +1,30 @@
<Configuration status="WARN" monitorInterval="30">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingRandomAccessFile name="LogToRollingRandomAccessFile" fileName="${sys:catalina.home}/logs/ervu-fl.log"
filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingRandomAccessFile>
<Async name="Async">
<AppenderRef ref="LogToRollingRandomAccessFile"/>
</Async>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="Async"/>
</Root>
</Loggers>
</Configuration>

71
pom.xml
View file

@ -100,6 +100,22 @@
<groupId>ru.cg.webbpm.modules.security</groupId>
<artifactId>security-adapter</artifactId>
</exclusion>
<exclusion>
<groupId>ru.micord.fias</groupId>
<artifactId>client</artifactId>
</exclusion>
<exclusion>
<groupId>ru.micord.gar</groupId>
<artifactId>gar-client</artifactId>
</exclusion>
<exclusion>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
</exclusion>
<exclusion>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-jdbc-template</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
@ -176,11 +192,6 @@
<version>${webbpm-platform.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ru.cg.webbpm.modules.security</groupId>
<artifactId>security-beans</artifactId>
<version>${webbpm-platform.version}</version>
</dependency>
<dependency>
<groupId>ru.cg.webbpm.modules.security</groupId>
<artifactId>security-api</artifactId>
@ -274,21 +285,6 @@
<version>${webbpm-platform.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ru.cg.webbpm.modules.security</groupId>
<artifactId>security-esia</artifactId>
<version>${webbpm-platform.version}</version>
</dependency>
<dependency>
<groupId>ru.cg.webbpm.modules.security</groupId>
<artifactId>security-db-synchronization-api</artifactId>
<version>${webbpm-platform.version}</version>
</dependency>
<dependency>
<groupId>ru.cg.webbpm.modules.security</groupId>
<artifactId>security-db-synchronization-ldap-impl</artifactId>
<version>${webbpm-platform.version}</version>
</dependency>
<dependency>
<groupId>ru.cg.webbpm</groupId>
<artifactId>web-tests-core</artifactId>
@ -304,16 +300,6 @@
<artifactId>bcpkix-jdk15on</artifactId>
<version>${org.bouncycastle.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security.kerberos</groupId>
<artifactId>spring-security-kerberos-core</artifactId>
<version>${spring-security-kerberos.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security.kerberos</groupId>
<artifactId>spring-security-kerberos-web</artifactId>
<version>${spring-security-kerberos.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
@ -350,6 +336,31 @@
<artifactId>slf4j-simple</artifactId>
<version>1.7.28</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.13</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.23.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.23.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<version>2.23.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.23.1</version>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>