2014-01-13 3 views
1

나는 ofbiz의 hot-deploy 폴더에 새 구성 요소를 개발 중입니다.Ofbiz 핫 배포/캐시 충돌

워크 플로와 관련하여 클래스가 .java 새롭게 수정되면 다른 터미널에서 구성 요소의 ant build 명령을 실행합니다.

리빌드가 완료되면 로그에 Controller이 내 구성 요소를 다시 마운트했다는 메시지가 표시됩니다. 그러나 변경 사항은 응용 프로그램에 반영되지 않습니다.

그러나 클래스가 올바르게 다시로드되고 응용 프로그램 동작이 수정 사항을 준수하는 경우가 있습니다. 클래스가 결코 ClassLoader에 의해로드되지 않은 경우 (액세스 된 적이없는 경우) 수정 내용이 표시됩니다. 이로 인해 클래스/jar가 애플리케이션의 어딘가에 캐싱되고 새로운 변경 사항이 고려되지 않는다고 생각하게되었습니다 (따라서 처음부터 핫 전개의 아이디어를 완전히 무효로 만듭니다).

실제 문제입니까 아니면 다른 것이 누락되어 있습니까? 이 캐싱을 비활성화하는 방법이 있습니까?

답변

0

OFBiz는 캐싱 클래스 로더를 사용합니다. 이는 아마도 실행중인 것입니다 (CachedClassLoader.java 참조). 그러나 OFBiz를 실행하는 방법에 따라 기본 클래스 로더에 다른 문제가있을 수 있습니다.

OFBiz의 hot-deploy 디렉토리는 실제 배포가 아니며, 그 안에있는 구성 요소 디렉토리에 대한 자동 배포 기능입니다. 일반적으로 OFBiz에서 대부분의 리소스는 스크립트와 유사하며 일반적으로 Groovy 또는 간단한 메서드 스크립트로 코드를 작성한 다음 자동으로 업데이트됩니다 (기본 캐시 설정과 프로덕션 캐시 설정의 경우 수동 캐시 지우기가 필요함) webtools webapp에서).

OFBiz를 배포하는 방법에 따라 특정 컴파일 된 클래스를 다시로드하는 것은 웹 응용 프로그램간에 공유되므로 일반적으로 작동하지 않으므로 웹 응용 프로그램 외부에있는 클래스 경로 리소스를 다시로드해야합니다. 이것은 격리 된 클래스 로더가있는 간단한 webapp 또는 WAR 파일을 배포하는 것과는 매우 다릅니다.