【问题标题】:Deploying a WAR in Tomcat / Eclipse在 Tomcat / Eclipse 中部署 WAR
【发布时间】:2011-05-15 05:23:06
【问题描述】:

我在 Linux 下使用 Tomcat 6.0 和 Eclipse 3.0,并尝试在 Tomcat 中部署 WAR。问题是服务器由 Eclipse 管理,我部署了一些 Eclipse 项目。我尝试修改 server.xml 文件,然后通过 Eclipse 启动 Tomcat,但它不起作用:

无法在 localhost-config 的 /Servers/Tomcat v6.0 服务器上加载 Tomcat 服务器配置。配置可能已损坏或不完整。

我试图在 webapps 目录中提取战争,但 webapp 仍然无法访问。

部署战争的最佳做法是什么?

【问题讨论】:

    标签: eclipse tomcat deployment war


    【解决方案1】:

    如果您只有一个二进制 WAR(无源代码),则无法在 Eclipse 中安装它。这可能发生在正常开发工作流程之外的某些场景中。以下是变通解决方案:

    1. 启动另一个 Tomcat 实例(在 Eclipse 之外)。
    2. 修改tomcat-users.xml文件以启用管理员
    3. 转到http://localhost:8080/manager/html
    4. 向下滚动到 要部署的 WAR 文件
    5. 点击Choose File(在Select WAR file to upload旁边)并点击Deploy

    【讨论】:

      【解决方案2】:

      这是旧的,但它是谷歌搜索中的第一个答案。

      你可以导入war文件:

      Web 存档 (WAR) 文件是可移植的、打包的 Web 应用程序 您可以将其导入您的工作区。

      在导入 WAR 文件之前, 您应该首先确定 WAR 文件是否包含所需的 Java™ 源代码 文件。将 WAR 文件导入现有 Web 项目时,导入的 Web 部署描述符文件不会被 根据您对提示的响应,包含在导入的 WAR 文件中的那些 这是提供的。在任何一种情况下,这个动作都代表一个 合并两组部署描述符。

      导入 将 WAR 文件中的 Web 项目资源放入您的工作区,完成以下操作 步骤:

      1. 选择文件 > 导入 .
      2. 在 Import 对话框中,选择 WAR 文件并 然后单击下一步。
      3. 使用“浏览”按钮找到要导入的 WAR 文件。
      4. 该向导假定您要使用 与 WAR 文件同名。如果您接受此选择,该项目将 使用 WAR 文件指定的相同 servlet 版本创建,并且在 同一个位置。如果您想覆盖这些设置,您可以点击 New 并 在动态 Web 项目向导中指定您的新设置。
      5. 单击完成以填充 Web 项目。

      来源: http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.wst.webtools.doc.user%2Ftopics%2Ftwimpwar.html

      【讨论】:

      • 这是一个很好的答案,真的可以像这样运行 WAR,唯一的缺点是它似乎解压并保留了那个版本,你不能随便更改 WAR,每次更改时都需要重新导入。
      【解决方案3】:

      是的,在某种程度上,您可以在开发模式下部署战争。

      我也有同样的问题。

      我有一个 Eclipse webapp 项目,Eclipse 将其部署到 Eclipse 运行的 Tomcat 实例中,因此我可以热编辑该项目。

      这个 Web 项目需要使用另一个 webapp 发布的资源,该 webapp 必须在同一个 Tomcat 实例中运行。另一个webapp是别人完成的项目,所以已经是war形态了。

      我需要文件->将战争作为 Eclipse 项目导入,并让 Eclipse 将其部署到同一个 Eclipse 实例,以便在我的 webapp 也运行的同一个 Tomcat 实例中运行它。

      问题在于,有些战争以这种方式工作,而另一些则不然,而所有战争都在独立的 Tomcat(由 startup.sh 启动)中完美地工作。我不知道为什么。

      【讨论】:

        【解决方案4】:

        Tomcat 在开发和生产模式下的行为不同。当您在 Eclipse 中开发 webapp 时,没有理由在开发期间将应用程序的 WAR 文件部署为 WAR。

        只需转到“服务器”视图并添加一个新服务器(您应该已经这样做了,否则您将无法创建您的动态 Web 项目)。在服务器视图中,您应该看到您创建的服务器(本地主机上的 Tomcat 或类似的东西)只需右键单击它并转到“添加和删除”部分。在这里,您可以添加和删除您在 Eclipse 中创建的 Dynamic Web 项目。添加项目后,您只需单击服务器视图中的绿色开始按钮,您的应用程序就会在 localhost:8080/mycontext 中可用。

        当您完成应用程序的构建后,只需右键单击项目并转到菜单中的“导出”部分。您应该能够导出 WAR 文件。获得 WAR 文件后,您可以将其上传并部署到未绑定到以开发模式运行的 Eclipse 的 Tomcat 实例上。

        【讨论】:

        • 好的。所以我无法在开发模式下在 Tomcat 上部署 WAR。真可惜!
        • @lgu:也许你可以解释一下你想这样做的原因。
        • 因为我已经构建了一个应用程序,它提供了我的“eclipse 应用程序”使用的 JSON API。通过在不同服务器上运行应用程序遇到跨域异常,我无法使用 jsonp。解决方案是使用本地代理(nginx ...),但这有点矫枉过正IMO
        • 当您在 Eclipse 中以开发模式运行应用程序时,部署会在您“运行”应用程序时自动发生。部署只是测试或生产服务器需要做的事情。
        猜你喜欢
        • 2015-05-29
        • 1970-01-01
        • 2015-04-24
        • 1970-01-01
        • 2015-10-26
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多