首页 > 解决方案 > Tomcat 在 Java 7 级别编译 JSP。我可以在 WAR 文件中而不是在 Tomcat 配置中更改此设置吗?

问题描述

我有一个 Java Web 应用程序,打包为 WAR 文件,部署到 Tomcat 8.5.49 servlet 容器。我的应用程序中的 JSP 使用一些 Java 8 语法。默认情况下,Tomcat 8.5.49 在 Java 7 级别编译 JSP。这可以在 Tomcat 配置文件中被覆盖$CATALINA_BASE/conf/web.xml如此处所述)。

开箱即用,Tomcat 在它的下面有这个部分web.xml

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

init-param然后通过添加两个新的 scompilerSourceVM和来更改 Java 版本compilerTargetVM

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>compilerSourceVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    <init-param>
        <param-name>compilerTargetVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

我想找到一种方法来做同样的事情,但不接触 Tomcat 配置文件。我正在构建一个基于官方 Tomcat 镜像的 Docker 镜像,并希望尽可能少地对其进行更改,以使未来的升级不那么复杂。

有没有办法从我的 Web 应用程序中覆盖 JSP 编译的默认语言版本级别?例如,我可以在WAR 文件web.xml的子目录中的文件中执行某些操作吗?WEB-INF

标签: javatomcatconfiguration

解决方案


推荐阅读