JSP가 표준 API를 준수하므로 내 프로젝트에서 JSP를 사전 컴파일 한 다음 결과를 모든 서버에 배포 할 수 있습니까?JSP 사전 컴파일 : 해당 서버가 고유합니까?
특히 Tomcat, JBoss 및 WebSphere를 사용하고 있습니다.
JSP가 표준 API를 준수하므로 내 프로젝트에서 JSP를 사전 컴파일 한 다음 결과를 모든 서버에 배포 할 수 있습니까?JSP 사전 컴파일 : 해당 서버가 고유합니까?
특히 Tomcat, JBoss 및 WebSphere를 사용하고 있습니다.
아니요. JSP 컴파일러에 의해 생성 된 Java 소스를 살펴보면 컨테이너에 독점적 인 기본 클래스를 확장한다는 것을 알 수 있습니다. 예를 들어, JBoss 4의 서블릿 컨테이너는 org.apache.jasper.runtime.HttpJspBase
으로 확장되는 JSP 클래스를 생성합니다.이 클래스는 Tomcat 및 JBossWeb에만 해당됩니다.
그래서 은 미리 컴파일 된 JSP를 다른 Tomcat 기반 서버간에 재사용 할 수 있지만 작동하지 않을 수도 있습니다.
서블릿/JSP 엔진은 앱 서버마다 다르므로 이동성이없는 바이트 코드가 추가 될 수 있습니다.
확인을 위해 테스트를 작성해야합니다. 시간이 있다면 Tomcat과 WebLogic로 시도하고 다시보고 할 것입니다.
런타임시 추가되는 바이트 코드에 대해 걱정하지 않습니다. –
응용 프로그램 서버 특정 JAR이 CLASSPATH에있을 것으로 예상하고 해당 JAR을 찾지 못할 것입니다. – duffymo
+1. 또 다른 요점은 컴파일러 자체가 다른 클래스가되는 경향이 있다는 것입니다. Tomcat은 Jasper 컴파일러를 사용합니다. Jasper 컴파일러는 다른 서블릿/JSP 컨테이너와 다를 필요가 없습니다. 주의 : WebLogic은 weblogic.appc 클래스를 사용하여 컴파일 프로세스의 플래그를 지정합니다. –