diff --git a/build.gradle b/build.gradle index d6b0c2e..3e39ede 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,12 @@ plugins { id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.1.3' + id 'com.diffplug.eclipse.apt' version '3.41.1' id 'java' - id 'java-library' + id 'java-library' id 'eclipse-wtp' id 'idea' id 'war' - id 'com.diffplug.eclipse.apt' version '3.41.1' -// id "org.sonarqube" version "4.2.1.3168" } bootJar.enabled = true @@ -18,6 +17,7 @@ version = '2.0.0' sourceCompatibility = "1.8" targetCompatibility = "1.8" + configurations { annotationProcessor configureEach { @@ -30,7 +30,6 @@ compileJava { options.encoding = 'UTF-8' } - war { archiveFileName = "elink-test-master.war" exclude '**/persistence.xml' @@ -43,7 +42,7 @@ dependencies { implementation 'org.mapstruct:mapstruct:1.5.5.Final' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.data:spring-data-envers' - implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-security' @@ -54,6 +53,16 @@ dependencies { implementation 'com.navercorp.lucy:lucy-xss-servlet:2.0.1' implementation group: 'com.lmax', name: 'disruptor', version: '3.4.4' + if (project.hasProperty("profile") && project.property("profile") == "weblogic") { + // WebLogic 배포 시에는 톰캣을 WAR에 넣지 않음 + implementation('org.springframework.boot:spring-boot-starter-web') { + exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' + } + providedCompile "javax:javaee-api:8.0" + } else { + implementation 'org.springframework.boot:spring-boot-starter-web' + } + // implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation 'org.apache.httpcomponents:httpclient:4.5.14' implementation 'com.hazelcast:hazelcast:4.2.8' @@ -77,10 +86,12 @@ dependencies { implementation 'org.mdkt.compiler:InMemoryJavaCompiler:1.3.0' testImplementation 'org.springframework.boot:spring-boot-starter-test' + providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' // Weblogic 14.1.2(Java17) 대응 관련 // Nashorn(JavaScript 엔진, Java15이상 JRE System Library에서 제외됨) 대응, 대체용 검토필요. - implementation 'org.graalvm.js:js:25.0.0' - implementation 'org.graalvm.js:js-scriptengine:25.0.0' +// implementation 'org.graalvm.js:js:25.0.0' +// implementation 'org.graalvm.js:js-scriptengine:25.0.0' + implementation "org.openjdk.nashorn:nashorn-core:15.4" } bootJar { @@ -91,31 +102,17 @@ test { useJUnitPlatform() } -//eclipse { -// wtp { -// component { -// contextPath = '/' -// } -// } -// synchronizationTasks settingEclipseEncoding, initDirs -// -// jdt { -// apt { -// // generated 된 패스 경로를 .setting/org.eclipse.jdt.apt.core.prefs 의 org.eclipse.jdt.apt.genSrcDir에 적용한다. -// // project > properties > Java Compiler > Annoation Processing 화면에서 확인 가능하다. -// genSrcDir = file(generatedJavaDir) -// } -// } -// -// project { -// natures = ['org.eclipse.buildship.core.gradleprojectnature', -// 'org.eclipse.jdt.core.javanature', -// 'org.eclipse.wst.common.project.facet.core.nature', -// 'org.eclipse.wst.common.modulecore.ModuleCoreNature', -// 'org.eclipse.jem.workbench.JavaEMFNature'] -// buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder' -// buildCommand 'org.eclipse.wst.validation.validationbuilder' -// buildCommand 'org.eclipse.wst.common.project.facet.core.builder' -// buildCommand 'org.eclipse.jdt.core.javabuilder' -// } -//} +war { + + // Set the name of the WAR file (optional) + archiveFileName = "elink-test-master.war" + +// from('src/main/resources/jeus-web-dd.xml') { into 'WEB-INF' } + from('src/main/resources/weblogic.xml') { into 'WEB-INF' } + +} + +bootWar { + archiveFileName = "elink-test-master.war" + from('src/main/resources/weblogic.xml') { into 'WEB-INF' } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/testmaster/ElinkTestMaster.java b/src/main/java/com/eactive/testmaster/ElinkTestMaster.java index c92491a..e70df84 100644 --- a/src/main/java/com/eactive/testmaster/ElinkTestMaster.java +++ b/src/main/java/com/eactive/testmaster/ElinkTestMaster.java @@ -3,13 +3,19 @@ package com.eactive.testmaster; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication(exclude = { UserDetailsServiceAutoConfiguration.class, }) @ComponentScan("com.eactive") -public class ElinkTestMaster { +public class ElinkTestMaster extends SpringBootServletInitializer { + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(ElinkTestMaster.class); + } public static void main(String[] args) { SpringApplication.run(ElinkTestMaster.class, args); diff --git a/src/main/java/com/eactive/testmaster/config/ServletConfig.java b/src/main/java/com/eactive/testmaster/config/ServletConfig.java index 91d55a0..5b5b8e0 100644 --- a/src/main/java/com/eactive/testmaster/config/ServletConfig.java +++ b/src/main/java/com/eactive/testmaster/config/ServletConfig.java @@ -6,7 +6,9 @@ import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactor import org.springframework.boot.web.servlet.server.ServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +@Profile("!weblogic") @Configuration public class ServletConfig { diff --git a/src/main/java/com/eactive/testmaster/loadtest/service/VirtualUser.java b/src/main/java/com/eactive/testmaster/loadtest/service/VirtualUser.java index d4343bc..74bf02f 100644 --- a/src/main/java/com/eactive/testmaster/loadtest/service/VirtualUser.java +++ b/src/main/java/com/eactive/testmaster/loadtest/service/VirtualUser.java @@ -7,24 +7,20 @@ import com.eactive.testmaster.client.dto.ApiResponse; import com.eactive.testmaster.client.dto.internal.ScenarioNode; import com.eactive.testmaster.client.service.ApiClientFactory; import com.eactive.testmaster.loadtest.dto.LoadTestRequestAndResponse; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutionException; -import java.util.regex.Pattern; +import org.apache.commons.lang3.SerializationUtils; +import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.script.Bindings; import javax.script.ScriptEngine; import javax.script.ScriptException; import javax.script.SimpleBindings; -import jdk.nashorn.api.scripting.NashornScriptEngineFactory; -import org.apache.commons.lang3.SerializationUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; +import java.util.regex.Pattern; public class VirtualUser implements Runnable { diff --git a/src/main/resources/application-weblogic.yml b/src/main/resources/application-weblogic.yml new file mode 100644 index 0000000..3011e6b --- /dev/null +++ b/src/main/resources/application-weblogic.yml @@ -0,0 +1,51 @@ +logging: + level: + root: info + web: debug + com.eactive: debug + org: + springframework: + web: + socket: debug + +server: + error.include-message: always + servlet: + session: + timeout: 180m + + context-path: / + +spring: + datasource: + url: jdbc:h2:file:./db/apidb + driverClassName: org.h2.Driver + username: sa + password: + hikari: + maximum-pool-size: 20 + minimum-idle: 5 + idle-timeout: 30000 + max-lifetime: 60000 + jpa: + hibernate: + ddl-auto: update + properties: + hibernate: + format_sql: true + show-sql: false + database-platform: org.hibernate.dialect.H2Dialect + thymeleaf: + prefix: classpath:/templates/ + check-template-location: true + suffix: .html + mode: HTML + cache: false + order: 0 + h2: + console: + enabled: true + path: /h2-console + settings: + web-allow-others: true + diff --git a/src/main/resources/weblogic.xml b/src/main/resources/weblogic.xml new file mode 100644 index 0000000..fb3302a --- /dev/null +++ b/src/main/resources/weblogic.xml @@ -0,0 +1,24 @@ + + + + / + + + + org.slf4j.* + ch.qos.logback.* + org.apache.log4j.* + org.apache.commons.logging.* + + + + + + 1800 + JSESSIONID_ONL + replicated_if_clustered + + \ No newline at end of file