如何在Eclipse中更改动态Web项目的上下文根?

时间:2010-03-13 06:07:47

标签: eclipse java-ee applicationcontext contextroot

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

http://localhost:8080/MyDynamicWebApp

现在我想将访问网址更改为

http://localhost:8080/app

我从项目“属性| Web项目设置|上下文根”中更改了上下文根。

但它不起作用。 Web应用程序仍具有之前的访问URL。我已经在Tomcat上重新部署了应用程序,重新启动了Tomcat并完成了应该完成的所有工作,但访问URL与之前的相同。

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

14 个答案:

答案 0 :(得分:322)

我相信你现在已经开始了,但我想我还是会回答。

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

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

希望这有助于某人。


不确定这是否是正确的礼仪 - 我正在编辑这个答案,为Eclipse Indigo提供准确的步骤。

  1. 在项目的 属性 中,选择 网络项目设置

  2. 上下文根 更改为 app

    screen shot of Eclipse project properties Web Project Settings

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

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

  5. 在您要使用的服务器上,按上下文单击以选择“清除...”。

    enter image description here

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

    Screenshot of dialog asking to update server configuration to match the changed context root

  7. 现在,您可以使用新的“应用”网址运行您的应用,例如:

      

    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/

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

答案 1 :(得分:31)

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

如果您有兴趣,还有另一种选择:在Servers视图中选择Tomcat服务器。双击该服务器(或在上下文菜单中选择“打开”)会显示一个多页面编辑器,其中有一个模块页面。在这里,您可以更改模块的根上下文(在此页面上称为Path)。

答案 2 :(得分:24)

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

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

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

希望这有帮助。

答案 3 :(得分:17)

我尝试了Russ Bateman在帖子

中提出的解决方案

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

但Didnt为我工作,因为我需要一个* .war文件,它可以保存配置,而不是我本地机器上的服务器的个别实例。

Reference

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

<?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>

答案 4 :(得分:7)

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

如果在&#34; Servers&#34;中选择Tomcat,则可以通过按F3进入Web模块编辑对话框。查看或双击它。

一些截图:

答案 5 :(得分: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应用程序上下文路径将会更改。

答案 6 :(得分:6)

我知道答案已经被接受了。但是,万一使用Maven的人想要实现同样的目的,只需将maven build 中的 finalName 设置为您想要提供的任何名称并做一个maven - &gt ;更新项目

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>

答案 7 :(得分:4)

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

答案 8 :(得分:2)

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

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

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

答案 9 :(得分:2)

我只是想补充一下,如果您根本不想在根上下文中使用应用程序名称,则只需在Eclipse-> Web Project Settings中输入“ /”(不带引号,只需使用正斜杠)即可。 ->上下文根条目

这将仅将Webapp部署到http://localhost:8080/

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

永远带我拼凑一下……所以即使这篇文章已有8年历史了,但希望这对您有所帮助!

答案 10 :(得分:0)

在java项目中,打开.settings文件夹。找到名为“org.eclipse.wst.common.component”的文件。更改标记&lt; wb-module deploy-name =“NEW_NAME”&gt;

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

答案 11 :(得分: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以查看效果。我想这个练习在现实生活中有意义但有效。

答案 12 :(得分: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>

答案 13 :(得分:0)

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

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

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