기본 콘텐츠로 건너뛰기

keytool 사용법

keytool.exe -genkey -alias juheon -keyalg RSA -keypass 1234qwer -storepass 1234qwer -keystore juheon.jks  keytool.exe -export -alias juheon -storepass 1234qwer -file juheon.cer -keystore juheon.jks  keytool.exe -importkeystore -srckeystore juheon.jks -destkeystore juheon.key.p12 -deststoretype PKCS12  D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert  D:\Java\32bit\jdk1.5.0_22\bin\keytool.exe -import -alias tsasample -keystore  D:\Java\32bit\jdk1.5.0_22\jre\lib\security\cacert -file D:\workspace\Servers\tsa-server-web-config\tomcat.cer  keytool -import -alias somansa -keystore C:\Program Files\Java\jdk1.8.0_102\jre\lib\security\cacert -file c:\somansa.cer #인증서 생성  keytool -genkey -alias keyAlias -keyalg RSA -keypass changeit -storepass changeit –validity 9999 -keystore keystore.jks  keytool -export -alias keyAlias -storepass changeit -file server.cer -keystore keystore.jks  keytool -import -v -trustcacerts -alias keyAlias -file server.cer -keystore cacerts.jks -keypass changeit

Spring boot hello world (1)

Hello world 뭐든 일단 시작. 편하게 시작해야하니 spring boot 사용. "Hello world"를 브라우져에 띄우면 성공. 이시간에 이거 한게 어디냐!!






프로젝트 생성

  1. Repository 생성
    소스 형상관리를 위해 github에 새로운 repository를 생성한다. 프로젝트 성격에 맞게 이름을 "helloworld"라고 지었다.
  2. Spring boot 패키지 생성
    저장소를 생성했으니 spring boot 탬플릿 프로젝트를 생성한다. https://start.spring.io/ 접속하면 만들고자 하는 프로젝트 빌드셋 템플릿을 생성할 수 있다.

    - Project: gradle
    - Language: java
    - Spring boot version: 2.2.2

    생성한 패키지 다운로드 후 압축 해제
  3. 이클립스 프로젝트 생성
    압축해제한 패키지를 gradle project import로 추가

    '여기부터 나오는 코드들은  Spring boot getting started'에 나오는 문서를 따라한 내용이다.'
    https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/html/getting-started.html#getting-started-introducing-spring-boot

서비스 등록

  1. Controller class 생성
  2. Class에 @RestController annotation 추가
    @RestController: spring에게 web request 처리 클래스라고 명시
  3. 문자열을 리턴하는 함수 생성
    함수에 @RequestMapping annotation 추가. 파라미터로 "/" 넘긴다. 그러면 path를 지정하지 않은 요청의 경우 해당 함수가 실행된다. 리턴하는 문자열을 "Hello World"

Eclipse에서 어플리케이션 실행

  1. 탬플릿을 생성했으면 [패키지명] Application.java가 생성되었을 것이다. 그 java 파일을 실행하면 spring boot이 실행 된다.
  2. 브라우저로 접속해본다.
  3. 안된다... 왜 안되지
  4. 일단 에러 페이지가 나오는데 '/error' 페이지가 없다는 페이지 이다.
  5.  Controller에 '/error'도 추가해본다.
  6. error 페이지도 접근이 안된다.
  7. Spring boot main 함수가 있는 클래스에 @RestController, @RequestMapping 추가하면 된다.
  8. 원인은 controller class의 위치 문제이다. spring boot은 main class에서 annotation된 class들을 scan할 때 main 클래스 하위을 패키지의 클래스들만 scan한다.
    base package를 변경하고 싶으면 "@SpringBootApplication(scanBasePackages = "com.ha")" 와 같이 직접 지정해주면 된다.
  9. 따라서 main class의 패키지가 "com.ha" 라면 controller는 "com.ha.con"이런식으로 하위에 패키지를 만들어 클래스를 생성해야한다. "com.ha1" 패키지 하위에 controller를 만들면 scan하지 못하여 servlet으로 등록이 안된다.

Gradle로 빌드 및 실행

  1. gradle project로 Spring boot으로 만들었으니 이클립스에서 실행하는거 말고 gradle을 이용해 실행 해보자
  2. 프로젝트 경로로 가서 "./gradlew bootrun" 실행하면 Spring boot 서버가 기동된다.
  3. 프로젝트를 war로 생성해보자
  4. 마찬가지로 프로젝트 경로로가서 "/gradlew clean war build" 실행하면 프로젝트 경로에 build 폴더를 삭제하고 컴파일한 후 "/build/libs/"경로에 war 파일을 생성한다.
  5. 콘솔에서 >java -jar [filename].war 실행하염 spring boot 서버가 실행된다.

MVC 추가

  1. application.properties에 아래 설정 추가
    spring.mvc.view.prefix=/WEB-INF/views/spring.mvc.view.suffix=.jsp
  2. @Controller 생성 후 jsp파일이 호출되도록 코딩
  3. 일반 이클립스에서 spring boot 실행 후 브라우져에서 jsp 호출 path를 호출하면 페이지를 찾지 못한다.
  4. 실행한 spring boot application은 webapp 폴더를 deploy 못하나 보다.
  5. eclipse market place에서 spring boot 플러그인을 설치한다.
  6. 플러그인 설치 후 spring boot 전용?으로 실행하면 정상적으로 jsp가 deploy되고 브라우져로 접근 가능하다.(뻑킹!!! 이것땜에 몇시간 버린거여)

댓글

이 블로그의 인기 게시물

Tomcat : context.xml 파일 사용

context.xml 파일을 사용하여 JNDI 등록 사용하는 방법 1. server.xml 파일에 JNDI 등록  server.xml 파일의 GlobalNamingResources노드에 Resource를 등록하고 Host 노드 하위 Context 노드에 ResourceLink노드를 등록하여 많이 사용했다. tomcat 5.5 이전 방식이다. server.xml ... <globalnamingresources>     <!-- Editable user database that can also be used by          UserDatabaseRealm to authenticate users     -->     <resource auth="Container" driverclassname="oracle.jdbc.OracleDriver" maxidle="4" maxtotal="8" name="global.db" password="password" type="javax.sql.DataSource" url="jdbc:oracle:thin:@localhost:1521:xe" username="user">   </resource> </globalnamingresources> ... 2. context.xml 파일 분리 위 방식처럼 server.xml 파일에 모든 context의 정보를 추가하는 방식은 서버에 대한 제어권이 없으면 정보를 변경하기 힘들다. Tomcat 5.5? 이후부터는 context.xml 파일을 분리하여 webapplication에서 별도로 자원을 등록 사용할 수있도록 제공한다. META-INF/context.xml 파일을 위치시키면 Tomcat은 구동시 META-INF 폴더의 context.xml 파일을

Jeus was jsp 컴파일된 파일 경로

WAS 구동시 jsp 에러가 났을때 jsp가 컴파일된 파일을 확인하여 디버깅한다. jeus was jsp 컴파일된 파일 경로 %WAS_HOME%/WEBAPP/WEB-INF/.warjspwork/jeus_jspwork/ jsp 에러의 예) javax.servlet.ServletException: String index out of range: -13 at javax.servlet.http.HttpServlet.service(Unknown Source) at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java(Compiled Code)) at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java(Compiled Code)) at jeus.servlet.engine.RequestDispatcherImpl.doForward(RequestDispatcherImpl.java(Compiled Code)) at jeus.servlet.engine.RequestDispatcherImpl.forward(RequestDispatcherImpl.java(Compiled Code)) at com.tomato.jef.servlet.BaseServlet.doDispatch(BaseServlet.java(Inlined Compiled Code)) at com.tomato.jef.bizframe.servlet.XecureHTMLMainServlet.doProcess(XecureHTMLMainServlet.java(Compiled Code)) at com.tomato.jef.bizframe.servlet.XecureHTMLMainServlet.doSessionProcess(Xec

Vmware Fusion Window가 정상 종료가 되지 않을때

* 1번 방법   1. VMWare가 실행된 그 상태에서 Option키를 누르고 위에 메뉴바에서 Virtual Machine 메뉴를 클릭합니다.  2. 종료 메뉴가 Force 메뉴로 바뀌어 있습니다. Force shut down 이나 Force restart 합니다.  * 2번 방법   1. 유틸리티 - 활성 상태 보기로 들어가서 vmware 단어가 포함된 모든 프로세스를 강제종료 합니다.    2. 가상머신의 파일을 찾아갑니다. (eg. Documents/Virtual Machines/ 안에 있습니다.) 그리고 가상머신 파일의 오른쪽을 눌러 "패키지 내용 보기"로 들어갑니다.  3. ".vmem" 확장자로 된 모든 파일을 쓰레기통에 버리고 난 후 모두 비웁니다.  4. 다시 VMWare을 실행합니다. 어떤 오류가 나면 그냥 Disgard 하면됩니다.