java - 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
解决方案
推荐阅读
- html - 为什么这个 SVG 被裁剪而不是按比例缩小(仅在 React 中)
- php - 为什么我的所有评论都显示在所有帖子上?WordPress
- docker - 在 Docker 容器中添加用户,运行 Jenkins 作业时 UID 不匹配
- sql - 雪花 - 计算逗号分隔列表中的不同值
- python - 如何在与 API Gateway 集成的 AWS Lambda python 中执行 302 重定向?
- kubernetes - calico-node pod 被杀死
- r - 如何使用 R 在数据中应用夏令时转换?
- vim - 在 ctags 中,如何为降价标题添加唯一名称?
- javascript - 我的计算器功能不允许小数
- git - 摆脱提交的文件并将两个提交推到 HEAD 后面