2010-03-05 3 views
0

서비스 레이어 클래스를 다시로드하지 않고 웹 레이어 클래스를 다시로드하려는 경우 (초기화 및 변경 빈도가 오래 걸림). 내 서비스 레이어에서 웹 레이어에 대한 참조가 없으므로 문제없이 웹 레이어의 전체 인스턴스를 새로 만들 수 있습니다.웹 응용 프로그램을 다시 시작하지 않고 서블릿 클래스를 다시로드하려면 어떻게해야합니까?

복잡한 클래스 로더 트릭을 사용하여 자체 클래스 로더에서 웹 레이어를 분리하는 방법을 생각해 볼 수 있습니다.이 방법을 사용하는 것이 유일한 방법 일 것이라고 생각합니다. 라이브러리가 거기에 있나요? 내가 그 많은 전력을 필요로하지 않으며, 난 정말 더 경량의 무료 솔루션을 찾고 있어요 -

나는 JavaRebel에 대해 알고.

+1

이유는 무엇입니까? 나는 이것에 대해 실제적인 이익을 보지 못했다. 어쩌면 디버그/개발 중에 만 가능합니다. – BalusC

+0

네, 이것이 제가 필요로하는 것입니다 - 프로덕션 환경에서 사용되지 않는 개발. – Ramon

답변

3

웹 레이어가 서비스 레이어와 분리되어 있다면 별도의 응용 프로그램으로 배포 할 수 있습니까? 그런 다음 웹 앱을 필요한만큼 자주 다시로드 할 수 있습니다.

이 경우 웹 애플리케이션 리로딩 이유는 구성 변경 후 WEB-INF 폴더로부터 멀리 이동 특성 등이다 (이들은 일반적/재충전 다시로드되지 않기 때문에). 등 재충전 CONFIGS을 처리하기위한 아이디어는 당신이 실제로 웹 애플리케이션을 개발하는 것보다 기능을 개발하고 더 많은 시간을 낭비 끝날 것이라고 생각 봄과 프리 마커

+0

다른 응용 프로그램에있을 경우 웹 계층이 서비스 계층 개체를 어떻게 참조합니까? – Ramon

+0

글쎄, 만약 그들이 진정으로 분리되어 있다면 소켓, 웹 서비스, 나머지를 사용할 수 있습니다 ... 같은 응용 프로그램 내에서 직접 참조 대신. – Kennet

0

이 문제를 해결할 것입니다,하지만 당신은 쉽게 웹 층의 전체 인스턴스를 인스턴스화 할 수 있다면, 아마도 당신은 예를 들어, 그라고 reloadWebLayer()를 수행하는 방법을 만들 수 있습니다 확실하지. 그런 다음 클릭 할 때 reoladWebLayer()를 호출하는 관리 페이지에 버튼을 추가 하시겠습니까?

자동으로 다시로드해야하는 경우 타이머를 설정하고 x 초마다 reloadWebLayer()를 호출하거나 클래스 경로의 파일이 변경 될 때마다 reloadWebLayer()를 실행하는 파일 수신기를 작성할 수 있습니다.

+0

이것은 클래스 자체를 다시로드하지는 않습니다. 실제로는 원하는 것입니다. – Ramon

1

에서 찾을 수 있습니다. 그냥 그걸로 인생을, 그게 당신이 지불하는 곳이야. 필자는 새로운 코드 줄마다 F5/새로 고침을해온 PHP 개발 개발자가 좌절 할 수 있다고 생각합니다 ... 그러나 사용하는 응용 프로그램 서버에 따라 다릅니다. 대부분 핫 애드 플레이를 지원합니다. 당신도 그렇게하도록 구성되어 있는지 확인하십시오. 보통 IDE가 이미이 문제를 처리해야합니다 (최소한 Eclipse : Tomcat6 또는 Glassfish3).

hotdeploys이 빠르거나 성공적인지 여부는 문제가되는 응용 프로그램 서버에 따라 다를 수 있습니다. 나는 느린 시동기인데 글래스 피쉬가 - 심지어 이 매우 빠름이 hotdeploys에 있음을 경험했습니다. 나는 그것을 좋아한다. Tomcat은 조금 느리고 항상 성공하지는 않습니다 (예 : 메모리에있는 오래된 물건/쓰레기 등).

+0

웹 응용 프로그램을 다시로드하기 위해 10 초를 기다렸다가 매월 10 * 3 * 8 * 20 = 4800 초 = 1 시간 20 분 작동하는 월에 하루에 8 시간 동안 3 번씩 시간을 다시로드합니다. 저는 5 명의 다른 개발자들과 일하면서 저의 한 작은 회사에서 일년에 80 시간 씩 작업합니다. 이 모든 것들이 합쳐집니다. – Ramon

+0

즉, hotdeploys 및/또는 Glassfish를 사용하고 있지 않습니까?BTW : 정직하게 80 시간 내에 견고하고 견고한 제품을 개발했다고는 생각하지 않습니다.) – BalusC

+0

핫 배포는 서비스 레이어가 여전히 자체 초기화를 요구합니다. * 그 * 모든 웹 응용 프로그램을 피하려고합니다. 리로딩은 내가 피하려고하는 것입니다 - 뜨거울 지 말지. – Ramon