资讯专栏INFORMATION COLUMN

Tomcat 上的项目参数传递问题

csRyan / 3313人阅读

摘要:于是稍微研究了一下,找到了两种方式,来向项目传递参数。但是还存在一个问题,就是使用打包的时候,也会报错,仍然是找不到的值,这时候我们也可以使用打包时来传递参数,命令是。

1. 修改 Tomcat 中的 catalina.sh 文件

部署在 Tomcat 上面的 Spring Boot 项目,在某些情况下,我们可能会修改配置文件中的参数,这样应该怎么做呢?

传统的方式是直接在本地修改,然后打包部署,但是这种方式太麻烦了,要是我只是修改了很小的一个参数,都要重新打包,得不偿失。

于是稍微研究了一下,找到了两种方式,来向项目传递参数。

第一种方式就是修改 Tomcat 中的 catalina.sh 这个文件,例如我在 Spring Boot 项目的配置文件中自定义了一个配置,如下:

#application.yml 中的配置
project:
  args: ${info}

然后修改 Tomcat 下面的 bin/catalina.sh 文件,添加一个 JAVA_OPTS 属性,指定 info 的值:

需要注意的是,如果指定的是一个包含了空格的字符串,要用单引号包围,例如上面的 -Dinfo=""I am roseduan""

这种方式出现的问题:

但是,这种传递参数的方式是不太方便的,举个例子:在本地环境,启动项目的时候,该怎么去设置这个 info 的值呢?如果不指定肯定是要报错的。只不过我也找到了一种方式,在 IntelliJ IDEA 中,我们可以在 Run/Debug Configuration 中设置参数:

这样就能够在本地启动启动项目了。

但是还存在一个问题,就是使用 maven 打包的时候,也会报错,仍然是找不到 info 的值,这时候我们也可以使用mvn 打包时来传递参数,命令是:mvn package -Dinfo="I am roseduan" 。部署到 tomcat 中后,我们就可以使用修改 catalina.sh 中的内容来指定 info 的值。

2. 修改 Tomcat 中的 contxt.xml 文件

上面的这种方式,其实应该少量的配置是可以的,但是如果我们需要指定大量的配置,并且每个配置的内容都很长,这样就不是非常方便了,因为每次打包,都需要写很多参数。

所以第二种方式,修改 context.xml 文件,就十分的有优势了。我们不需要修改任务本地的配置,也不用配置任何参数,还是上面那个例子,假如 application.yml 中有如下配置:

#application.yml 中的配置
project:
  args: I am roseduan

并且这个配置是已经打包在了 Tomcat 上了,我们可以在 Tomcat 中的 conf/context.xml 中添加一些配置来修改这个参数的值:

name 是配置参数在 application.yml 文件中的路径,Type 对应的是 Java 类型,value 是具体的值。

这样的话,我们可以直接在这个文件中指定很多的值了,这样修改还有一个好处便是,不用重启 Tomcat ,配置即时生效 (只不过需要多试几次,或者稍微等一会)。

最后,需要注意一点:配置在 application.yml 中的自定义配置,最好是小写,或者使用 - 分隔,不然有可能 context.xml 中的配置不会生效。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35682.html

相关文章

  • Tomcat安装、配置、优化及负载均衡详解

    摘要:已成为目前开发企业应用的最佳容器选择之一。到安装目录文件中查找元素。 一、常见JavaWeb服务器 1、WebLogic:是BEA公司的产品、WebSphereAS:是IBM公司的产品、JBossAS:红帽公司的产品,可以自行了解 2、Tomcat服务器: Sun公司在推出的小型Servlet/JSP调试工具的基础上发展起来的一个优秀的Servlet容器,Tomca...

    caikeal 评论0 收藏0
  • 内网穿透与反向代理,浅谈前后台分离

    摘要:小米球可以实现内网穿透,他是怎么实现内网穿透,主要是通过域名的反向代理,这也就是所谓的反向代理。其实,反向代理没那么高大上,不要被它吓到了。域名解析也是同样的道理,利用了的反向代理。 导读 自去年毕业来到杭州,想想也该有大半年了。本身是软件工程的科班出身,在校时理论掌握的还可以。但应用到实践当中去,有些还是不大理解,于是,不停地向带我的人请教,毕竟,三人行,必有我师焉。经过一段时间理论...

    developerworks 评论0 收藏0
  • 内网穿透与反向代理,浅谈前后台分离

    摘要:小米球可以实现内网穿透,他是怎么实现内网穿透,主要是通过域名的反向代理,这也就是所谓的反向代理。其实,反向代理没那么高大上,不要被它吓到了。域名解析也是同样的道理,利用了的反向代理。 导读 自去年毕业来到杭州,想想也该有大半年了。本身是软件工程的科班出身,在校时理论掌握的还可以。但应用到实践当中去,有些还是不大理解,于是,不停地向带我的人请教,毕竟,三人行,必有我师焉。经过一段时间理论...

    wangxinarhat 评论0 收藏0
  • 内网穿透与反向代理,浅谈前后台分离

    摘要:小米球可以实现内网穿透,他是怎么实现内网穿透,主要是通过域名的反向代理,这也就是所谓的反向代理。其实,反向代理没那么高大上,不要被它吓到了。域名解析也是同样的道理,利用了的反向代理。 导读 自去年毕业来到杭州,想想也该有大半年了。本身是软件工程的科班出身,在校时理论掌握的还可以。但应用到实践当中去,有些还是不大理解,于是,不停地向带我的人请教,毕竟,三人行,必有我师焉。经过一段时间理论...

    Yumenokanata 评论0 收藏0
  • 内网穿透与反向代理,浅谈前后台分离

    摘要:小米球可以实现内网穿透,他是怎么实现内网穿透,主要是通过域名的反向代理,这也就是所谓的反向代理。其实,反向代理没那么高大上,不要被它吓到了。域名解析也是同样的道理,利用了的反向代理。 导读 自去年毕业来到杭州,想想也该有大半年了。本身是软件工程的科班出身,在校时理论掌握的还可以。但应用到实践当中去,有些还是不大理解,于是,不停地向带我的人请教,毕竟,三人行,必有我师焉。经过一段时间理论...

    yy736044583 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<