2013-10-08 4 views
0

Eclipse에서 IntelliJ IDEA로 전환하는 방법을 고려하고 있습니다. 우리는 코드 줄을 바꿀 때마다 응용 프로그램을 다시 시작할 필요가 없도록 JRebel을 사용해야합니다.JRebel은 모든 클라이언트 측 클래스 파일을 GWT로 계속로드합니다.

하나의 .java 파일에서 한 줄의 코드를 변경할 때마다 특정 파일에서 IntelliJ make 프로세스를 호출 한 후에 JRebel은 클라이언트 쪽 클래스 전체를 다시로드하는 것처럼 보입니다.

Eclipse에서는이 잔인한 재로드 동작이 때때로 발생할 수 있지만 대부분의 경우 클래스 재로드 프로세스가 훨씬 빨라졌습니다!

나는 뭔가를 놓치고 있다고 생각합니다. IntelliJ와 JRebel을 사용해 본 경험이있는 분이라면 JRebel 플러그인이 더 이상 아무것도 필요하지 않을 때 하나의 클래스를 다시로드하는 방법을 알고 있습니까?

도움이 될 것입니다.

  • 참고 1 : 저는 수퍼 dev 모드가 도움이 될 수 있지만 저는 먼저 JRebel 플러그인 작동을 원합니다.
  • 참고 2 : VM arg -Drebel.check_class_hash=true도 도움이되지만 플러그인이 그런 식으로 작동하도록되어 있다고는 생각하지 않습니다.
+0

골동품, JRebel의 슈퍼 dev 모드의 장점은 무엇입니까? JRebel은 수퍼 dev 모드가 할 수없는 일을합니까? –

+0

안녕하세요, JRebel 사람입니다. 나는 왜 내가 JRebel을 좋아하지 않는다고 말하기를 원한다고 생각하십니까 :)? 우리는 복잡한 워크 플로우가있는 큰 엔터프라이즈 애플리케이션을 작성하고 있습니다. JRebel을 사용하면 앱을 다시로드하지 않고도 워크 플로우의 일부 또는 내가 위치한 부분을 다시로드 할 수 있습니다. 그렇지 않으면 개발자가 복잡한 마법사를 다시 시작하게되어 Selenium의 도움으로 고통을 겪을 수 있습니다. 사용자 관점에서, JRebel은 클라이언트와 서버 측 코드를 같은 방식으로 처리합니다. 수퍼 데브 모드 (Super Dev Mode)는 전체 앱을 다시 컴파일하고 JRebel은 더 빨라집니다. 최소한 Eclipse에서는 몇 개의 파일 만 다시 컴파일합니다. – otonglet

+0

글쎄, 내 목표는 실제로 우리가 슈퍼 dev에 모드에도 불구하고 GWT에 대한 특별한 지원을 추가하는 시간을 보내고 싶다면 알아낼 것입니다. Super dev 모드가 사람에게 효과가 있다면 우리는 GWT 통합에 시간을 낭비하지 않을 것입니다. BTW, JRebel 아무것도 컴파일, 컴파일러 (javac, ejc) 결과를 사용하고 실행중인 응용 프로그램에서 클래스 및 리소스를 업데이트합니다. –

답변

0

-Drebel.check_class_hash = true이 경우에 도입되었습니다. 그러나 실제로 검사해야하는 것은 입니다. 이유는 클라이언트 측 클래스가 다시로드됩니다. JRebel은 클래스 파일의 타임 스탬프가 변경 될 때 클래스를 다시로드하거나 -Drebel.check_class_hash = true가 설정되면 타임 스탬프와 함께 해시를 검사합니다.

그래서 가장 먼저 알아야 할 것은 하나의 클래스를 만들 때 다른 클래스의 타임 스탬프가 JRebel을 다시로드하고 변경 했습니까? 어쩌면 IntelliJ의 GWT 빌드가 컴파일 시간 동안 너무 많은 파일을 다루는 것일까? 아니면 실제로 변경 한 단일 클래스를 컴파일 할 수도 있습니다.

위의 내용이 사실이 아니라고 가정하면 GWT.create가 코드의 어딘가에서 변경 중이며 변경 한 후에는 make 중에 다시 실행해야합니다. 전파되지 않을 것이다. 이것은 make 프로 시저에 의해서만 트리거되며 JRebel은 GWT.create를 다시 실행하는 것을 트리거하지 않습니다. 이것은 단지 가정이므로 100 % 심각하게 생각하지 마십시오.

또한 JRebel 지원팀에 문의 할 수도 있습니다.

+0

답변 해 주셔서 감사합니다. 클래스가 다시로드되는 이유를 알 수 없습니다. 나는 신분 확인 절차에 익숙하지 않습니다. 그러나 그것이 이것이 문제의 핵심이라는 것을 알고 있습니다. GWT.create 호출은 없습니다.그러나 일부 리소스는 GIN을 사용하여 주입됩니다. GWT.create를 다시 실행해야한다고 말하면 내 코드에 GWT.create 호출이 있으면 그런 식으로 만든 모든 클래스를 다시로드해야한다는 의미입니까? GIN 주입은 같은 행동을 유발합니까? 어쨌든 조언 주셔서 감사합니다. 다른 포럼에 답 하시려면 JRebel 지원팀에 연락하겠습니다. – otonglet

+0

그래서 JRebel 지원팀에갔습니다. 그들에 따르면 IntelliJ에서 -Drebel.check_class_hash = true를 사용하면 올바른 동작입니다. http://zeroturnaround.com/forums/topic/jrebel-constantly-reloading-every-client-side-class-file-with-gwtintellij/#post-37265 @Anton 의견을 보내 주셔서 감사합니다. – otonglet