2011-10-14 6 views
10

저는 Java EE에 처음 접했고 배포 프로세스가 느려지는데 어려움을 겪었습니다. 코드 변경이 즉시 발생하는 장고에 대해 경험이 많습니다. Java EE 애플리케이션 배포가 다소 혼란 스럽습니다. 뜨거운 배포 (Glassfish, Eclipse 조병 hotdeploy, Jetty hotdeploy, JRebel 등)가 여러 가지 있습니다.).즉시 Java EE 응용 프로그램 재배포

내 프로젝트가 Maven 프로젝트이고 Netbeans을 사용하여 배포하고 있습니다. 이 사이트는 Spring, JSF 및 Hibernate 프레임 워크를 사용합니다.

다음 스크린 샷에 따라 Netbeans에서 Deploy on Save를 사용할 수 있지만 pom.xml에서 정보를 가져 오는 것으로 주장하므로 클릭/클릭 해제를 수행 할 수 없습니다 (내 pom에는 해당 필드가 없지만). .xml (종속성 만). enter image description here

이제 일부 파일의 변경 사항은 즉시 효력이있는 것으로 보입니다. 이들은 다음을 포함한다 : - JSF 파일 - 정적 파일

을 다음

변경 배포 필요합니다 - 모든 XML 파일 를 - 모든 속성은, 도 현지화 특성 파일을 파일 - 것과

변경이 저를 요구하는 모든 자바 파일을 을 수동으로 배포하려면이어야하며 현재 2-3 클래스 (기본적으로 단일 사용자 클래스 및 인증 클래스)가 있더라도 재배포에는 30 분이 소요됩니다. 이 프로젝트는 현재 로그인 만 허용하며, 컴파일에도 몇 초가 걸립니다. 컨테이너 (Glassfish)는 약 600MB의 RAM을 소모하는 것으로 보이며 일부 배포 후에도 PermGen 오류가 발생하며 작업 관리자를 사용하여 Java 프로세스를 중단해야합니다. (이것은 각 재배포 후에 누수 가비지 컬렉터와 관련이 있으며 jhat를 사용하여 프로필을 생성했지만 수천 개의 클래스, 클래스, Spring, Hibernate 클래스 등의 목록으로 표시 되었음)

jrebel에 대해서도 들었지만 실행 해 보았습니다.하지만 Netbeans 버전 (7.0)과 호환되지 않는 것으로 보입니다. 실행되는 것으로 보이지만 Java 파일을 수정하면 재배포가 필요합니다.

이 문제를 해결하기 위해 할 수있는 일이 있습니까? 아니면 Java EE에서 Java 파일을 변경할 때마다 약 1 분을 기다리는 것이 정상입니까? 이 문제는 생산성을 현저하게 감소시킵니다.

여기에 응용 프로그램을 배포 할 때 내 글래스 피시 출력 : http://pastebin.com/7FhZ6AVh

답변

5

내가 발견 신뢰할 수도 공식도 소스를했지만 더 답이 없기 때문에 내가 발견 한 두 가지를 지적하고 싶습니다.

처음은 Maven 프로젝트의 저장시 컴파일을 켜는 방법을 설명하는 NetBeans 사이트의 this FAQ입니다. 이 설정은 기본적으로 해제되어 있으며 테스트의 경우에만 기본적으로 설정되어있는 것으로 보입니다. 편의를 위해 :

뿐만 아니라 주요 소스 실행을 설정하려면 프로젝트 속성 대화 상자, 컴파일 패널로 이동합니다.

두 번째로 나는 이것을 완전히 이해하지 못한다는 점을 강조합니다. NetBeans가 웹 응용 프로그램을 배포하는 두 가지 방법이있는 것 같습니다.첫 번째 방법은 .war 파일을 수동으로 서버에 배포하는 것과 같은 것으로 보이는 적절한 배치입니다. 두 번째는 증분 배포입니다. 증분 컴파일과 같은 것이라면 앱이 핫 전개 될 때 변경된 파일 만 배포한다는 것을 의미합니다.

프로젝트의 컨텍스트 메뉴에서 Run 또는 Deploy을 클릭하면 전체 배포가 기본 배포 방법 인 것처럼 보입니다. 증분 배포는 프로젝트가 이미 배포되어 있고 Run을 다시 클릭하거나 Run 툴바 버튼을 사용하는 경우에 발생합니다.

netbeans.org 웹 사이트의 공식 출판물이 아니지만 NetBeans FAQ를 지적하고 싶습니다. 누구나 FAQ를 작성할 수 있으며 정보는 개정없이 쓸모 없게 될 수 있습니다.

편집이 : 약간의 반사 후 나는 소위 증분 배포는 그것이 증분 배포를 수행하는 두 번째 시간은 당신 Run 응용 프로그램 뿐이다 배포의 다른 방법이 아니라고 결정했습니다.

편집 : 당신이 당신의 스크린 샷에서 선택한 Run 패널에 반대 명령이 위의 Compile 패널을 가리키는 것을 알 수 있습니다. 여기 내 스크린 샷은 아래 Compile 패널 드롭 for both application and test execution를 선택해야하는 것이 기본이 for test execution only

Compile panel drop down

0

는 "저장에 컴파일"는 것을 보여주는 것 나를 위해 일을 많이 둔화,하지만 또 다른 한가지는 내가 발견 나중에 디버그 모드에서만 볼 수있는 Netbeans의 "코드 변경 적용"버튼이 있습니다. (그림의 오른쪽에있는 녹색 버튼)

이것은 Java 코드 변경 사항을 적용 할 때 유용합니다. 그것은 매번 작동하지 않지만 변경 사항이 메소드 추가가 아니고 빈이 요청 범위 인 경우 대부분의 경우 작동한다고 생각합니다. 나는 이것이 Compile on Save를 수동으로 수행한다고 생각하지만, 재배포하는 것보다 낫습니다.

Apply Code Changes

+0

"코드 변경 적용"은 핫 스왑입니다. 클래스 서명을 변경하는 경우에는 작동하지 않습니다. – Daniel

2

JRebel은 (http://plugins.netbeans.org/plugin/22254/jrebel-netbeans-plugin) 넷빈즈 7.0과 호환되며 실제로는 거기에 어떤 IDE와 호환됩니다.

1

이 넷빈즈 7.2.1 및 글래스 피쉬 3.1.2에 JRebel을 설정을 통해 산책 넷빈즈 팀 Geertjan Wielenga의 뛰어난 비디오입니다 : 넷빈즈 IDE에 JRebel을 시작하는 방법

: http://www.youtube.com/watch?v=kveXKv2q4Ec

관련 문제