210

我在 Eclipse 中开发了一个动态 Web 项目。我可以使用以下 URL 通过我的浏览器访问该应用程序:

http://localhost:8080/MyDynamicWebApp

我想将访问 URL 更改为:

http://localhost:8080/app

为此,我从项目“属性 | Web 项目设置 | 上下文根”中更改了上下文根。但是,Web 应用程序仍然具有相同的访问 URL。我已经在Tomcat上重新部署了应用程序并重新启动了Tomcat,但是访问URL和之前一样。

我发现该文件没有server.xml附加WAR文件。在没有server.xml附加文件的情​​况下,Tomcat 是如何确定我的 Web 应用程序的上下文根/MyDynamicWebApp并允许我通过此上下文根 URL 访问应用程序的?

4

14 回答 14

341

我确定你现在已经继续前进了,但我想我还是会回答的。

其中一些答案提供了解决方法。实际上必须发生的是您清理并重新发布您的项目以“激活”新的 URI。这是通过右键单击您的服务器(在“服务器”视图中)并选择“清理”来完成的。然后你开始(或重新启动它)。这里的大多数其他答案都建议您做一些实际上可以做到这一点的事情。

正在更改的文件是workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.dat除非,也就是说,您的工作区中有多个服务器,在这种情况下,它将publishN.dat位于同一路径上。

希望这可以帮助某人。


不确定这是否是适当的礼仪——我正在编辑这个答案,以便为 Eclipse Indigo 提供确切的步骤。

  1. 在项目的Properties中,选择Web Project Settings

  2. 将上下文根更改为app

    Eclipse 项目属性 Web 项目设置的屏幕截图

  3. 选择“窗口”>“显示视图”>“服务器”

  4. 通过单击红色方框(“停止服务器”工具提示)或上下文单击服务器列表以选择“停止”来停止服务器。

  5. 在您要使用的服务器上,右键单击以选择“清理...”。

    在此处输入图像描述

  6. 在此确认对话框中单击确定。

    要求更新服务器配置以匹配更改的上下文根的对话框屏幕截图

现在您可以使用新的“app”URL 运行您的应用程序,例如:

http://localhost:8080/app/

在 Eclipse 之外,在您的生产服务器上执行此操作更加容易 --> 重命名 war 文件。将您的 Vaadin 应用程序导出为 WAR 文件(文件 > 导出 > Web > WAR 文件)。将 WAR 文件移动到 Web 服务器的 servlet 容器,例如 Tomcat。重命名您的 WAR 文件,在本例中为app.war。当您启动 servlet 容器时,大多数(如 Tomcat)都会自动部署应用程序,其中包括将 war 文件扩展至文件夹。在这种情况下,我们应该看到一个名为app的文件夹。你应该很高兴。测试您的网址。对于诸如 *example.com 之类的域,这将是:

http://www.example.com/app/

如果使用可视化插件,Vaadin 工具包程序员可能需要重建他们的小部件集。

于 2011-11-30T23:06:51.507 回答
33

在项目属性中更改上下文根后,您必须从 Tomcat 中删除您的 Web 应用程序(使用服务器上下文菜单上的添加和删除...),重新部署,然后重新添加您的应用程序并重新部署。它对我有用。

如果您感到震惊,您还有另一个选择:在 Servers 视图中选择 Tomcat 服务器。双击该服务器(或在上下文菜单中选择打开)会带来一个多页编辑器,其中有一个模块页面。您可以在此处更改模块的根上下文(在此页面上称为路径)。

于 2010-03-13T07:11:41.953 回答
24

如果您从 Eclipse 运行 Tomcat,它不会使用实际 Tomcat 安装中的配置。它使用它创建并存储在“服务器”项目下的 Tomcat 配置。如果您查看 Eclipse 工作区,您应该会看到一个名为“Servers”的项目。展开那个“Servers”项目,你会遇到 server.xml。打开此文件并一直滚动到底部,您应该会看到如下内容:-

<Context docBase="abc" path="/abc" reloadable="true" source="org.eclipse.jst.jee.server:abc"/>

在这里,您可以将项目上下文路径更改为其他内容。

希望这可以帮助。

于 2010-05-17T21:13:53.103 回答
17

我在帖子中尝试了 Russ Bateman 建议的解决方案

http://localhost:8080/Myapphttp://localhost:8080/somepath/Myapp

但是没有为我工作,因为我需要一个 *.war 文件来保存配置,而不是我本地机器上的单个服务器实例。

参考

为了做到这一点,我需要将 jboss-web.xml 放在 WEB-INF

<?xml version="1.0" encoding="UTF-8"?>
 <!--
Copyright (c) 2008 Object Computing, Inc.
All rights reserved.
-->
<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

  <jboss-web>
  <context-root>somepath/Myapp</context-root>
  </jboss-web>
于 2012-08-30T16:31:44.423 回答
10

在 Eclipse Web 模块编辑对话框中将路径设置为空,使我能够在 URL 中没有任何路径组件(即 ROOT)的情况下访问项目

如果在“服务器”视图中选择 Tomcat,则可以通过按 F3 或双击它来访问 Web 模块编辑对话框。

一些截图:

于 2015-08-25T23:23:26.283 回答
6

我知道答案已经被接受了。但是,以防万一任何使用 Maven 的人想要实现相同的目标,只需将maven构建中的finalName设置为您想要提供的任何名称并执行 maven -> update project

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>
于 2014-10-15T19:53:25.333 回答
6

Apache tomcat 将项目上下文路径保存在 server.xml 路径中。对于 Eclipse 上的每个 Web 项目,都有一个标签,您可以从那里更改它。
假设在服务器上部署了两三个项目。对于每一个上下文路径都存储在 . 此标记位于在 Eclipse 上创建的 Server 内的 server.xml 文件中。

我在服务器的上下文根路径上有一个项目是:

<Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.jee.server:Test1"/>

此路径表示您的 Web 应用程序的上下文路径。通过更改此路径,您的 Web 应用程序上下文路径将更改。

于 2011-11-08T05:56:26.000 回答
4

如果项目是 maven,请更改 pom.xml 中的“finalName”并将项目更新为 Maven。这对我有用。

于 2016-04-19T09:06:05.127 回答
2

在 Glassfish 中,您还必须更改文件 WEB-INF/glassfish-web.xml

<glassfish-web-app>
    <context-root>/myapp</context-root>
</glassfish-web-app>

因此,当您单击“运行方式> 在服务器上运行”时,它将正确打开。

于 2013-11-26T16:14:32.600 回答
2

我只是想补充一点,如果您根本不希望您的应用程序名称出现在根上下文中,您只需在 Eclipse --> Web Project Settings --> 中输入“/”(没有引号,只是正斜杠)上下文根条目

这会将 webapp 部署到http://localhost:8080/

当然,这会导致您尝试在服务器上运行的其他 Web 应用出现问题,因此请注意这一点。

把我永远拼凑在一起......所以即使这篇文章已经 8 岁了,希望这仍然可以帮助某人!

于 2018-11-02T16:08:15.137 回答
0

在 java 项目中,打开 .settings 文件夹。在那里找到名为“org.eclipse.wst.common.component”的文件。更改标签 <wb-module deploy-name="NEW_NAME"> 。

此外,您可能想要更改项目属性中的上下文根

于 2011-10-28T19:30:14.053 回答
0

如果使用 eclipse 来部署你的应用程序。我们可以使用这个 Maven 插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-eclipse-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <wtpversion>2.0</wtpversion>
        <wtpContextName>newContextroot</wtpContextName>
    </configuration>
</plugin>

现在转到您的项目根文件夹并在该位置打开 cmd 提示符,键入以下命令:

mvn eclipse:eclipse -Dwtpversion=2.0

您可能需要重新启动 eclipse ,或者在服务器视图中删除服务器并创建 agian 以查看影响。我想知道这个练习在现实生活中是否有意义但有效。

于 2017-11-29T23:10:37.117 回答
0

如果使用maven java ee 7/8企业应用,需要编辑EAR项目的pom.xml

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.sample</groupId>
                        <artifactId>ProjectName-web</artifactId>
                        <contextRoot>/myproject</contextRoot>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>
于 2020-01-15T04:30:43.893 回答
0

我有一些替代资源...但是以编程方式将通过更改服务器中的server.xml文件.....

这就是现实世界项目的配置方式......在上下文中更改路径。

<Context docBase="projectName" path="/reachingPath" reloadable="true" source="org.eclipse.jst.jee.server:projectName"/></Host>
于 2021-06-16T15:41:48.217 回答