Subversion Repositories SmartDukaan

Rev

Rev 35383 | Rev 35828 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 35383 Rev 35596
Line 9... Line 9...
9
 
9
 
10
import javax.annotation.PreDestroy;
10
import javax.annotation.PreDestroy;
11
import javax.sql.DataSource;
11
import javax.sql.DataSource;
12
 
12
 
13
import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread;
13
import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread;
-
 
14
import com.zaxxer.hikari.HikariConfig;
-
 
15
import com.zaxxer.hikari.HikariDataSource;
14
import org.hibernate.SessionFactory;
16
import org.hibernate.SessionFactory;
15
import org.apache.logging.log4j.Logger;
17
import org.apache.logging.log4j.Logger;
16
import org.apache.logging.log4j.LogManager;
18
import org.apache.logging.log4j.LogManager;
17
import org.springframework.beans.factory.annotation.Autowired;
19
import org.springframework.beans.factory.annotation.Autowired;
18
import org.springframework.context.annotation.Bean;
20
import org.springframework.context.annotation.Bean;
19
import org.springframework.context.annotation.ComponentScan;
21
import org.springframework.context.annotation.ComponentScan;
20
import org.springframework.context.annotation.Configuration;
22
import org.springframework.context.annotation.Configuration;
-
 
23
import org.springframework.context.annotation.Primary;
21
import org.springframework.core.io.Resource;
24
import org.springframework.core.io.Resource;
22
import org.springframework.jdbc.datasource.DriverManagerDataSource;
-
 
23
import org.springframework.orm.hibernate5.HibernateTransactionManager;
25
import org.springframework.orm.hibernate5.HibernateTransactionManager;
24
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
26
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
25
import org.springframework.transaction.annotation.EnableTransactionManagement;
27
import org.springframework.transaction.annotation.EnableTransactionManagement;
26
import com.spice.profitmandi.dao.repository.dtr.Mongo;
28
import com.spice.profitmandi.dao.repository.dtr.Mongo;
27
 
29
 
Line 32... Line 34...
32
@EnableTransactionManagement
34
@EnableTransactionManagement
33
@ComponentScan({ "com.spice.profitmandi.*" })
35
@ComponentScan({ "com.spice.profitmandi.*" })
34
public class WebDBContextConfigure {
36
public class WebDBContextConfigure {
35
 
37
 
36
	private static final Logger LOGGER = LogManager.getLogger(WebDBContextConfigure.class);
38
	private static final Logger LOGGER = LogManager.getLogger(WebDBContextConfigure.class);
37
	
-
 
38
	
-
 
39
	
-
 
40
	
39
 
41
	private static final String HIBERNATE_DRIVER_CLASS = "hibernate.driver.class";
40
	private static final String HIBERNATE_DRIVER_CLASS = "hibernate.driver.class";
42
	private static final String HIBERNATE_URL = "hibernate.url";
41
	private static final String HIBERNATE_URL = "hibernate.url";
43
	private static final String HIBERNATE_USER_NAME = "hibernate.user.name";
42
	private static final String HIBERNATE_USER_NAME = "hibernate.user.name";
44
	private static final String HIBERNATE_PASSWORD = "hibernate.password";
43
	private static final String HIBERNATE_PASSWORD = "hibernate.password";
45
	private static final String HIBERNATE_DIALECT = "hibernate.dialect";
44
	private static final String HIBERNATE_DIALECT = "hibernate.dialect";
46
	private static final String HIBERNATE_SHOW_SQL = "hibernate.show_sql";
45
	private static final String HIBERNATE_SHOW_SQL = "hibernate.show_sql";
47
	private static final String HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
46
	private static final String HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
48
	private static final String HIBERNATE_JDBC_BATCH_SIZE = "hibernate.jdbc.batch_size";
47
	private static final String HIBERNATE_JDBC_BATCH_SIZE = "hibernate.jdbc.batch_size";
49
	private static final String HIBERNATE_C3P0_MIN_SIZE = "hibernate.c3p0.min_size";
48
	private static final String HIKARI_MAX_POOL_SIZE = "hikari.maximumPoolSize";
50
	private static final String HIBERNATE_C3P0_MAX_SIZE = "hibernate.c3p0.max_size";
49
	private static final String HIKARI_MIN_IDLE = "hikari.minimumIdle";
51
	private static final String HIBERNATE_C3P0_TIMEOUT= "hibernate.c3p0.timeout";
50
	private static final String HIKARI_IDLE_TIMEOUT = "hikari.idleTimeout";
52
	private static final String HIBERNATE_C3P0_MAX_STATEMENTS = "hibernate.c3p0.max_statements";
51
	private static final String HIKARI_MAX_LIFETIME = "hikari.maxLifetime";
53
	private static final String HIBERNATE_C3P0_IDLE_TEST_PERIOD = "hibernate.c3p0.idle_test_period";
52
	private static final String HIKARI_CONNECTION_TIMEOUT = "hikari.connectionTimeout";
-
 
53
 
54
	private Resource resource = AppConfig.getResource();
54
	private Resource resource = AppConfig.getResource();
55
 
55
 
56
	@Bean(name = "dataSource")
56
	@Bean(name = "dataSource", destroyMethod = "close")
57
	public DataSource dataSource() {
57
	public DataSource dataSource() {
58
		Properties properties = new Properties();
58
		Properties properties = new Properties();
59
		try {
59
		try {
60
			properties.load(resource.getInputStream());
60
			properties.load(resource.getInputStream());
61
		} catch (IOException e) {
61
		} catch (IOException e) {
62
			e.printStackTrace();
62
			LOGGER.error("Failed to load properties", e);
63
		}
63
		}
-
 
64
 
64
		DriverManagerDataSource dataSource = new DriverManagerDataSource();
65
		HikariConfig config = new HikariConfig();
65
		dataSource.setDriverClassName(properties.getProperty(HIBERNATE_DRIVER_CLASS));
66
		config.setDriverClassName(properties.getProperty(HIBERNATE_DRIVER_CLASS));
66
		dataSource.setUrl(properties.getProperty(HIBERNATE_URL));
67
		config.setJdbcUrl(properties.getProperty(HIBERNATE_URL));
67
		dataSource.setUsername(properties.getProperty(HIBERNATE_USER_NAME));
68
		config.setUsername(properties.getProperty(HIBERNATE_USER_NAME));
68
		dataSource.setPassword(properties.getProperty(HIBERNATE_PASSWORD));
69
		config.setPassword(properties.getProperty(HIBERNATE_PASSWORD));
-
 
70
		config.setMaximumPoolSize(Integer.parseInt(properties.getProperty(HIKARI_MAX_POOL_SIZE, "20")));
-
 
71
		config.setMinimumIdle(Integer.parseInt(properties.getProperty(HIKARI_MIN_IDLE, "2")));
-
 
72
		config.setIdleTimeout(Long.parseLong(properties.getProperty(HIKARI_IDLE_TIMEOUT, "30000")));
-
 
73
		config.setMaxLifetime(Long.parseLong(properties.getProperty(HIKARI_MAX_LIFETIME, "1800000")));
-
 
74
		config.setConnectionTimeout(Long.parseLong(properties.getProperty(HIKARI_CONNECTION_TIMEOUT, "30000")));
-
 
75
		config.setPoolName("HikariPool-Web");
-
 
76
		config.setLeakDetectionThreshold(30000);
-
 
77
 
-
 
78
		LOGGER.info("Initializing HikariDataSource with URL: {}", properties.getProperty(HIBERNATE_URL));
69
		return dataSource;
79
		return new HikariDataSource(config);
70
	}
80
	}
71
 
81
 
72
	@Bean
82
	@Bean
73
	public Properties getHibernateProperties() {
83
	public Properties getHibernateProperties() {
74
		Properties dbProperties = new Properties();
84
		Properties dbProperties = new Properties();
75
		Properties properties = new Properties();
85
		Properties properties = new Properties();
76
		try {
86
		try {
77
			properties.load(resource.getInputStream());
87
			properties.load(resource.getInputStream());
78
		} catch (IOException e) {
88
		} catch (IOException e) {
79
			e.printStackTrace();
89
			LOGGER.error("Failed to load properties", e);
80
		}
90
		}
81
		dbProperties.put(HIBERNATE_DIALECT, properties.getProperty(HIBERNATE_DIALECT));
91
		dbProperties.put(HIBERNATE_DIALECT, properties.getProperty(HIBERNATE_DIALECT));
82
		dbProperties.put(HIBERNATE_SHOW_SQL, properties.getProperty(HIBERNATE_SHOW_SQL));
92
		dbProperties.put(HIBERNATE_SHOW_SQL, properties.getProperty(HIBERNATE_SHOW_SQL));
83
		dbProperties.put(HIBERNATE_FORMAT_SQL, properties.getProperty(HIBERNATE_FORMAT_SQL));
93
		dbProperties.put(HIBERNATE_FORMAT_SQL, properties.getProperty(HIBERNATE_FORMAT_SQL));
84
		dbProperties.put(HIBERNATE_JDBC_BATCH_SIZE, properties.getProperty(HIBERNATE_JDBC_BATCH_SIZE));
94
		dbProperties.put(HIBERNATE_JDBC_BATCH_SIZE, properties.getProperty(HIBERNATE_JDBC_BATCH_SIZE));
85
		dbProperties.put(HIBERNATE_C3P0_MIN_SIZE, properties.getProperty(HIBERNATE_C3P0_MIN_SIZE));
-
 
86
		dbProperties.put(HIBERNATE_C3P0_MAX_SIZE, properties.getProperty(HIBERNATE_C3P0_MAX_SIZE));
-
 
87
		dbProperties.put(HIBERNATE_C3P0_TIMEOUT, properties.getProperty(HIBERNATE_C3P0_TIMEOUT));
-
 
88
		dbProperties.put(HIBERNATE_C3P0_MAX_STATEMENTS, properties.getProperty(HIBERNATE_C3P0_MAX_STATEMENTS));
-
 
89
		dbProperties.put(HIBERNATE_C3P0_IDLE_TEST_PERIOD, properties.getProperty(HIBERNATE_C3P0_IDLE_TEST_PERIOD));
-
 
90
		return dbProperties;
95
		return dbProperties;
91
	}
96
	}
92
 
97
 
93
	@Autowired
98
	@Primary
94
	@Bean(name = "sessionFactory")
99
	@Bean(name = "sessionFactory")
95
	public SessionFactory getSessionFactory(DataSource dataSource) {
100
	public SessionFactory getSessionFactory(DataSource dataSource) {
96
		LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
101
		LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
97
		sessionBuilder.addProperties(getHibernateProperties());
102
		sessionBuilder.addProperties(getHibernateProperties());
98
		sessionBuilder.scanPackages("com.spice.profitmandi.dao.*");
103
		sessionBuilder.scanPackages("com.spice.profitmandi.dao.*");
-
 
104
		LOGGER.info("SessionFactory created");
99
		return sessionBuilder.buildSessionFactory();
105
		return sessionBuilder.buildSessionFactory();
100
	}
106
	}
101
 
107
 
102
	@Autowired
108
	@Primary
103
	@Bean(name = "transactionManager")
109
	@Bean(name = "transactionManager")
104
	public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
110
	public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
105
		HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
111
		return new HibernateTransactionManager(sessionFactory);
106
		return transactionManager;
-
 
107
	}
112
	}
108
	
113
	
109
	@Bean(destroyMethod = "close")
114
	@Bean(destroyMethod = "close")
110
	public Mongo mongoClient() {
115
	public Mongo mongoClient() {
111
		Properties properties = new Properties();
116
		Properties properties = new Properties();