diff --git a/src/main/java/com/eactive/apim/portal/config/EmsDatasourceProperties.java b/src/main/java/com/eactive/apim/portal/config/EmsDatasourceProperties.java
index 511a5fb..4cde3f5 100644
--- a/src/main/java/com/eactive/apim/portal/config/EmsDatasourceProperties.java
+++ b/src/main/java/com/eactive/apim/portal/config/EmsDatasourceProperties.java
@@ -14,5 +14,6 @@ public class EmsDatasourceProperties {
private String password;
private String databaseName;
private String serverName;
+ private String schema;
private int portNumber;
}
diff --git a/src/main/java/com/eactive/apim/portal/config/GatewayDataSourceProperties.java b/src/main/java/com/eactive/apim/portal/config/GatewayDataSourceProperties.java
index 8204387..f85eb1c 100644
--- a/src/main/java/com/eactive/apim/portal/config/GatewayDataSourceProperties.java
+++ b/src/main/java/com/eactive/apim/portal/config/GatewayDataSourceProperties.java
@@ -14,5 +14,6 @@ public class GatewayDataSourceProperties {
private String password;
private String databaseName;
private String serverName;
+ private String schema;
private int portNumber;
}
diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java
index f2f6b30..d857187 100644
--- a/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java
+++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java
@@ -3,7 +3,12 @@ package com.eactive.apim.portal.config;
import com.eactive.eai.data.jpa.BaseRepositoryImpl;
import java.util.HashMap;
import java.util.Properties;
+import javax.annotation.PostConstruct;
import javax.sql.DataSource;
+
+import com.zaxxer.hikari.HikariDataSource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
@@ -19,36 +24,71 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
repositoryBaseClass = BaseRepositoryImpl.class,
entityManagerFactoryRef = "gatewayEntityManagerFactory")
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
+@Slf4j
public class PortalConfigGatewayDatasource {
@Autowired
private GatewayDataSourceProperties gatewayDataSourceProperties;
+
+ @PostConstruct
+ public void init() {
+ if (StringUtils.isEmpty(gatewayDataSourceProperties.getSchema())) {
+ log.error("Profile property 'schema' is empty. Please check your configuration.");
+ throw new IllegalArgumentException("GatewayDataSourceProperties schema is empty. Please check your configuration.");
+ }
+ }
+
+
+// @Bean
+// public DataSource gatewayDataSource() {
+// AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean();
+// dataSource.setBeanName("gatewayDataSource");
+// dataSource.setUniqueResourceName("gatewayDataSource");
+// dataSource.setMinPoolSize(5);
+// dataSource.setMaxPoolSize(10);
+// dataSource.setMaxIdleTime(60); // seconds
+// dataSource.setBorrowConnectionTimeout(30); // seconds
+// dataSource.setTestQuery("SELECT 1 FROM DUAL");
+// dataSource.setMaintenanceInterval(60);
+// dataSource.setXaDataSourceClassName("oracle.jdbc.xa.client.OracleXADataSource");
+//
+// Properties xaProperties = new Properties();
+// String url = String.format("jdbc:oracle:thin:@//%s:%d/%s",
+// gatewayDataSourceProperties.getServerName(), // HOST
+// gatewayDataSourceProperties.getPortNumber(), // PORT
+// gatewayDataSourceProperties.getDatabaseName()); // SERVICE_NAME 또는 SID
+// // SID를 사용하는 경우: "jdbc:oracle:thin:@host:port:SID"
+//
+// xaProperties.setProperty("URL", url);
+// xaProperties.setProperty("user", gatewayDataSourceProperties.getUsername());
+// xaProperties.setProperty("password", gatewayDataSourceProperties.getPassword());
+//
+// dataSource.setXaProperties(xaProperties);
+// return dataSource;
+// }
+
@Bean
public DataSource gatewayDataSource() {
- AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean();
- dataSource.setBeanName("gatewayDataSource");
- dataSource.setUniqueResourceName("gatewayDataSource");
- dataSource.setMinPoolSize(5);
- dataSource.setMaxPoolSize(10);
- dataSource.setMaxIdleTime(60); // seconds
- dataSource.setBorrowConnectionTimeout(30); // seconds
- dataSource.setTestQuery("SELECT 1 FROM DUAL");
- dataSource.setMaintenanceInterval(60);
- dataSource.setXaDataSourceClassName("oracle.jdbc.xa.client.OracleXADataSource");
+ HikariDataSource dataSource = new HikariDataSource();
- Properties xaProperties = new Properties();
String url = String.format("jdbc:oracle:thin:@//%s:%d/%s",
- gatewayDataSourceProperties.getServerName(), // HOST
- gatewayDataSourceProperties.getPortNumber(), // PORT
- gatewayDataSourceProperties.getDatabaseName()); // SERVICE_NAME 또는 SID
- // SID를 사용하는 경우: "jdbc:oracle:thin:@host:port:SID"
+ gatewayDataSourceProperties.getServerName(), // HOST
+ gatewayDataSourceProperties.getPortNumber(), // PORT
+ gatewayDataSourceProperties.getDatabaseName()); // SERVICE_NAME 또는 SID
- xaProperties.setProperty("URL", url);
- xaProperties.setProperty("user", gatewayDataSourceProperties.getUsername());
- xaProperties.setProperty("password", gatewayDataSourceProperties.getPassword());
+ dataSource.setJdbcUrl(url);
+ dataSource.setUsername(gatewayDataSourceProperties.getUsername());
+ dataSource.setPassword(gatewayDataSourceProperties.getPassword());
+ dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
+
+ // 커넥션 풀 세팅
+ dataSource.setMinimumIdle(5);
+ dataSource.setMaximumPoolSize(10);
+ dataSource.setIdleTimeout(60000); // 60초
+ dataSource.setConnectionTimeout(30000); // 30초
+ dataSource.setConnectionTestQuery("SELECT 1 FROM DUAL");
- dataSource.setXaProperties(xaProperties);
return dataSource;
}
@@ -62,6 +102,7 @@ public class PortalConfigGatewayDatasource {
properties.put("hibernate.connection.handling_mode", "DELAYED_ACQUISITION_AND_RELEASE_AFTER_TRANSACTION");
properties.put("hibernate.transaction.jta.platform", "org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform");
properties.put("hibernate.physical_naming_strategy", "com.eactive.apim.portal.common.entity.CustomPhysicalNamingStrategy");
+ properties.put("hibernate.default_schema", gatewayDataSourceProperties.getSchema());
properties.put("javax.persistence.validation.mode", "none");
properties.put("javax.persistence.transactionType", "JTA");
diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java
index 46a50a9..265bd60 100644
--- a/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java
+++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java
@@ -1,11 +1,12 @@
package com.eactive.apim.portal.config;
import com.eactive.eai.data.jpa.BaseRepositoryImpl;
+import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -19,9 +20,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
-import java.util.Arrays;
import java.util.HashMap;
-import java.util.Properties;
/**
* @author Sungpil Hyun
@@ -56,35 +55,59 @@ public class PortalConfigPortalDatasource {
@PostConstruct
public void checkProfile() {
- log.warn("Active profiles: {}", Arrays.toString(env.getActiveProfiles()));
+ if (StringUtils.isEmpty(emsDatasourceProperties.getSchema())) {
+ log.error("Profile property 'schema' is empty. Please check your configuration.");
+ throw new IllegalArgumentException("'ems.datasource.schema' is not configured.");
+ }
}
- @Primary
+ @Primary
@Bean
public DataSource portalDataSource() {
- AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean();
- dataSource.setBeanName("portalDataSource");
- dataSource.setUniqueResourceName("portalDataSource");
- dataSource.setMinPoolSize(5);
- dataSource.setMaxPoolSize(10);
- dataSource.setMaxIdleTime(60); // seconds
- dataSource.setBorrowConnectionTimeout(30); // seconds
- dataSource.setTestQuery("SELECT 1 FROM DUAL");
- dataSource.setMaintenanceInterval(60);
- dataSource.setXaDataSourceClassName("oracle.jdbc.xa.client.OracleXADataSource");
+// AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean();
+// dataSource.setBeanName("portalDataSource");
+// dataSource.setUniqueResourceName("portalDataSource");
+// dataSource.setMinPoolSize(5);
+// dataSource.setMaxPoolSize(10);
+// dataSource.setMaxIdleTime(60); // seconds
+// dataSource.setBorrowConnectionTimeout(30); // seconds
+// dataSource.setTestQuery("SELECT 1 FROM DUAL");
+// dataSource.setMaintenanceInterval(60);
+// dataSource.setXaDataSourceClassName("oracle.jdbc.xa.client.OracleXADataSource");
+//
+// Properties xaProperties = new Properties();
+// String url = String.format("jdbc:oracle:thin:@//%s:%d/%s",
+// emsDatasourceProperties.getServerName(), // HOST
+// emsDatasourceProperties.getPortNumber(), // PORT
+// emsDatasourceProperties.getDatabaseName()); // SERVICE_NAME 또는 SID
+// // SID를 사용하는 경우: "jdbc:oracle:thin:@host:port:SID"
+//
+// xaProperties.setProperty("URL", url);
+// xaProperties.setProperty("user", emsDatasourceProperties.getUsername());
+// xaProperties.setProperty("password", emsDatasourceProperties.getPassword());
+//
+// dataSource.setXaProperties(xaProperties);
+// return dataSource;
+
+ HikariDataSource dataSource = new HikariDataSource();
- Properties xaProperties = new Properties();
String url = String.format("jdbc:oracle:thin:@//%s:%d/%s",
- emsDatasourceProperties.getServerName(), // HOST
- emsDatasourceProperties.getPortNumber(), // PORT
- emsDatasourceProperties.getDatabaseName()); // SERVICE_NAME 또는 SID
- // SID를 사용하는 경우: "jdbc:oracle:thin:@host:port:SID"
+ emsDatasourceProperties.getServerName(), // HOST
+ emsDatasourceProperties.getPortNumber(), // PORT
+ emsDatasourceProperties.getDatabaseName()); // SERVICE_NAME 또는 SID
- xaProperties.setProperty("URL", url);
- xaProperties.setProperty("user", emsDatasourceProperties.getUsername());
- xaProperties.setProperty("password", emsDatasourceProperties.getPassword());
+ dataSource.setJdbcUrl(url);
+ dataSource.setUsername(emsDatasourceProperties.getUsername());
+ dataSource.setPassword(emsDatasourceProperties.getPassword());
+ dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
+
+ // 커넥션 풀 설정
+ dataSource.setMinimumIdle(5);
+ dataSource.setMaximumPoolSize(10);
+ dataSource.setIdleTimeout(60000); // 60s
+ dataSource.setConnectionTimeout(30000); // 30s
+ dataSource.setConnectionTestQuery("SELECT 1 FROM DUAL");
- dataSource.setXaProperties(xaProperties);
return dataSource;
}
@@ -106,6 +129,7 @@ public class PortalConfigPortalDatasource {
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.transaction.jta.platform", "org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform");
properties.put("hibernate.use_sql_comments", "true");
+ properties.put("hibernate.default_schema", emsDatasourceProperties.getSchema());
properties.put("javax.persistence.validation.mode", "none");
properties.put("javax.persistence.transactionType", "JTA");
diff --git a/src/main/resources/application-gf63.yml b/src/main/resources/application-gf63.yml
index f1c3975..2a8eeaf 100644
--- a/src/main/resources/application-gf63.yml
+++ b/src/main/resources/application-gf63.yml
@@ -20,16 +20,18 @@ ems:
serverName: 192.168.240.177
portNumber: 1599
databaseName: DAPM
- username: EMSADM
- password: EMSADM123!
+ username: EMSAPP
+ password: EMSAPP123!
+ schema: EMSADM
gateway:
datasource:
serverName: 192.168.240.177
portNumber: 1599
databaseName: DAPM
- username: AGWADM
- password: AGWADM123!
+ username: AGWAPP
+ password: AGWAPP123!
+ schema: AGWADM
proxy:
diff --git a/src/main/resources/application-stage.yml b/src/main/resources/application-stage.yml
index 4484b34..5312d47 100644
--- a/src/main/resources/application-stage.yml
+++ b/src/main/resources/application-stage.yml
@@ -22,6 +22,7 @@ ems:
databaseName: DAPM
username: EMSAPP
password: EMSAPP123!
+ schema: EMSADM
gateway:
datasource:
@@ -30,6 +31,7 @@ gateway:
databaseName: DAPM
username: AGWAPP
password: AGWAPP123!
+ schema: AGWADM
#proxy:
# targets:
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index 18392b2..d075bcf 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -40,6 +40,10 @@
+
+
+
+