IT

Tomcat 및 Eclipse를 핫 배포 환경으로 통합

lottoking 2020. 9. 12. 10:26
반응형

Tomcat 및 Eclipse를 핫 배포 환경으로 통합


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

좋아, 인터넷 전체에 많은 답변을 가지고 모두 다르게 보이는 질문 중입니다. (Sysdeo 사용 설명서, JBOs 사용 설명서, 오래된 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의 서버 목록에 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) / 년)의 제비가 그리고 플러그인 타사-frame 워크를 포함를 들어 :

  • Guice
  • 스트럿 2

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


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


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


이것이 단지 개발 용이라면 Eclipse에서 with에서 통합 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의 서버 탭, "모듈"탭에서 배포중인 모든 모듈에 대한 "자동 다시로드"를 비활성화했습니다.

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

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

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


개발 환경에서 Tomcat 서버가 JSP를 개발중인 디렉토리에서 찾도록 지정하십시오. 파일을 저장하자마자 변경 사항을 볼 수 있습니다.


Spring Loaded JVM 에이전트를 사용하여 개발 환경에서이 작업을 수행했습니다 . 내가 Spring 웹 애플리케이션을 개발하는 동안 그 프로젝트의 설명은 그것이

JVM에서 실행할 수있는 모든 바이트 코드에서 사용 가능

다음 설정을 사용하여 연결된 Tomcat 인스턴스 (일반적인 Eclipse WTP 방법)에 자동으로 게시하도록 변경 사항을 가져올 수있었습니다. Eclipse Mars.2 (4.5.2)를 기반으로하는 Spring Tool Suite 3.7.3을 사용하고 있습니다.

  1. Github 프로젝트 에서 Spring Loaded의 최신 릴리스 JAR을 다운로드하십시오 . 이것은 springloaded-1.2.5.RELEASE.jar로 테스트되었습니다.
  2. Eclipse에서 Tomcat 서버를 정상적으로 설정 (Tomcat 8.0.30으로 테스트)
  3. Eclipse에서 Tomcat 서버의 구성 페이지를 엽니 다 ( "서버"탭에서 서버 인스턴스를 두 번 클릭).
  4. "서버 옵션"섹션에서 "기본적으로 모듈 자동 다시로드"를 선택 취소합니다.
    • 참고 : 이미 서버에 웹 모듈을 추가 한 경우 "모듈"탭 (구성 페이지 창 하단)을 통해 개별적으로 "자동 다시로드"를 비활성화해야 할 수 있습니다.
  5. "일반 정보"섹션에서 "실행 구성 열기"를 클릭하십시오.
    • "인수"탭에서 "VM 인수"끝에 다음을 추가합니다. -javaagent:/path/to/downloaded/springloaded-1.2.5.RELEASE.jar -noverify
    • 프로젝트 .class파일과 함께 JAR을 감시 할 수 있도록하려면 이 문제의 댓글에 따라 -Dspringloaded=watchJars=VM 인수를 구성합니다 .

서버를 시작하고 평소와 같이 동적 웹 애플리케이션 프로젝트를 게시하십시오. 다시 말하지만 저는 Spring 웹 애플리케이션으로 이것을 테스트 할 수있었습니다. 예를 들어, @Controller 클래스의 코드 수정, 메서드 추가 / 빼기 등은 파일을 저장하고 Eclipse가 변경된 클래스를 빌드하고 게시 한 후 거의 즉시 적용되었습니다. 마지막으로, Spring Loaded 프로젝트의 FAQ 섹션에서는 상황이 다시로드되지 않는 몇 가지 경우에 대해 언급 했으므로 서버 / 애플리케이션을 다시 시작해야합니다. 그러나 이러한 예외는 훨씬 덜 빈번합니다.

추가 참고 사항 : STS와 함께 제공되는 내장형 Pivotal tc Server 또는 VMware vFabric tc Server에서는 작동하지 않습니다. 이러한 서버의 경우 "Enable Java Agent-based reloading (experimental)"옵션이 있지만 Spring Loaded의 이전 1.2.0 릴리스를 사용합니다.


개발 목적으로 Jetty를 사용할 수 있습니까?

그렇다면 Maven과 함께 사용하는 것은 매우 간단합니다. mvn jetty:run


이것이 최선의 방법은 아니지만 저에게는 효과적입니다.

  • $ tomcat / conf / Catalina / localhost / .xml
  • $ contextPath / webapp / web / WEB-INF / lib / *. jar
  • $ contextPath / webapp / web /
  • $ eclispeWorkbench / project-servlet / src /
  • $ eclispeWorkbench / project-servlet / servlet.jardesc (jar를 $ contextPath의 lib dir로 내 보내야 함)
  • $ eclipseWorkbench / project-jsp /

rsync 명령을 사용하여 jsp 프로젝트의 변경 사항을 $ contextPath로 동기화합니다.

Eclipse에서 Tomcat 용 원격 디버깅을 사용하면 코드 핫스왑이 제한됩니다. 정적 필드를 변경하거나 메소드를 추가하는 경우 jar를 내보내고 컨텍스트를 다시 시작해야합니다.


아래 옵션을 사용할 수 있습니까? Eclipse에서 서버-> 서버 위치-> Tomcat 설치 사용을 두 번 클릭하십시오. Tomcat 설치를 제어합니다. Java 클래스를 변경하기 위해 서버를 다시 시작할 필요가 없습니다.


가장 간단한 방법을 찾았습니다. 심볼릭 링크 사용 : 동기화가 전혀 없기 때문에 이것이 가장 빠른 방법이라고 생각합니다. tomcat 디렉터리와 프로젝트 디렉터리는 항상 동일한 디렉터리입니다.

Tomcat은 주기적으로 변경 사항을 감지하고 애플리케이션을 재배포합니다.

응용 프로그램을 디버깅하는 방법도 있으므로 겸손하게 좋은 해결책이라고 생각합니다.

관심있는 사람을 위해 여기에 내 솔루션을 문서화했습니다 .


급한 경우 :

  1. Eclipse의 tomcat (다른 컨테이너)에서 "자동으로 게시하지 않음"을 확인하십시오.
  2. 디버그 모드에서 tomcat (다른 컨테이너)를 시작합니다.

짜잔! :)


Eclipse에서 상단 메뉴의 프로젝트를 클릭하고 "자동으로 빌드"가 선택되어 있는지 확인합니다. 이것은 내 문제를 해결했습니다. 내 작업 공간 메타 데이터를 사용하여 Tomcat과 함께 Eclipse를 실행하고있었습니다. 또한 Dynamic Web Module 프로젝트에서 Maven을 실행하고있었습니다. 확인하려면 애플리케이션을 Tomcat에 추가하십시오. Eclipse 내에서 Tomcat을 시작합니다. 애플리케이션이 배포되고 실행 중인지 확인합니다. Eclipse에서 콘솔 탭을 엽니 다. 응용 프로그램을 변경하십시오. 몇 초 후에 변경 사항이 자동으로 빌드되고 Tomcat에 배포되는 것을 볼 수 있습니다.


가장 간단하고 빠르다 : 빌드 할 때 WAR 파일을 생성하도록 Eclipse를 설정합니다. 빌드 후 단계로 해당 WAR 파일을 tomcat webapps 디렉토리에 복사하십시오. Tomcat은 변경 사항을 인식하고 배포 할 필요없이 사이트를 새로 고칩니다. 이것은 완벽하지 않습니다. 해당 웹앱을 사용하는 사용자는 Tomcat이 웹앱 "아래"를 다시 시작하기 때문에 최적의 경험이 아닐 수 있습니다. 그러나 이것은 귀하의 요청에 맞습니다.

참고 URL : https://stackoverflow.com/questions/998737/integrating-tomcat-and-eclipse-as-a-hot-deploy-environment

반응형