2012-06-24 4 views
1

나는 그런 종류의 정보를 위해 잠시 동안 찾고 있었지만 명확한 답을 찾을 수 없었다.응용 프로그램 서버가 여러 응용 프로그램을 실행하는 방법은 무엇입니까?

응용 프로그램 서버가 여러 개의 (웹) 응용 프로그램을 실행하기 위해 사용하는 정확한 메커니즘은 무엇입니까? 예를 들어 정적 필드 격리를 어떻게 관리합니까?

나는 몇 가지 솔루션 상상할 수 :

  • isolation API을;
  • bootstrapping;
  • (클래스 컨텍스트 로더를 사용하여) 클래스 로더를 사용한 트릭;
  • 여러 개의 jvm 인스턴스가 실행 중입니다.

하지만 실제로 사용하는 대상은 무엇입니까?

답변

4

응용 프로그램을 분리하기 위해 응용 프로그램 서버는 실제로 클래스 (및 정적 필드)를 구별하기 위해 별도의 클래스 로더를 사용합니다.

예를 들어 JBoss는 v4부터 Unified Class Loader (UCL)을 사용하고 있습니다.

+0

모두 동일한 접근 방식을 사용합니까? WebSphere 또는 Glassfish는 어떻습니까? –

+1

어느 정도는 OSGi로 마이그레이션하는 것 (대개 내부적으로)은 별개의 ClassLoader를 기반으로합니다. 내가 아는 어떤 것도 분리 된 JVM (클라우드 솔루션 제외) 또는 "격리 API"- 그것이 무엇이든지간에 사용합니다. – mhaller

+0

대단히 감사합니다. –

관련 문제