html tag를 데이터베이스에 저장하기위해 특수문자를 변환해야 하는 경우가 발생합니다.  DB에 저장을 했으니 웹 페이지에 뿌릴때는 반대의 작업을 해야 하는데 이때 Spring을 사용한다면 특별히 라이브러리를 설치하지 않고도 변환이 가능합니다.

 

간단한 예제를 살펴 보면

import org.springframework.web.util.HtmlUtils;
 
        String tag ="<HTML> <table><tr><div> &";
        String esc = HtmlUtils.htmlEscape(tag);
        String uesc = HtmlUtils.htmlUnescape(esc);
 
        System.out.println("escape : " + esc);
        System.out.println("uescape : " + uesc);

 

이렇게 "<HTML> <table><tr><div> &” HTML 문서가 있는 경우 htmlEscape htmlUnescape 함수를 이용하면

 

escape : &lt;HTML&gt; &lt;table&gt;&lt;tr&gt;&lt;div&gt; &amp;
uescape : <HTML> <table><tr><div> &

 

이렇게 쉽게 변환이 가능 합니다.

 

만약 일반적인 특수 기호나 숫자, 알파벳을 변환하려고 하면 어떻게 될까요?

 

        String sTag = "( ) \\ [ ] { } ! @ $ % ^ * 1 2 3 A B C";
        String sEsc = HtmlUtils.htmlEscape(sTag);
        String sUesc = HtmlUtils.htmlUnescape(sEsc);
       
        System.out.println("escape : " + sEsc);
        System.out.println("uescape : " + sUesc);

 

escape : ( ) \ [ ] { } ! @ $ % ^ * 1 2 3 A B C
uescape : ( ) \ [ ] { } ! @ $ % ^ * 1 2 3 A B C

 

아쉽게도 아무런 변화가 없습니다.

 

 

그럼 escape 문자를 변환하면

 

String nTag = "&#40; &#41; &#92; &#91; &#93; &#123; &#125; &#49; &#50; &#65; &#66; ";
String nUesc = HtmlUtils.htmlUnescape(nTag);
              
System.out.println("escape : " + nUesc);

 

uescape : ( ) \ [ ] { } 1 2 A B

 

잘 변환이 됩니다.

 

그런데 굳이 일반 문자나 숫자를 변환할 일은 많지 않을것 같군요.

 

- copy coding -

스프링 부트에서 내장된 tomcat이 아닌 외부 톰캣이나 기타 WAS를 이용하여 서비스를 하려면 프로젝트를 war로 배포해야 합니다.  배포 방법은 간단 합니다.

오늘은 몇일 전에 설치한 JEUS에 배포를 해보려고 하는데 작업 순서는

 

1. build.gradlewar 추가 및 내장 톰캣 종속 제거

2. ApplicationSpringBootServletInitializer 상속 수정

3. WAR 생성

4. JEUS 배포

5. 배포 오류

 

이고 Jeus 설치는 https://copycoding.tistory.com/388 을 참고하면 됩니다.

 

1. build.gradlewar 추가

 

먼저 Spring Boot에서 war를 생성할 수 있도록 build.gradle에 한줄 추가해 줍니다.

 

id 'war'

 

그리고 내장 tomcat WAR 추가되지 않도록 한줄 더 추가 합니다.

 

providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

 

수정된 build.gradle 모습은

plugins {
        id 'org.springframework.boot' version '2.5.6'
        id 'io.spring.dependency-management' version '1.0.11.RELEASE'
        id 'java'
        id 'war'
}
 
dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
       
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}

 

내장 tomcat을 제거하지 않으면 배포 중 오류가 발생하는 상황은 맨 끝에 소개합니다.

 

 

2. ApplicationSpringBootServletInitializer 상속 수정

 

그리고 외부 WAS를 사용하기 위해 Context를 등록해야 하는데 예전에는 web.xmlapplication context를 등록 했지만 servlet 3.0부터 SpringBootServletInitializer를 상속 받아 사용할 수 있도록 되었습니다.

 

@SpringBootApplication
public class DemoApplication {
 
        public static void main(String[] args) {
               SpringApplication.run(DemoApplication.class, args);
        }
 
}

 

기존 소스에 SpringBootServletInitializer 상속 받고 override를 해주면 됩니다.

 

configure가 보이는 군요.  클릭하고 [OK] 해서 추가해주고

 

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
 
        public static void main(String[] args) {
               SpringApplication.run(DemoApplication.class, args);
        }
 
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
               // TODO Auto-generated method stub
               return builder.sources(DemoApplication.class);
        }
}

 

return 값을 수정해 줍니다. 그냥 다 손으로 입력해도 됩니다.

 

 

3. WAR 생성

 

이제 Spring Boot에서 war를 생성 합니다.

 

Gradle Tasks에서 build 또는 war 를 더블 클릭해 줍니다.

 

Gradle Executions에 진행상황을 보여줍니다.  프로젝트를 빌드하다보면 test 소스 빌드에서 빨간색 오류가 나타나기도 하지만 무시해도 됩니다.  

 

Duration 숫자가 멈추고 완료되면 프로젝트의 build > libs 폴더에 가면 war 파일이 보입니다.

 

이제 Jeus를 실행해서 배포 준비를 합니다.

 

 

4. JEUS 배포

 

제우스 admin 화면 좌측 메뉴에서 [Servers]를 선택하여 서버들을 확인 합니다.

 

배포할 서버가 살아있는지 확인을 합니다. server1에 배포를 하려고 하는데 잘 살아있군요.

 

좌측 메뉴에서 [Applications] 메뉴를 클릭 합니다.

 

여기서 상단 회색 버튼 중 [deploy]를 클릭 하면 배포 설정 화면이 나옵니다.

 

id를 입력해 주고 path에서 [입력] 버튼을 클릭 하면 팝업 창이 하나 나오는데

 

deploy하려는 파일을 선택해 줍니다.  Type, Target Server 등은 위에 있는 이미지를 확인해서 설정 합니다. (지금보니 server1shutdown이네요. 실행전에 캡쳐한거라...)

 

아랫 부분에 있는 고급 선택사항에서는 Context Path만 입력 합니다.

 

여기에 입력하는 내용이 나중에 웹을 실행할때 영향을 주게 됩니다. 저는 프로젝트를 구분하려고/demo로 입력 했는데 그냥 /만 입력해도 됩니다.

 

이제 [확인] 버튼을 클릭하면 오류가 발생하던가 배포가 잘 되던가 하겠지요.

 

저는 배포가 잘 완료 되었습니다.

웹에서 접속을 해보려면 몇번 포트를 사용하고 있는지 확인을 해봐야하니 server1을 열어봅니다.

 

좌측 메뉴에서 [Servers]를 선택 하고

 

우축에서 server1을 클릭 하고

 

탭메뉴에서 [Resource]를 클릭해 보면 8088로 서비스가 되고 있군요.

 

 

몇일전에 글을 올린 STS4관련 프로젝트를 배포한것이니 http://localhost:8088/api/test하면 될것 같지만 배포할 때 [고급선택 사양]에서 /demopath를 잡았기 때문에 /demo를 추가해 주어야 합니다.

 

http://localhost:8088/demo/api/test

 

JEUS 8에도 배포가 잘 되었습니다.

 

 

5. 배포 오류

 

Spring Boot에서 war 를 만들어 배포할때 가장 많이 발생하는 오류입니다.

 

 

오류 로그를 보면

D:\TmaxSoft\JEUS8\domains\jeus_domain\servers\server1
\.workspace\deployed\demo\demo-0_0_1-SNAPSHOT-plain_war___\
WEB-INF\lib\tomcat-embed-core-9.0.54.jar
JAR file was not loaded because the class
javax/servlet/Servlet.class violated Servlet Spec 3.1.

 

tomcat-embed-core1번에서 설명한것 처럼 꼭 제거를 해주어야 jeus에 배포시 오류가 발생하지 않습니다.  외부 Tomcat에서는 오류가 발생하지 않는데 jeus에서는 오류가 나옵니다.

 

- copy coding -

STS에는 WAStomcat이 포함되어 있어서 별도로 설치를 하지 않아도 되고 jar 파일을 생성하면 jar 파일내에 tomcat이 들어가기 때문에 개인지 테스트 삼하 작업 하기에는 편리한 툴 입니다.  물록 tomcat으로 서비스를 하는 회사들도 있기때문에 개발하고 바로 서비스를 할 수도 있습니다.  

작업 순서는

 

1. STS 다운로드 및 설치

2. 프로젝트 생성

3. 소스코드 개발

4. jarbuild 및 서비스

 

jar 파일을 만들기 위해 STS를 설치부터 해 봅니다.

 

https://spring.io/tools

 

사이트에 접속해서 OS에 맞는 버전을 다운로드 받습니다.

 

jar 형태의 압축파일을 풀고 contents.zip 압축파일도 풀어주면 sts-4.12.1 폴더를 얻을 수 있습니다.  압축은 zip 파일을 풀드시 일반적인 툴을 이용합니다.

 

여기서 한번더 contents를 풀면 됩니다.

 

SpringToolSuite4를 실행하고

 

작업을 진행할 폴더를 선택해주고 [Launch]를 선택하면

 

개발 툴 화면을 볼 수 있습니다.

 

한번 신규 프로젝트를 생성해 봅니다.

 

File > New > Spring Starter Project

 

Type, Packaging, Java Version, Language4개를 자신의 취향에 맞도록 수정 가능 합니다.  요즘에는 Maven 보다 Gradle을 많이 사용하니 Gradle로 설정을 해서 생성합니다.

 

간단한 확인만 하려는 것이니 [Spring Web]만 선택 합니다.

 

프로젝트가 생성이 되었고 기본적인 소스도 자동으로 만들어 집니다.

 

간단하게 사용할 것이므로 콘솔 버퍼는 나중에 변경시키기로 하고 일단 실행을 해 봅니다.

 

툴의 좌측 하단에서 demo 를 선택 하고 빨간색 네모 둘중 하나를(실행, 디버깅) 클릭하면 embeded tomcat8080으로 잘 실행 되었다고 우측에 표시 됩니다.

 

웹에서 확인해 봅니다.

 

아직 아무것도 만들지 않아서 기본 오류페이지가 잘 나오고 있습니다.  설치는 완료 되었군요.

 

API를 하나 생성 합니다.

 

실행하면

 

잘 되는군요. 이제 jar 파일을 생성해 봅니다.

 

Gradle Tasks를 열고 bootJar를 더블클릭 합니다.  빌드가 완료되면

 

build > libs 폴더에 파일이 생성 되었습니다.

 

생성된 jar 파일을 별도로 띄워 봅니다.  먼저 8080포트가 충돌나지 않도록 STS에 띄워놓은 프로젝트는 중지를 하고 CMD 창을 하나 열어서

Java로 실행을 해 봅니다.

javapath에 등록 했다면

 

java -jar demo-0.0.1-SNAPSHOT.jar

 

그렇지 않다면 java의 전체 위치를 같이 사용하여 실행 합니다.

 

D:\Java\jdk1.8.0_131\bin\java -jar demo-0.0.1-SNAPSHOT.jar

 

실행이 되었다면 웹에서 확인해 봅니다.

 

잘 나오는 군요.  실제 서버에서도 이렇게 jar를 이용해서 서비스 해도 됩니다.

jar에는 내장 톰캣이 있는데 톰캣을 제외하고 외부 톰캣이나 다른 WAS를 사용한 테스트를 하기 위해 조만간 WAR로 배포를 해봐야겠네요.

 

- copy coding -

 

오랫동안 잊고 살았는데 이번에는 WASJEUS를 사용한다고 하니 귀찮지만 그래도 적응을 해야 해서 설치를 해 보았습니다.

다운 받으려면 tmax에 회원가입을 해야 합니다.  저는 다시 회원 가입하려고 하니 메일 주소가 등록이 되어 있다고 해서 비밀 번호만 변경신청 하고 다운로드 받았습니다.

 

https://technet.tmaxsoft.com/ko/front/download/findDownloadList.do

 

TmaxSoft Technical Network [technet-02]

데모라이선스 신청 데모라이선스는 제품구입 전 테스트 및 검토를 위하여 제한 된 기간 동안 발급받아 사용가능한 라이선스 입니다.

technet.tmaxsoft.com

 

 

JEUS 8을 선택 하고

 

각자 bit 에 맞는 버전을 다운로드 받습니다.  다운받은 파일을 실행해서 설정을 진행 합니다.

대부분 고민스러우면 기본 설정으로 [Next] 버튼을 클릭하면 됩니다.

 

 

 

라이센스에 동의하고

 

다운 받을때 선택 했는데 또 하라고?

 

 

기본은 C:인데 저는 D에 설치를 하기로 했습니다.

 

 

Java를 설치하고 위치를 잡아 줍니다.

 

개발모드, 운영모드 중 하나를 선택 하고

 

 

 

로그인 관련 정보로 나중에 서버를 사용하려면 입력해야 하니 여기 나오는건 잘 기억하거나 적어둡니다. 마음에 안들면 수정하면 됩니다.

 

 

제일 중요한 비밀 번호는 잊어버리면 다시 설치를 해야 합니다.  꼭 기억해 둡니다.

 

비밀번호는 7자리라고 했는데 7자리를 입력해도 창이 떠서 하는 수 없이 8자리를 입력했습니다.

 

샘플 디렉토리를 설치하면 설치가 잘 되었는지 확인 가능 합니다.

 

모든 설정이 끝났고 [Install] 버튼을 클릭하여 설치를 진행 합니다.

 

 

설치가 완료 되었습니다.

 

시작 버튼에 가면 TmaxSoft가 추가 되었네요.  여기서 JEUS를 선택 합니다.

 

그러면 바로 콘솔 창이 나오게 되서 작업이 편해집니다.  ex)에 있는것 처럼 설치중에 있던 user 명과 password를 입력하면 JEUS가 기동 됩니다.

 

D:\TmaxSoft\JEUS8\bin>startDomainAdminServer -u administrator -p 설치중입력한비밀번호

 

처음 사용하면 java 허용 창이 나타 납니다. [액세스 허용]을 선택해 줍니다.

 

오류 없이 기동이 되었다면 웹 브라우저를 하나 열고 http://localhost:9736/webadmin/를 입력 합니다.

 

설치 중에 입력한 관리자 계정과 비밀 번호 7자린지 8자리인지 로그인 합니다.

 

좌측 메뉴 Servers에 현재 기종 중인 서버 리스트를 볼 수 있습니다.  adminServer는 시작 명령을 입력해서 사용 중이고 server1을 실행해 봅니다.

 

star 버튼을 눌러서 실행해서 안되면 다시 콘솔 창으로 돌아가 명령어로 실행해 봅니다.

 

D:\TmaxSoft\JEUS8\bin>startManagedServer -u administrator -p 비밀번호 -server server1

 

오류가 없다면 다시 어드민으로 돌아와 새로고침 하고 server1을 확인해 보면

 

잘 실행이 되었습니다.  이제 좌측 메뉴에서 Applications를 선택해 보면 제우스 설치 중 추가한 examples가 보입니다.

 

 

샘플 웹 페이지를 열어 봅니다.

JEUS가 제대로 설치가 되었다는게 확인 되었습니다.  아직 Project도 생성해야 하고 WAR도 만들어야 하고 배포도 해봐야하고 할일이 많이 남아 있군요.

 

- copy coding -


1···19202122232425···118

+ Recent posts