programing

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

starjava 2023. 4. 27. 21:43
반응형

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

Eclipse와 Tomcat을 통합적으로 설정하여 JSP와 서블릿의 변경 사항(가능하면)이 배포할 필요 없이 즉시 반영되도록 하고 싶습니다.

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

이것은 내가 이클립스와 톰캣을 독립적으로 실행한다고 가정합니다.http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html 의 지침을 사용하여 무중단 배포 방식으로 통합할 수 있었습니다. http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/index.html

이클립스 버전: 3.4.2(가니메데)Tomcat v6.0.20

두 가지 옵션이 있습니다.

먼저 Eclipse를 사용하면 구성을 약간 변경하여 이 작업을 수행할 수 있습니다(자세한 내용은 이 게시물 참조).

  • 서버 목록에 Tomcat 추가
  • 프로젝트를 "Dynamic web project"로 만듭니다(생성 마법사 또는 설정의 패싯 섹션을 통해).
  • Tomcat에 프로젝트를 추가하고 "배포 어셈블리"를 구성합니다.
  • 목록에서 Tomcat을 두 번 클릭하여 구성을 엽니다.
  • "등록"을 "자동으로 게시 안 함"으로 변경합니다. 즉, ctrl+s를 누를 때 서버가 다시 시작되지 않습니다.
  • 디버깅 모드에서 Tomcat 시작

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

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

  • 의 모든 를 모든클를스디렉에로서보플구로 합니다.WEB-INF/classesTomcat 설치(배포 어셈블리 구성과 거의 동일)
  • 다른 모든 리소스가 해당 위치로 이동하도록 구성
  • 선택적으로 파일 동기화 위치 설정의 모든 절대 경로를 단일 변수로 외부화하고 이 변수를 구성합니다(모든 구성원이 이클립스를 사용하는 경우 파일 동기화 설정도 커밋할 수 있음).
  • 이클립스에서 서버 목록에 Tomcat을 추가하고 "서버 위치" 옵션을 "Use tomcat installation"으로 구성합니다(서버 목록에서 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을 자동으로 다시 로드하도록 구성했습니다.

고지 사항:저는 그저 행복한 고객일 뿐이고 제로 턴어라운드에서 일하지 않으며 어떤 식으로든 그들과 제휴하지 않습니다.

JRebel을 확인하십시오. 웹 응용 프로그램을 다시 시작하지 않고 코딩할 수 있습니다.그것은 기본적으로 여러분의 수업을 도구화하고 그들의 변화를 조정함으로써 작동합니다.핫 배포보다 더 많은 사례를 처리합니다. 여기에는 다음이 포함됩니다.

  • 메서드 추가/제거
  • 생성자 추가/제거
  • 인터페이스 변경
  • 구현된 인터페이스 추가/제거

이 제품은 상용 제품이며(가격 세부 정보, 2018년 6월 기준 $550/연간), 다음과 같은 타사 프레임워크용 플러그인이 많이 있습니다.

  • 귀체
  • 스트러츠 2

당신은 꽤 고통 없이 무료 평가판을 사용할 수 있습니다. 저는 당신이 한번 사용해 보는 것을 제안합니다.

이클립스의 작업 공간을 \tomcat\webapps로 변경하십시오. 이 작업 공간은 업무용으로만 사용할 수 있으므로 잘 작동할 것입니다.Eclipse에서 변경한 내용이 동일한 디렉토리에 있는 Tomcat은 배포할 애플리케이션을 찾습니다.

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

개발 목적이라면 이클립스 내에서 통합 Tomcat 서버를 사용하는 것이 어떻습니까?창 -> 환경설정에서 서버를 구성할 수 있습니다.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"를 비활성화했습니다.

또한 기본 구성이 자동 게시를 허용하도록 합니다.

그리고 Maven을 WTP와 함께 사용하고 있습니다. 이클립스는 최종 빌드의 이 폴더 내용을 제외해야 한다고 주장하기 때문에 src/main/resources의 내용을 남겨두는 것을 잊지 마십시오.

이 모든 것을 통해서만 전체(VM) 클래스를 리소스를 사용한 hot-deploy!!!

개발 환경에서 Tomcat 서버가 JSP를 개발 중인 디렉토리에서 찾기만 하면 됩니다.파일을 저장하는 즉시 변경 내용을 볼 수 있습니다.

SpringLoaded JVM 에이전트를 사용하여 개발 환경에서 이 작업을 수행할 수 있었습니다.제가 Spring 웹 애플리케이션을 개발하는 동안, 그 프로젝트의 설명은 그것을 언급합니다.

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

다음 설정을 사용하여 첨부된 Tomcat 인스턴스(일반적인 Eclipse WTP 메서드)에 자동으로 게시할 변경사항을 얻을 수 있었습니다.Eclipse Mars.2(4.5.2) 기반의 Spring Tool Suite 3.7.3을 사용하고 있습니다.

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

서버를 시작하고 동적 웹 응용프로그램 프로젝트를 평소와 같이 게시합니다.다시 한번, 저는 이것을 스프링 웹 애플리케이션으로 테스트할 수 있었습니다.예를 들어 @Controller 클래스에서 코드 수정, 메서드 추가/감산 등은 내가 파일을 저장하고 Eclipse가 변경된 클래스를 빌드하여 게시한 후 거의 즉시 적용되었습니다.마지막으로, SpringLoaded 프로젝트의 FAQ 섹션에서는 서버/애플리케이션을 다시 시작해야 하는 몇 가지 경우를 언급했습니다.그러나 그러한 예외는 훨씬 덜 자주 발생합니다.

한 가지 더 주의할 점:STS와 함께 제공되는 내장형 Pivotal TC Server 또는 VMware vFabric TC Server에서는 작동하지 않습니다.이러한 서버의 경우 "Java 에이전트 기반 다시 로드 사용(실험)" 선택사항이 있지만, SpringLoaded의 이전 1.2.0 릴리스를 사용하는 옵션은 사용할 수 없습니다.

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

그렇다면 메이븐과 함께 사용하는 것은 매우 간단합니다. - 그냥 실행하세요.

이것이 최선의 방법은 아닐 수도 있지만, 저에게는 효과가 있습니다.

  • $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의 libdir로 내보내야 함)
  • $eclipse Workbench/project-jsp/

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

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

아래 옵션을 사용할 수 있습니까?이클립스의 서버 -> 서버 위치 -> Tomcat 설치 사용을 두 번 클릭합니다.Tomcat 설치를 제어합니다.Java 클래스를 변경하려면 서버를 재시작할 필요가 없습니다.

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

Tomcat은 주기적으로 변경 사항을 감지하고 응용 프로그램을 다시 배포합니다.

당신의 애플리케이션을 디버깅하는 방법도 있기 때문에 겸허하게 좋은 해결책이라고 생각합니다.

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

당신이 급할 경우를 대비:

  1. 이클립스의 Tomcat(다른 컨테이너)에서 "자동으로 게시 안 함"을 선택합니다.
  2. 디버깅 모드에서 Tomcat(다른 컨테이너)을 시작합니다.

voila! :)

Eclipse에서 상단 메뉴의 Project를 클릭하고 "Build Automatic"이 선택되었는지 확인합니다.이것이 제 문제를 해결했습니다.작업 공간 메타데이터를 사용하여 Tomcat과 함께 이클립스를 실행했습니다.저는 또한 다이내믹 웹 모듈 프로젝트에서 메이븐을 운영하고 있었습니다.확인하려면 Tomcat에 응용 프로그램을 추가합니다.이클립스 내에서 Tomcat을 시작합니다.응용 프로그램이 배포되고 실행 중인지 확인합니다.이클립스에서 콘솔 탭을 엽니다.응용프로그램을 변경합니다.몇 초 후에 Tomcat에 자동으로 변경사항이 작성되고 배포되는 것을 볼 수 있습니다.

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

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

반응형