2012-04-18 6 views
7

Apache TomEE가 웹 응용 프로그램으로 openejb가 설치된 일반 Tomcat 설치임을 이해합니다.Apache TomEE를 사용할 때 응용 프로그램 시작 및 구성의 워크 플로가 무엇입니까

이 모든 것이 어떻게 부트 스트랩되는지 이해하려고합니다. 몇 가지 직접적인 질문을 시도해 보겠습니다 :

  • 응용 프로그램 시작 순서를 갖는 것이 중요합니까? 내 웹 앱을 시작하기 전에 openejb를 시작해야합니까? 또는 다른 방법으로 시작해야합니까, 아니면 중요하지 않습니까?
  • 이전 질문과 관련 있습니다. 엔터프라이즈 애플리케이션이 bean을 openejb로 등록하는 방법 또는 openejb가 EJB의 동일한 서버에서 엔터프라이즈 애플리케이션을 검색하는 방법은 무엇입니까?
  • 매우 평신도 수준에서 다른 웹 응용 프로그램 인 경우 EJB 컨테이너로 openejb를 제공 할 수 있었던 방법은 무엇입니까? (IIRC Tomcat의 모든 웹 애플리케이션은 다른 클래스 패스를 얻고 서로의 발가락을 밟을 수 없습니다.)

기타 중요 정보.

답변

8

통합은 conf/server.xml에서이 라인을 통해 부트 스트랩 : 모든 응용 프로그램이 시작되기 전에

<Listener className="org.apache.tomee.loader.OpenEJBListener" /> 

이 시작되는 즉시 발생합니다. <tomcat-home>/webapps/openejb/lib 디렉토리의 라이브러리는 Tomcat 시스템 클래스 로더에 추가되고 다른 리스너는 배포에 참여하기 위해 설치되며 그 이후부터 Tomcat 라이프 사이클의 이벤트를 사용하여 모든 것이 발생합니다. Tomcat은 응용 프로그램 시작 (배포) 및 종료시 몇 가지 이벤트를 발행합니다. Tomcat은 서블릿 배포를 위해 Tomcat을 사용하며 본질적으로 통합은 훨씬 더 똑같습니다. Tomcat을 포함하는 다른 공급 업체도이 고리를 사용합니다. 그러한 관점에서 보면 통합은 정말 지루합니다.

유일한 흥미로운 트위스트는 추가 라이브러리를 war 파일에 넣는 것입니다. 실제로는 기존 Tomcat 설치에 가능한 한 쉽게 추가 라이브러리를 추가하고 (가능한 한 쉽게 제거 할 수 있도록) 수행되었습니다. <tomcat-home>/webapps/openejb/lib의 모든 라이브러리는 바로 <tomcat-home>/lib에서 쉽게 찾을 수 있습니다. 어느 시점에서 webapss/openejb/ 전쟁을 원할 수있는 유일한 방법은 HTTP를 통해 EJB를 호출 할 수 있다는 것입니다.

그래서 짧은 대답은 다음과 같습니다

  • 위해 appliction 시작 순서는 중요하지 않습니다
  • EJB 배포
  • 항아리 즉시에 톰캣 시스템 클래스 로더에 추가 서블릿 배포를 나란히 발생 Tomcat 자체가 시작됩니다.

다른 답변에서 주목할 점은 실제로 Tomcat이 클래스 경로에서 두 개의 jar로 시작한다는 것입니다. 실제로 Tomcat은 시작시 자동으로 <tomcat-home>/lib/의 모든 jar 파일을 추가합니다. 나는 우리가 기본적으로 그냥 <tomcat-home>/webapps/openejb/lib

에서 같은 일을하고있는을 우리가 실제로 <tomcat-home>/lib/에 라이브러리를 이동하고 (앞으로 최종 릴리스에서 tomee.war라고합니다)를 OpenEJB를 웹 애플리케이션을 삭제 테스트 한 생각하지만하지 않습니다 그것을 시도하는 메모를 만들 것입니다. 기본적으로 지원하거나 어쩌면 도움이되는 것처럼 보입니다. Tomcat 관리자와 ROOT 웹 응용 프로그램을 삭제할 수 있으므로 openejb.war 파일을 쉽게 삭제할 수있는 좋은 방법 인 것 같습니다.

+0

놀라운 답변 주셔서 감사합니다 :-) – Parag

+0

'웹 포인트/openejb/war가 HTTP를 통해 EJB를 호출 할 수있는 유일한 방법은 어느 시점입니까?' 대답이 분명하다면 미안하지만 모든 openejb jar 파일이 /lib에 있다면 EJB에 대한 HTTP 요청을 처리 할 수없는 이유는 무엇입니까? – Parag

+0

libs가 이동되고 webapps/openejb war가 삭제 된 경우 HTTP over EJB 기능이 제거됩니다. –