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

我在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访问应用程序的?

325418 次浏览

在项目属性中更改上下文根后,您必须从Tomcat中删除您的web应用程序(使用Add and remove…在服务器的上下文菜单上),重新部署,然后重新添加应用程序并重新部署。这对我很管用。

如果您感到震惊,您还有另一种选择:在Servers视图中选择Tomcat服务器。双击该服务器(或在上下文菜单中选择Open)会出现一个多页编辑器,其中有一个Modules页面。在这里,您可以更改模块的根上下文(在此页上称为Path)。

如果从Eclipse运行Tomcat,它不会使用实际安装Tomcat时的配置。它使用它在“Servers”项目下创建和存储的Tomcat配置。如果查看Eclipse工作空间,应该会看到一个名为“Servers”的项目。展开“Servers”项目,您将看到server.xml。打开这个文件,一直滚动到底部,你应该看到这样的东西:-

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

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

希望这能有所帮助。

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

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

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

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

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

此路径表示web应用程序的上下文路径。 通过改变这个路径,你的web应用上下文路径也会改变

我知道你现在已经放下了,但我想我还是要回答。

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

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

希望这能帮助到一些人。


不确定这是否是适当的礼仪-我正在编辑这个答案,以给出Eclipse Indigo的确切步骤。

  1. 在项目的<强> < /强>属性中,选择Web项目设置

  2. 修改< >强上下文根< / >强< >强应用< / >强

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

  3. < p >选择< >强窗口比;Show View >服务器< / >强

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

  5. 在您想要使用的服务器上,上下文单击选择“Clean…”。

    enter image description here

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

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

现在你可以用新的"app"URL,例如:

http://localhost:8080/app/

在Eclipse之外,在您的生产服务器上执行此操作甚至更容易——>重命名war文件。导出您的Vaadin应用程序作为一个WAR文件(< >强文件比;出口比;网络比;WAR文件< / >强)。将WAR文件移动到web服务器的servlet容器中,例如Tomcat。重命名WAR文件,在本例中为< >强app.war < / >强。当您启动servlet容器时,大多数(如Tomcat)将自动部署应用程序,其中包括将war文件展开到一个文件夹。在本例中,我们应该看到一个名为< >强应用< / >强的文件夹。你应该可以出发了。测试你的URL。对于像*example.com"这样的域名;这就是:

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

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

我尝试了Russ Bateman提出的解决方案

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

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

参考< a href = " http://jboss.ociweb.com/wiki/JBossSupport/ExampleServlet " > < / >

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

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

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

因此,当你点击“以>的身份在服务器上运行”时,它将正确打开。

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

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

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

如果你在“Servers”视图中选择Tomcat,或者双击Tomcat,按F3就可以进入web模块编辑对话框。

一些截图:

 > .</a>
<a href= ></a>
<a href=< img src = " https://i.imgur.com/7szhGA2.png " alt = " " > < / p >

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

如果使用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,或者在服务器视图中删除服务器并重新创建以查看影响。我想知道这个练习在现实生活中是否有意义,但却很有效。

我只是想补充一点,如果你根本不想让你的应用程序名称在根上下文中,你只需在Eclipse—> Web项目设置—>上下文根条目中输入“/”(没有引号,只有正斜杠)

这将把web应用部署到http://localhost:8080/

当然,这将导致你试图在服务器上运行的其他web应用程序出现问题,所以要注意这一点。

我花了很长时间才把它拼凑起来…所以即使这篇文章已经8年了,希望它仍然能帮助到一些人!

如果使用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>

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

这是一个真实项目的配置方式....请根据上下文修改路径。

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