2009-11-17 4 views

답변

3

내가 생각할 수있는 가장 간단한 일은 런타임시 시스템 속성을 살펴 보는 것입니다. 두 서버 모두 거의 확실하게 자체 서버를 정의 할 것이기 때문입니다. 예를 들어 JBoss 4는 jboss.server.dir 시스템 속성을 정의합니다. 해당 속성이 있는지 확인한 다음 해당 속성이있는 경우 해당 서버에서 실행중인 것으로 가정 할 수 있습니다. OC4J는 비슷한 것을 가질 것입니다.

또는 서버 인프라의 일부인 클래스를 반사적으로로드하십시오 (예 : JBoss 4의 org.jboss.Version). 존재하는 경우, 현재 사용중인 서버를 알 수 있습니다.

2

ServletContext#getServerInfo()으로 알 수 있습니다.

+1

궁금한 점 ... 앱 서버가 아닌 서블릿 컨테이너의 이름을 반환 할 것으로 보이지만 충분할 수도 있습니다. – skaffman

+0

응용 프로그램 서버에 따라 다릅니다. 예를 들어, JBoss 4.2.x 이상은 "JBoss"를 반환하지만 이전 버전은 "Apache Tomcat"을 반환하는 데 사용됩니다. – BalusC

0

로 변경 System.getProperty("jboss.home.dir")

관련 문제