【问题标题】:Precompiling JSPs: Is that server specific?预编译 JSP:是特定于服务器的吗?
【发布时间】:2011-03-21 12:28:51
【问题描述】:

由于 JSP 遵循标准 API,我可以在我的项目中预编译它们,然后将结果部署到任何服务器上吗?

具体来说,我使用的是 Tomcat、JBoss 和 WebSphere。

【问题讨论】:

    标签: java jsp platform-agnostic precompiling


    【解决方案1】:

    由于应用服务器之间的 servlet/JSP 引擎不同,因此可能会添加不可移植的字节码。

    我必须写一个测试来确认它。如果我有时间,我会尝试使用 Tomcat 和 WebLogic 并报告。

    【讨论】:

    • 如果它期望应用服务器特定的 JAR 位于 CLASSPATH 中并且找不到它们,那么您将是。
    【解决方案2】:

    不,不是真的。如果您查看由 JSP 编译器创建的 java 源代码,您会发现它扩展了容器专有的基类。例如,JBoss 4 的 servlet 容器生成扩展 org.apache.jasper.runtime.HttpJspBase 的 JSP 类,这是 Tomcat 和 JBossWeb 特有的。

    因此您可能能够在不同的基于 tomcat 的服务器之间重用预编译的 JSP,但即便如此它也可能无法工作。

    【讨论】:

    • +1。另一点是编译器本身往往是一个完全不同的类 - Tomcat 使用 Jasper 编译器,而其他 servlet/JSP 容器则不必如此。注意:WebLogic 使用 weblogic.appc 类来标记编译过程。
    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多