【问题标题】:Deploy multiple webapps with application specific config in Tomcat from Eclipse从 Eclipse 在 Tomcat 中使用特定于应用程序的配置部署多个 webapp
【发布时间】:2014-11-24 20:17:06
【问题描述】:

我在 Eclipse 中有一个 Tomcat 7 服务器,其中包含两个 webapps ab 并且需要找出如何拥有适用于 Eclipse 的 tomcat 的应用程序特定配置文件。

现在我希望每个 webapp 都有一个自定义配置文件,如下所述:Apache Tomcat: multiple webapps。所以我创建了一个<TomcatDirectory>/conf/Catalina/localhost 文件夹并将a.xmlb.xml 放在那里。当我从命令行运行 Tomcat 时,这工作正常。

但是当我在 Eclipse 中运行 Tomcat 时,我应该将应用程序特定的配置文件 a.xmlb.xml 放在哪里?

我已经尝试将 Eclipse 中的文件放在 <EclipseWorkspace>\Servers\<ServerName>\conf\Catalina\localhost\ 中,但 WTP 不会将此文件复制到 <EclipseWorkspace>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost

【问题讨论】:

  • 为什么不把这个文件放到合适的webapp项目中呢?
  • 文件位于服务器中,因为它们包含服务器特定的配置,如数据库连接和密码。 (因为这个配置因服务器而异,所以不能放在应用程序中)

标签: java eclipse tomcat eclipse-wtp


【解决方案1】:

把它们留在<TomcatDirectory>/conf/Catalina/localhost

服务器 > 打开 > 服务器位置

更改自: 使用工作区元数据 到: 使用 Tomcat 安装

现在将使用来自<TomcatDirectory>/conf/Catalina/localhosta.xmlb.xml

【讨论】:

  • 感谢您的回答!它工作得很好,但我有一个问题,重新部署它会将我的配置文件重置为默认文件。
  • 我的猜测是,在重新部署时,它会从 \Servers\ 获取文件(context.xml 等)。更新它们。
  • context.xml 只包含<Context><WatchedResource>WEB-INF/web.xml</WatchedResource></Context>。但它用<Context docBase="<docBasePath>" path="/a"> 替换了我的两个配置文件,因此单个webapps 的上下文。如果我不在 Eclipse 中添加 webapps,它只会在发布时删除我的配置。
  • 您在 \Servers\ 中有什么 context.xml?当您在 Eclipse 上启动服务器时,它将获取配置文件 \Servers\ 并将它们写入 /conf
【解决方案2】:

如果是出于开发目的,您可以在上下文文件的“docBase”属性中指定一个文件夹,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Context crossContext="true" docBase="C:/devel/MyApp/web/target/MyApp-web" path="/MyApp" reloadable="true">
    <Resource
        ... />
</Context>

通过将这些上下文文件直接添加到 /conf/Catalina/localhost 中,一切都已配置好并且应该可以按照您的意愿运行,但是每次您想要清理和构建项目时都必须停止 tomcat 服务器。

【讨论】:

    【解决方案3】:

    您正在寻找的是为两个不同的应用程序创建 context.xml 文件。在 Web 应用程序的(a 和 b)META-INF 文件夹下创建 context.xml 文件,您应该能够使用它们自己的应用程序运行这两个应用程序context.xml 文件。在 Eclipse 中,您应该能够为您各自的 Web 应用程序创建与 WEB-INF 目录并行的 META-INF 文件夹

    【讨论】:

    • 上下文文件不能放在应用程序中,因为它们对于所有服务器都不相同——这就是它们位于服务器中的原因。
    • 我认为 David 提到了特定的服务器、Tomcat,并且 context.xml 在 Tomcat 中运行良好。
    • 位于 /conf/Catalina/localhost 中的应用程序特定配置文件(带有描述此技术的问题/答案的链接)——我不知道如何更好地表达它——做你有想法吗? - 顺便提一句。大卫是我的大学,我建议他在堆栈溢出中发布他的问题
    猜你喜欢
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2012-08-12
    相关资源
    最近更新 更多