2010-03-13 164 views
182

我在Eclipse中开发了一个动态Web项目。 |网络工程设置如何在Eclipse中更改动态Web项目的上下文根?

http://localhost:8080/MyDynamicWebApp 

现在我想访问的网址改为

http://localhost:8080/app 

我从项目“属性改变了上下文根:现在,我可以使用下面的URL通过浏览器访问它|上下文根“。

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

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

回答

292

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

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

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

希望这有助于某人。


不知道这是否是正确的礼节 - 我正在编辑这个答案,给出Eclipse Indigo的确切步骤。

  1. 在您的项目的属性中,选择“Web项目设置”。

  2. 将“上下文根”更改为“应用程序”。

    screen shot of Eclipse project properties Web Project Settings

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

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

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

    enter image description here

  6. 单击此确认对话框确定。您的生产

    http://localhost:8080/app/

    这样做Eclipse之外,:

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

现在可以运行新的 “应用程序” 的网址,例如您的应用程序服务器,更容易 - >重命名WAR文件。将您的Vaadin应用程序导出为WAR文件(文件>导出> Web> WAR文件)。将WAR文件移动到Web服务器的servlet容器(如Tomcat)。将WAR文件重命名为“app.war”。当您启动servlet容器,大多数如Tomcat将自动部署应用程序,其中包括战争文件扩展到一个文件夹。在这种情况下,我们应该看到一个名为“应用程序”文件夹中。你应该很好走。测试你的网址。对于域,如“example.com”这将是:

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

Vaadin工具包,程序员可能需要重建如果使用Visual附加功能部件的设置。

+0

伟大的答案!您保存其他的答案我的生活OST在这里建议你做的事情,实际上做到这一点 – AndreaNobili 2012-12-04 12:26:00

+0

下面是这个答复的天才:我用Google搜索我的方法,这个页面,甚至没有读取标签(我建立一个ASP。 NET网站使用Visual Studio)。但解决方案无论如何工作! – Curt 2014-01-25 21:01:39

+0

我没有这样的选项和“Web项目设置” – TeodorKolev 2016-04-09 15:55:11

28

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

如果遇到了问题,您可以选择其他选择:在服务器视图中选择Tomcat服务器。双击该服务器(或者在上下文菜单中选择“打开”),会出现一个多页面编辑器,其中有一个模块页面。在这里,您可以更改模块的根上下文(在本页称为Path)。

+0

谢谢!这为我做了诡计。然而,它甚至可以在不改变项目属性中的上下文根的情况下工作。我在这里错过了什么吗? – Chris 2011-03-16 15:33:28

+0

这也用于在以前的Eclipse版本中为我工作,但在当前版本(Luna)中,只有Clean选项现在可以工作 – Griknok 2016-12-08 23:49:39

24

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

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

在这里,你可以更改为其他项目上下文路径。

希望这会有所帮助。

+0

我不确定您想要更改所有3个值。 Csaba_H的解决方案为我工作,只改变“路径”属性... – Chris 2011-03-16 15:29:24

+0

这一个没有为我工作 - 当你重新启动服务器时,该目录中的文件被覆盖。Csaba_H的第二版,Tomcat服务器下的模块选项卡,似乎是“正确”的方法。 – idarwin 2012-09-04 23:52:46

0

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

可能还需要更改上下文根在项目属性

+0

所有看起来不错的项目,它在eclipse中运行就好了。这是当我使用maven,它失去它的根上下文和以代替localhost /事件将其转换为一个war文件/它运行在localhost /打破我的所有链接 – JesseBoyd 2017-10-10 22:07:20

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应用上下文路径将会改变。

17

我尝试了解决方案拉斯贝特曼在后这里建议

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

但没有工作对我来说,我需要有一个可以容纳配置,而不是一个* .war文件我的本地服务器上的个别实例。

Reference

为了做到这一点,我需要的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> 
+0

这为我工作。 Environment = Eclipse + m2e + m2e-wtp +从Servers视图部署到JBoss。需要将主要Web项目部署为ROOT,而不需要Eclipse设置。我复制了Tosha的文件(上图),并将“ROOT”无引号作为上下文根值。完成并完成。谢谢,@Tosha! – 2013-04-23 19:21:09

+0

这可行,但我想知道为什么它忽略了项目属性中的设置? – Vedran 2013-05-03 11:38:53

+4

适用于JBoss WildFly 8.1.0最终版 – alexander 2015-02-24 17:54:13

1

GlassFish中还必须更改文件WEB-INF/GlassFish实现-web.xml中

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

所以,当你在单击“运行方式>在服务器上运行”它会正常打开。

5

我知道答案已被接受。但是,只是在使用Maven要达到相同的情况下,任何人,只是构建设置finalName在Maven你想给,做行家的任何名称 - >更新项目

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

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

如果您在“服务器“视图或双击它。

一些截图:

+0

对不起,你能提供更多细节吗? – smonff 2015-09-08 13:30:41

+1

当然,我编辑了原始答案。 – 2015-09-08 16:15:45

+0

哦,谢谢!在GNU/Linux上的Eclipse Luna上,需要'/'。 – smonff 2015-09-08 17:10:28

3

如果该项目是行家,在pom.xml中更改 “finalName” 和更新项目作为Maven.This为我工作。

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> 

现在去你的项目的根文件夹,并在该位置 类型打开命令提示符下面的命令:

MVN日食:日食-Dwtpversion = 2.0

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

相关问题