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

问题描述 投票:196回答:12

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

http://localhost:8080/MyDynamicWebApp

现在我想将访问URL更改为

http://localhost:8080/app

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

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

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

eclipse java-ee applicationcontext contextroot
12个回答
324
投票

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

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

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

希望这有助于某人。


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

  1. 在项目的“属性”中,选择“Web项目设置”。
  2. 将Context root更改为app。
  3. 选择Window> Show View> Servers。
  4. 通过单击红色方框(“停止服务器”工具提示)或上下文单击服务器列表以选择“停止”来停止服务器。
  5. 在要使用的服务器上,单击上下文以选择“清除...”。
  6. 在此确认对话框中单击“确定”。

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

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工具包程序员可能需要重建他们的widget集。


2
投票

我只是想补充一点,如果您根本不想在根上下文中使用您的应用程序名称,那么只需在Eclipse中选择“/”(无引号,只是正斜杠) - > Web项目设置 - >上下文根条目

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

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

让我永远把它拼凑在一起...所以即使这篇文章是8岁,希望这仍然可以帮助别人!


0
投票

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

您还可以在项目属性中更改上下文根


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,或者在服务器视图中删除服务器并再次创建以查看效果。我想这个练习在现实生活中有意义但有效。


31
投票

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

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


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"/>

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

希望这可以帮助。


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>

7
投票

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

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

一些截图:


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
投票

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

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

4
投票

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


2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.