提问



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


http://localhost:8080/MyDynamicWebApp


现在我想将访问URL更改为


http://localhost:8080/app


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


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


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

最佳参考


我相信你现在已经继续前进,但我还以为我会回答。


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


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


希望这有助于某人。





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



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

  2. 将上下文根更改为app。




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

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

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




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






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



  http://localhost:8080/app/



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


http://www.example.com/app/ [15]


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

其它参考1


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


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

其它参考2


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


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


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


希望这可以帮助。

其它参考3


我尝试了Russ Bateman在帖子中提出的解决方案


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


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


参考文献[16]


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


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

其它参考5


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


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

其它参考6


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


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


一些截图:




[17] [18] [19]

其它参考7


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

其它参考8


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


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


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

其它参考9


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


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

其它参考10


如果使用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以查看效果。我想这个练习在现实生活中有意义但有效。