같은 컴퓨터 안에 브라우저와 톰캣을 띄어봤으니

이제 본격적으로 AWS에 올려 볼 것이다.

 

그러기 위핸 우리가 만든 프로젝트를 export해야 한다.

 

war파일 선택 후

 

프로젝트이름과 경로를 저장하는데 이때 중요한 것은

확장자를 .war로 해야 한다.

압축파일로 만들어질 수도 있고 war자체로 만들어질 수 있는데 상관 없다.

 

 

 

 

aws에 들어가서 프리티어 서비스 사용량을 확인 할 수 있다.

오른쪽 상단에 본인 아이디 클릭 후 - 계정 - 프리티

인스턴스가 실행중이라면 사용하지 않을 경우 중지를 하자

 

원격을 다시 시작하려니 갑자기 만들었던 인스턴스가 보이지 않았다.

알고보니 지역선택이 바뀌어져 있으니 원래 지정했던 것으로 돌려놓으니 해결된다.

 

 

연결

 

 

중지했다 시작하면 ip가 바뀌므로 원격 데스크톱 다운로드를 다시 해주어야 한다.

 

기존의 만들었던 key를 가져오고 해독한 후 복붙

 

아까 만들었던 ch2.war 파일을 apache-tomcat - webapps에 복붙하면 자동으로 압축이 풀린다.

 

createshortcut 후 바탕화면으로 이동

 

실행을 하면 압축이 풀리면서 ch2 폴더가 만들어진다.

 

 

이제 로컬에서 원격 aws서버를 접속할 것인데

IPv4 퍼블릭 ip를 복사

 

로컬PC에서 localhost 대신 복사한 IPv4를 붙여 넣으면 이렇게 나오는데 

 

IPv4 + :8080/ch2/hello 하니 접속이 된 것을 확인할 수 있다.

 

클래스를 새로 만들었다.

 

 

원격 호출가능하도록 @Controller와

URL과 메서드를 연결가능하도록 @RequestMapping을 만들었고 /hello로 지정하였다.

 

 

 

서버를 실행 시켜보니 보기와 같이 404 Not Found가 나와서 에러인가?

 

 

하지만 Console창을 확인해보니 Hello가 출력됨을 알 수 있었다.

즉, 호출이 잘 된 것이고 새로고침을 해보면 Hello가 한번 더 출력된다.

 

 

url의 /hello를 지우니 원래처럼 잘 호출한다.

 

코드를 아래와 같이 수정해보았다.

 

 

출력 결과

url에 /hello를 추가하여 main2는 호출되지 않았는데

main2를 호출하고 싶으면 매핑을 추가하면 된다.

main이 static이 아니라서 static변수와 인스턴스 변수를 모두 사용할 수 있기에 권장된다.

 

 

 

 

그런데 private은 접근제한자 중에 숨기는 것인데 어떻게 호출이 될 수 있을가? 

 

chatgpt

 

다른 클래스에서 private에 접근하는 것은 원래는 불가능하나

다음과 같이 java에서 제공하는 reflect API를 활용하면 접근이 가능하다.

 


 

 


 

MVC project를 로컬에서 만들수 없기에

 

기존의 firstSpring 폴더를 복사 +붙여넣기해서 새로 만들었다.

 

 

그리고 나서 붙여 넣기할때 프로젝트 이름을 변경하여 생성했다.

 

 

잘 만들어진 모습

 

 

새로 만들어진 ch2폴더의 pom.xml에 들어가서

 

 

firstSpring의 이름을 모두 찾아서 ch2로 replace 하였다.

 

 

 

하지만 다시 서버를 실행시켜보면 ch2가 아닌 firstSpring이 동작함을 알 수 있다.

 

 

 

이를 해결하기 위한 방법으로는 우선 패키지뷰에서 폴더를 삭제하는 데

중요한건 저 체크표시를 하면 안된다. (그러면 전부 사라지는 것? 같다)

출처 :https://www.youtube.com/watch?v=DRJojJvWuFo

 

그리고 원래 폴더가 저정되었던

생성된 경로에 들어가서 src와 pom.xml을 제외하고 모두 삭제

 

그리고 STS에 들어가서 import - Maven - Existing Maven Projects에서 Browse로 폴더를 찾아주고

import할 것만 클릭해서 가져온다.

 

그리고 서버를 다시 실행하면

실행도 잘 되고 기존의 firstSpring으로 시작 되었던 것이 ch2로 실행하게 된다.

 

만약에 마지막 과정에서 에러가 날 경우

서버가 한번에 동시에 두개를 실행하려 한 것일 수 있으니

서버를 중지했다가 다시키면서 ch2를 선택하자

+ Recent posts