개인프로젝트 중 이미지 업로드를 위해 경로설정을 하는데 계속 pivotal 서버 경로를 가져오는 문제가 발생했다.

 

전에 쓰던대로 request.getSession().getServletContext().getRealPath(""); 이렇게 작성했는데

 

C:\Users\User\Desktop\spring-tool-suite-3.9.11.RELEASE-e4.14.0-win32-x86_64\sts-bundle\pivotal-tc-server\instances\base-instance\wtpwebapps\BoardProject\

 

여기서 도대체가 경로 변경이 안되서 개고생...

 

구글링으로 이것저것 키워드 바꿔가면서 찾아봤지만 도저히 안되서 미쳐가는 도중...

 

해결법 발견 ㅠㅠㅠㅠㅠㅠㅠ

 

일단 서버 종료 먼저 하고!! 서버 더블클릭한 뒤 아래로 내려보면

요부분이 있다.

 

처음에 체크가 이렇게 되어 있었는데 이 체크박스를

 

이렇게 변경!!!! 드디어 해결 ㅠㅠ

 

Publish module contexts to separate XML files 는 별도의 XML 파일에 모듈 context 게시라고 해석할 수 있는데 체크하면 개발자가 작성한 웹 어플리케이션 설정 파일을 외부 XML파일로 관리할 수 있게 된다고 한다.

 

Serve modules without publishing 는 게시하지 않고 모듈 제공이라고 해석할 수 있다. 이거는 알아보니까 약간 이해가 덜 되긴 했는데 

 

 

www.reimaginer.me/entry/tomcat-options-Serve-modules-without-publishing-%EC%9D%B4%EB%9E%80

 

tomcat options - Serve modules without publishing 이란

개발할 때, 별 생각없이 체크하거나 체크 안하거나 하는 체크박스가 있었습니다. 바로 tomcat options 중에서 Serve module without publishing 이었습니다. 저는 그냥 무언가를 publishing 하지 않고 그냥 가져

www.reimaginer.me

이분 블로그에서 보고 그나마 조금 이해가 되었다.

 

체크를 안하게 되면 tomcat Setting에서 설정된 server path > deploy path로 의존하는 모듈들이 퍼블리싱 되고 메인 프로젝트는 의존하는 모듈을 참조한다. class 파일 이외에 다른 파일들은 퍼블리싱이 안될 수 있다.

 

체크를 하게 되면 메인프로젝트는 의존하는 모듈(프로젝트 등)을 퍼블리싱하지 않고 직접 참조한다.

라는 것이다. 

사실 이거 보고도 이해가 안되긴 했다... 그나마 아래에 적어주신 부분 덕분에 좀 더 이해할 수 있었다.

 

 

 

일반적으로 JSF 나 JSP 를 개발할 때 Tomcat 을 사용해서 테스트를 하게 됩니다.
Tomcat 이 제우스나 WebLogic 같은 J2EE WAS 에 비해서 가볍고 사용하기 편리하기 때문이죠.

기존 이클립스 3.2 의 Web Tools 에서는 웹 프로젝트를 Tomcat 에 실행하기 위해서 별도의 폴더에
웹프로젝트의 파일들을 복사하는 과정을 내부적으로 수행하였습니다. 이 때 프로젝트에 필요한
라이브러리와 클래스들이 함께 WEB-INF\lib 폴더에 복사되었습니다.

이클립스 3.3 에서는 이러한 복사 과정 없이 웹 프로젝트의 원래 위치에서 바로 실행 될 수 있도록 하는 옵션이 추가되었습니다.
이 옵션을 사용하기 위해서는 Tomcat 서버 에디터를 열어서 옵션을 변경해야 합니다.
Tomcat 서버 에디터는 Servers 뷰에서 설치된 Tomcat 항목을 더블 클릭 해서 열 수 있습니다.
다음과 같이 서버 에디터 의 Server Options 섹션에서 'Serve modules without publishing'을 선택하면 됩니다.

그램#1 과 같이 하면, 페이지의 수정사항이 별도의 폴더에 복사되기를 기다릴 필요 없이 바로 확인할 수 있습니다.

주의: 이 옵션을 사용하게 되면 자바 클래스가 변경 되었을 때 어플리케이션이 자동으로 reloading 되지 않게 됩니다.
웹 프로젝트를 디버그 모드로 실행할 경우에 메소드안의 내용이 바뀌는 경우에는 자동으로 반영이 되지만 메소드나 필드가
추가되는 등의 변경이 일어날 경우에는 반영이 안되기 때문에 서버를 재시작해야 한는 문제가 있습니다.

만일 디버그 모드로 실행 중이 아니라면 메소드안의 내용이 바뀌어도 자동으로 반영되지 않습니다.
따라서 자바클래스의 메소드나 필드가 빈번히 추가/삭제 되는 경우라면 이 옵션을 사용하지 않는 것이 좋으며
이 옵션을 사용시에는 디버그모드로 실행하는 것이 좋습니다.

이클립스에서 JSP 나 XHTML 가 열려있는 상태라면 간단히 F11 단축키만을 사용해서 디버그 모드로 바로 실행해볼 수 있습니다.



밑줄 부분에서 이해를 좀 도와주었다. 내가 이해한게 맞는지는 좀 더 공부하다보면 확신이 들게 될거라고 생각하지만 지금 이해한것으로는 이클립스 3.2의 Web Tools에서는 별도의 폴더에 복사하는 과정을 수행했었고 3.3부터는 복사과정 없이 프로젝트 위치에서 바로 실행될 수 있도록 하는 옵션이 추가되었고 그 기능을 활성화하는 것이 Serve modules without publishing 이라는 것이다. 글을 써주신 블로그 주인분도 서버 path에 .vm 파일을 찾아오지 못했었고 같은 방법으로 해결하셨다고 한다.

 

인텔리제이로 boot 사용해서 프로젝트 했을때는 설정한 기억이 없는데.... 혼자 설정한게 아니라서 다른 팀원이 설정했기에 몰랐던건지......

이래서 혼자 프로젝트 다양하게 진행해봐야 많이 배운다고 하는것같다 ㅠㅠ

 

이거 하나로 한 6시간은 개고생한듯....ㅠㅠ

 

m.blog.naver.com/PostView.nhn?blogId=ksi4687&logNo=220527469366&proxyReferer=https:%2F%2Fwww.google.com%2F

 

[eclipse] 이클립스 업로드 경로 바꾸기

이클립스로 jsp 프로젝트를 하다 보면 파일을 업로드 할 일이 생기게 된다.파일을 업로드 하려면 보통 프로...

blog.naver.com

살려주신분 감사합니다 ㅠㅠ

'Spring' 카테고리의 다른 글

Spring과 SpringBoot 의 차이  (0) 2021.02.15
mybatis null값처리.  (0) 2020.10.29
The prefix "mvc" for element "mvc:interceptors" is not bound.  (0) 2020.10.21
Spring Security  (0) 2020.07.28
스프링 시큐리티의 아키텍처  (0) 2020.06.07

+ Recent posts