diff --git a/build.gradle b/build.gradle index 47705b8..16b4f27 100644 --- a/build.gradle +++ b/build.gradle @@ -80,8 +80,11 @@ dependencies { implementation group: 'org.apache.velocity', name: 'velocity-engine-core', version: '2.3' - runtimeOnly group: 'com.mysql', name: 'mysql-connector-j', version: '8.4.0' - + // runtimeOnly group: 'com.mysql', name: 'mysql-connector-j', version: '8.4.0' + + // oracle 드라이버 의존성 추가 + runtimeOnly 'com.oracle.database.jdbc:ojdbc8:19.20.0.0' + implementation 'net.bytebuddy:byte-buddy:1.14.5' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' @@ -150,4 +153,4 @@ war { from('src/main/resources/jeus-web-dd.xml') { into 'WEB-INF' } from('src/main/resources/weblogic.xml') { into 'WEB-INF' } -} +} \ No newline at end of file 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 cb33855..f2f6b30 100644 --- a/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java @@ -33,21 +33,21 @@ public class PortalConfigGatewayDatasource { dataSource.setMaxPoolSize(10); dataSource.setMaxIdleTime(60); // seconds dataSource.setBorrowConnectionTimeout(30); // seconds - dataSource.setTestQuery("SELECT 1"); + dataSource.setTestQuery("SELECT 1 FROM DUAL"); dataSource.setMaintenanceInterval(60); - dataSource.setXaDataSourceClassName("com.mysql.cj.jdbc.MysqlXADataSource"); + dataSource.setXaDataSourceClassName("oracle.jdbc.xa.client.OracleXADataSource"); Properties xaProperties = new Properties(); - xaProperties.setProperty("serverName", gatewayDataSourceProperties.getServerName()); - xaProperties.setProperty("portNumber", String.valueOf(gatewayDataSourceProperties.getPortNumber())); - xaProperties.setProperty("databaseName", gatewayDataSourceProperties.getDatabaseName()); + 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()); - xaProperties.setProperty("useSSL", "false"); - xaProperties.setProperty("autoReconnect", "true"); - xaProperties.setProperty("failOverReadOnly", "false"); - xaProperties.setProperty("maxReconnects", "3"); - xaProperties.setProperty("allowPublicKeyRetrieval", "true"); + dataSource.setXaProperties(xaProperties); return dataSource; } @@ -58,7 +58,7 @@ public class PortalConfigGatewayDatasource { @Qualifier("gatewayDataSource") DataSource dataSource) { HashMap properties = new HashMap<>(); //public interface AvailableSettings extends org.hibernate.jpa.AvailableSettings 참고 - properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect"); + properties.put("hibernate.dialect", "org.hibernate.dialect.Oracle12cDialect"); 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"); 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 2682388..46a50a9 100644 --- a/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java @@ -59,16 +59,9 @@ public class PortalConfigPortalDatasource { log.warn("Active profiles: {}", Arrays.toString(env.getActiveProfiles())); } - @Primary + @Primary @Bean public DataSource portalDataSource() { - log.warn("Datasource - portal configuration"); - log.warn("serverName : {}", emsDatasourceProperties.getServerName()); - log.warn("PortNumber : {}", String.valueOf(emsDatasourceProperties.getPortNumber())); - log.warn("DatabaseName : {}", emsDatasourceProperties.getDatabaseName()); - log.warn("Username : {}", emsDatasourceProperties.getUsername()); - log.warn("Password : {}", emsDatasourceProperties.getPassword()); - AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean(); dataSource.setBeanName("portalDataSource"); dataSource.setUniqueResourceName("portalDataSource"); @@ -76,20 +69,20 @@ public class PortalConfigPortalDatasource { dataSource.setMaxPoolSize(10); dataSource.setMaxIdleTime(60); // seconds dataSource.setBorrowConnectionTimeout(30); // seconds - dataSource.setTestQuery("SELECT 1"); + dataSource.setTestQuery("SELECT 1 FROM DUAL"); dataSource.setMaintenanceInterval(60); - dataSource.setXaDataSourceClassName("com.mysql.cj.jdbc.MysqlXADataSource"); + dataSource.setXaDataSourceClassName("oracle.jdbc.xa.client.OracleXADataSource"); + Properties xaProperties = new Properties(); - xaProperties.setProperty("serverName", emsDatasourceProperties.getServerName()); - xaProperties.setProperty("portNumber", String.valueOf(emsDatasourceProperties.getPortNumber())); - xaProperties.setProperty("databaseName", emsDatasourceProperties.getDatabaseName()); + 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()); - xaProperties.setProperty("useSSL", "false"); - xaProperties.setProperty("autoReconnect", "true"); - xaProperties.setProperty("failOverReadOnly", "false"); - xaProperties.setProperty("maxReconnects", "3"); - xaProperties.setProperty("allowPublicKeyRetrieval", "true"); dataSource.setXaProperties(xaProperties); return dataSource; @@ -107,7 +100,7 @@ public class PortalConfigPortalDatasource { properties.put("hibernate.connection.autocommit", "false"); properties.put("hibernate.connection.handling_mode", "DELAYED_ACQUISITION_AND_RELEASE_AFTER_TRANSACTION"); properties.put("hibernate.connection.provider_disables_autocommit", "true"); - properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect"); + properties.put("hibernate.dialect", "org.hibernate.dialect.Oracle12cDialect"); properties.put("hibernate.format_sql", "true"); properties.put("hibernate.physical_naming_strategy", "com.eactive.apim.portal.common.entity.CustomPhysicalNamingStrategy"); properties.put("hibernate.show_sql", "true"); @@ -120,7 +113,7 @@ public class PortalConfigPortalDatasource { // Envers properties org.hibernate.envers.configuration.EnversSettings 참고 properties.put("org.hibernate.envers.audit_strategy", "org.hibernate.envers.strategy.internal.ValidityAuditStrategy"); properties.put("org.hibernate.envers.audit_table_suffix", "_AUD"); - properties.put("org.hibernate.envers.default_catalog", "audit"); + properties.put("org.hibernate.envers.default_schema", "audit"); properties.put("org.hibernate.envers.global_with_modified_flag", "true"); properties.put("org.hibernate.envers.revision_field_name", "REVISION"); properties.put("org.hibernate.envers.revision_type_field_name", "REVISION_TYPE");