[java] Tomcat과 Eclipse를 핫 배포 환경으로 통합

내 JSP 및 서블릿 (가능한 경우)의 변경 사항이 배포없이 즉시 반영되도록 eclipse와 tomcat을 통합 된 방식으로 설정하고 싶습니다.

좋아, 이것은 인터넷 전체에 걸쳐 많은 답변을 가지고 있지만 모두 다르게 보이는 질문 중 하나입니다. (Sysdeo 플러그인 사용, JBOss 플러그인 사용, 오래된 Eclipse로 작업 수행, 대신 MyEclipse 사용 등) 및 참조 할 최종 리소스를 찾을 수 없습니다. 그래서 제 이익을 위해 이것을 설정하는 가장 간단하고 권장되는 절차는 무엇입니까?

이것은 내가 이클립스와 바람둥이가 독립적으로 실행되고 있다고 가정합니다. 나는 실제로 http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html 지침을 사용하여 핫 배포가 아닌 방식으로 통합했습니다
.

Eclipse 버전 버전 : 3.4.2 (Ganymede) Tomcat v6.0.20



답변

두 가지 옵션이 있습니다.

첫째, Eclipse를 사용하면 약간의 구성 변경으로이를 수행 할 수 있습니다 (이 자세한 게시물 참조 ).

  • 서버 목록에 Tomcat 추가
  • 프로젝트를 “동적 웹 프로젝트”로 만듭니다 (생성 마법사 또는 설정의 패싯 섹션을 통해).
  • tomcat에 프로젝트를 추가하고 “배포 어셈블리”를 구성합니다.
  • 목록에서 바람둥이를 두 번 클릭하여 구성을 엽니 다.
  • “게시”를 “자동으로 게시하지 않음”으로 변경합니다 (이는 ctrl + s를 눌러도 서버가 다시 시작되지 않음을 의미 함).
  • 디버그 모드에서 Tomcat 시작

이것은 여전히 ​​코드 변경 사항을 반영하지만 서버를 다시 시작하지는 않습니다.

둘째, 오랫동안 FileSync 플러그인 을 사용 했습니다 .

  • bin director에서 WEB-INF/classestomcat 설치의 모든 클래스를 보내도록 플러그인을 구성 합니다 (이는 배포 어셈블리 구성과 거의 동일).
  • 다른 모든 리소스를 해당 위치로 이동하도록 구성
  • 선택적으로 파일 동기화 위치 설정의 모든 절대 경로를 단일 변수로 구체화하고 해당 변수를 Eclipse에서 구성합니다 (따라서 모든 멤버가 eclipse를 사용하는 경우 파일 동기화 설정도 커밋 할 수 있음).
  • Eclipse의 서버 목록에 Tomcat을 추가하고 “서버 위치”옵션을 “톰캣 설치 사용”으로 구성합니다 (서버 목록에서 tomcat을 두 번 클릭하면 화면이 열립니다).
  • 디버그 모드에서 Tomcat 시작

그런 식으로 완벽하게 작동합니다. 모든 비 구조적 변경은 재배포없이 즉시 반영됩니다.

업데이트 : 여기에서 핫 배포 방법에
대해 자세히 알아볼 수 있습니다 .
또한 서블릿 컨테이너와 작업 공간을 쉽게 동기화 하는 프로젝트만들었습니다 .


답변

eclipse가 $ TOMCAT / webapps / MyWebApp / WEB_INF / classes 디렉토리에 직접 클래스 파일을 작성하도록하십시오. 그런 다음 apache-tomcat을 구성하여 클래스 파일이 업데이트되었는지 확인하고 업데이트 된 경우 다시로드합니다.

클래스가 변경 될 때 자동으로 다시로드하도록 tomcat을 구성하려면 다음을 수행해야합니다.

편집 $TOMCAT/conf/context.xml및 설정 :

<Context reloadable="true">

webapps/$YourWebApp/web.xml파일 을 편집하고 다시로드 하고 다음을 포함 해야 할 수도 있습니다 .

<web-app reloadable="true">

두 가지 변경이 모두 필요한지 기억할 수 없지만 이것이 내가 tomcat-6.0.18을 자동으로 다시로드하도록 구성한 방법입니다.


답변

면책 조항 : 저는 행복한 고객 일 뿐이며 Zero Turnaround를 위해 일하지 않으며 어떤 식 으로든 그들과 제휴하지 않습니다.

JRebel을 확인하세요 . 웹 애플리케이션을 다시 시작하지 않고도 코딩 할 수 있습니다. 기본적으로 클래스를 계측하고 변경 사항을 적용하여 작동합니다. 다음을 포함하여 핫 배포보다 더 많은 경우를 처리합니다 .

  • 방법 추가 / 제거
  • 생성자 추가 / 제거
  • 인터페이스 변경
  • 구현 된 인터페이스 추가 / 제거

그것은이다 상업 ( 가격 정보 2018년 6월에서 $ (550) / 년), 그리고의 제비가 플러그인 타사 프레임 워크를 포함를 들어 :

  • Guice
  • 스트럿 2

당신은 얻을 무료 평가판을 매우 고통 – 난 당신에게 주사를 제안한다.


답변

Eclipse에서 작업 공간을 \ tomcat \ webapps로 변경하십시오. 작업용이므로 제대로 작동합니다. Eclipse에서 변경 한 사항은 Tomcat이 배포 할 응용 프로그램을 찾는 동일한 디렉토리에 있습니다.


답변

서버보기에서 새 서버를 만들고 아직 서버에 리소스 (프로젝트)를 추가하지 마십시오. 서버 위치에서 서버를 두 번 클릭하십시오. “Tomcat 설치 사용”을 선택합니다. “배포 경로”를 tomcat 배포 디렉터리 (예 : c : \ server \ Tomcat 7.0.14 \ webapps)로 수정합니다. “게시 섹션”을 확장하십시오. “빌드 이벤트 후 자동으로 게시”를 선택합니다. 저장하고 닫습니다. 이클립스 메뉴에서 “프로젝트-> 자동 빌드”를 선택하십시오. 서버보기에서 서버를 마우스 오른쪽 버튼으로 클릭하고 “추가 및 제거”를 클릭하고 프로젝트를 게시합니다.


답변

이것이 단지 개발을위한 것이라면 왜 in Eclipse에서 통합 된 tomcat 서버를 사용하지 않는가? window-> preferences에서 서버를 구성 할 수 있습니다. page.jsp라는 jsp가있는 경우 구성되면 마우스 오른쪽 단추로 클릭하고 서버에서 실행을 선택할 수 있습니다. 기본 설정-> 일반-> 웹 브라우저에서 내장 브라우저 또는 외부 브라우저를 사용할 날씨를 선택할 수 있습니다. jsp를 일부 변경하고 브라우저에서 페이지를 저장하고 새로 고칩니다. 브라우저를 저장하고 새로 고치면 변경 사항이 자동으로 반영됩니다.


답변

여기서 나를 위해 작동하는 것은 다음과 같습니다.

context.xml은 다음과 같습니다.

<Context path="/myapp" docBase="myapp" debug="5"
    reloadable="false" antiResourceLocking="false" antiJARLocking="true">
<!-- this because i´m using Spring 3.1 with Tomcat -->
    <Loader     loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" />

</Context>

그런 다음 Eclipse의 Servers 탭, “Modules”탭에서 배포중인 모든 모듈에 대해 “Auto Reload”를 비활성화했습니다.

또한 자동 게시를 허용하도록 기본 구성을 사용하십시오.

그리고 WTP와 함께 Maven을 사용하고 있으므로, Eclipse는 최종 빌드에서이 폴더의 내용을 제외하도록 고집하므로 src / main / resources의 내용을 그대로 두는 것을 잊지 마십시오.

이 모든 것을 통해서만 전체 (VM) 클래스를 핫 배포 리소스로 핫 배포했습니다 !!!