2012-07-31 2 views
2

일부 외부 라이브러리를 사용하는 ebj가 있습니다 (이 경우 해당 라이브러리는 직접 작성됩니다). 나는 그들을 EJB에 포함시켰다.Glassfish 3.1.2 응용 프로그램 배포 후 jars가 필요합니다.

글래스 피시는 필요한 용기를 한 번만 (처음 배포 할 때)로드하고 추가 배치를 위해 이미 병을 가지고 있다고 생각합니다. 그것은 단지 가정이지만 EJB에서 사용하는 라이브러리 중 하나에서 변경을 수행 한 경우 EJB를 다시 배포하면 변경된 내용이 적용되지 않습니다. Glassfish는 캐시에 보관할 수도있는 오래된 항아리를 계속 사용합니다 (예 : 글래스 피쉬 리포지토리에있는 항아리의 흔적을 찾을 수 있습니다.)

내가 지금까지 발견 한 유일한 해결책은 서버를 다시 시작하는 것입니다 ... 당신이 glassfish가 모든 작은 변화를 다시 시작하기를 기다려야하는 개발/테스트 세션에는 적합하지 않습니다.

내 질문은 :이 동작을 피하고 glassfish가 각 배포시 필요한 병을 다시로드하도록 할 수있는 방법이 있습니까?

나를 읽어 주셔서 감사합니다.

참고 : Netbeans를 사용하여 로컬로 배포 중이지만 glassfish 관리 콘솔에서 바로 실행하면 동일한 결과가 발생합니다.

답변

0

Windows 플랫폼에서 Glassfish 3.1.2와 동일한 문제가 발생했습니다. 응용 프로그램이 내 IDE에서 삭제되거나 재배포 될 때, 무언가 열려있는 파일이 있고 (분명히) Windows가 배포 작업을 제거하게하지 않을 것입니다.

내 솔루션은보다 동적이고 빠른 "디렉토리 배포"대신 "게시 용 Real Jar Archives for Deployment"를 사용하여 배포를 "전체 배포"로 변경하는 것이 었습니다.

Netbeans를 더 이상 사용하지 않기 때문에 Netbeans에서이 변경 작업을 수행하는 방법을 모르겠습니다.

Eclipse의 경우 : Servers보기/탭에서 서버를 두 번 클릭하여 서버의 Overview 설정을 엽니 다. 페이지의 맨 아래 설정은 User (sic) Real Jar Archives for Deployment ...입니다. 확인 (기본적으로 선택되어 있지 않음)하고 다시 시도하십시오.

+0

나는 netbeans로 어떻게 이런 행동을 할 수 있는지 보도록하겠습니다. 그것은 오라클에 의해 버그 태그가 붙은 것 같습니다. 내가 읽은 해결책 중 하나는 엔터프라이즈 어플리케이션에 ejb를 추가하는 것이 었습니다. 그것은 당신이 당신의 EJB에 netbeans plugin 의존성을 추가하지 않는 한 작동합니다. 감사. – nathan

+0

다른 사람이 똑같이하고 있는지는 모르겠지만 넷빈즈 플러그인을 EJB 의존성에 추가해야합니다. 그것은 완벽하게 작동하지만 내가 엔터 프라이즈 애플 리케이션과 내 이전 의견에 언급 한 트릭을하려고 할 때. "대상"dist-ear "는 EE 응용 프로그램 컴파일시 프로젝트에 존재하지 않습니다. 현재 왜 그 이유를 확인하려고합니다. – nathan

0

그래, 마침내 구체적인 결과가 나왔습니다. 내가하는 방식으로 일하는 사람들이 많이 있는지는 모르지만 내가 필요로하는 해결책을 폭로 할 것입니다.

먼저 netbeans 플랫폼을 사용하는 독립 실행 형 Java 클라이언트에 EJB를 배포하는 경우 (netbeans 플러그인을 사용하는 경우) 걱정할 수 있습니다.

문제는 glassfish (3.1.2, 다른 릴리스에서 같은 문제가 발생하는지 모르겠다)는 EJB 재배포시 필요한 jar를 다시로드하지 않는다는 것입니다. 따라서 EJB에 몇 가지 종속성이 있고 EJB에 몇 가지 변경 사항이있는 경우 glassfish는 EJB를 다시 배포 한 후에도 이전 jar를 계속 사용합니다. 오라클이 버그로 태그를 지정했기 때문에 곧 해결 될 것이라고 생각합니다. 그러나 오라클이 자신의 업무를 수행 할 때까지는 해결책이 있습니다.

참고 :이 오류는 EJB에 netbeans 플러그인 종속성이있는 경우에만 발생합니다. 자신의 케이스가 아닌 경우 EJB를 엔터프라이즈 애플리케이션에 추가하고 배포하면 jar 파일이 자동으로 다시로드됩니다.

내 경우에 있다고 가정하십시오. netbeans 플러그인에 의존하는 EJB가 포함 된 EE 앱을 컴파일하는 경우.이 오류 가지고 있습니다

Target "dist-ear" does not exist in the project "the path your netbeans plugin" 

는이 문제를 해결하기를, 내가 플러그인의 빌드 impl.xml 파일에 대상을 추가했습니다.

<target name="dist-ear" /> 

그런 다음 netbeans 플러그인을 엔터프라이즈 응용 프로그램의 종속성으로 추가하십시오.

응용 프로그램을 재배포하면 EJB 종속성이로드되어 glassfish 서버를 다시 시작할 필요가 없습니다.

관련 문제