gpt4 book ai didi

java - 在遗留 Java webapp 中的 web.xml 文件之间切换

转载 作者:行者123 更新时间:2023-11-28 22:48:53 26 4
gpt4 key购买 nike

我正在继承遗留代码库,除了“将文件复制到源代码树中”之外,没有人真正引入过处理不同环境的合理方法。我试图在不破坏一切的情况下重新引入一些理智。

前端 webapp(在 Tomcat 6.x 上使用 Spring MVC 3.x)的 web.xml 包含一堆代理到不同 URL 的 servlet:

<servlet>
<servlet-name>FooProxy</servlet-name>
<servlet-class>org.mortbay.servlet.ProxyServlet$Transparent</servlet-class>
<init-param>
<param-name>ProxyTo</param-name>
<param-value>http://example.com/foo/</param-value>
</init-param>
</servlet>

对于本地开发,这必须替换为代理到某种开发服务器的 servlet:

<servlet>
<servlet-name>FooProxy</servlet-name>
<servlet-class>org.mortbay.servlet.ProxyServlet$Transparent</servlet-class>
<init-param>
<param-name>ProxyTo</param-name>
<param-value>http://localhost:8080/foo/</param-value>
</init-param>
</servlet>

实现此目标的最佳方法是什么:

  • 很容易获得与 maven 构建在接触任何东西之前产生的相同输出
  • 当使用类似 mvn tomcat6:run
  • 的东西时,应用程序将使用开发配置启动

我目前的想法是将 web.xml 的版本放入非标准源文件夹中,例如:

`--envs
|
|--prod
| |
| `--webapp
| |
| `--web.xml // the original ("production") configuration
|
`--dev
|
`--webapp
|
`--web.xml // the development configuration

也就是说:每个“环境”文件夹都包含通常在 src/main/webapp 中的替代版本。然后,我将使用 Maven 配置文件插入这些文件夹,生产文件夹在默认情况下处于 Activity 状态。

我什至不知道如何配置该文件夹的位置,因为 Maven 文档有时很糟糕。我所知道的是 src/main/webapp 是在某处 定义的约定。我也不知道 tomcat6 插件是否会选择不同的 webapp 文件夹,是否可以配置更多文件夹以及是否可以正常工作。 (理想情况下,我想将许多文件保留在 webapp 下,这些文件在默认文件夹中的环境之间保持相同,并且只是将其与环境文件夹合并。)

最佳答案

实现您的要求的更好方法是使用 maven 配置文件。

你可以有 dev 和 production 的配置文件,这将定义这个 ProxyURL。

您可以根据环境使用配置文件

进一步阅读:

  1. > http://maven.apache.org/guides/introduction/introduction-to-profiles.html
  2. > https://maven.apache.org/guides/mini/guide-building-for-different-environments.html

关于java - 在遗留 Java webapp 中的 web.xml 文件之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com