在旧版Java Webapp中切换web.xml文件

时间:2017-10-26 17:21:30

标签: java maven tomcat servlets web.xml

我正在继承遗留代码库的过程中,没有人真正介绍过处理不同环境的理智方式,而不是将文件复制到源代码树中。"我试图在不破坏一切的情况下重新引入一些理智。

前端webapp的web.xml(在Tomcat 6.x上使用Spring MVC 3.x)包含一堆代理不同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

那就是:每个环境&#34;文件夹包含src/main/webapp中通常包含的替代版本。然后,我使用Maven配置文件插入这些文件夹,默认情况下生产一个文件夹。

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

1 个答案:

答案 0 :(得分:1)

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

您可以拥有开发和生产的配置文件,它将定义此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