由于 JSP 遵循标准 API,我可以在我的项目中预编译它们,然后将结果部署到任何服务器上吗?
具体来说,我使用的是 Tomcat、JBoss 和 WebSphere。
由于 JSP 遵循标准 API,我可以在我的项目中预编译它们,然后将结果部署到任何服务器上吗?
具体来说,我使用的是 Tomcat、JBoss 和 WebSphere。
不,不是。如果您查看由 JSP 编译器创建的 java 源代码,您会发现它扩展了容器专有的基类。例如,JBoss 4 的 servlet 容器生成扩展的 JSP 类org.apache.jasper.runtime.HttpJspBase
,这是 Tomcat 和 JBossWeb 特定的。
因此,您可能能够在不同的基于 tomcat 的服务器之间重用预编译的 JSP,但即便如此,它也可能无法正常工作。
由于应用服务器之间的 servlet/JSP 引擎不同,因此可能会添加不可移植的字节码。
我必须写一个测试来确认它。如果我有时间,我会尝试使用 Tomcat 和 WebLogic 并报告回来。