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

Yat*_*oel 201 eclipse contextroot java-ee applicationcontext

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

http://localhost:8080/MyDynamicWebApp
Run Code Online (Sandbox Code Playgroud)

现在我想将访问URL更改为

http://localhost:8080/app
Run Code Online (Sandbox Code Playgroud)

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

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

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

Rus*_*man 328

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

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

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

希望这有助于某人.


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

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

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

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

  3. 选择Window> Show View> Servers.

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

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

    在此输入图像描述

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

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

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

workspace/.metadata/.plugins/org.eclipse.wst.server.core/publish/publish.dat

在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集.


Csa*_*a_H 31

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

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


lim*_*imc 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"/>
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助.


tos*_*hah 17

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

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

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

参考

为了做到这一点,我需要在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>
Run Code Online (Sandbox Code Playgroud)

  • 适用于JBoss WildFly 8.1.0 Final (4认同)

Ray*_*lha 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"/>
Run Code Online (Sandbox Code Playgroud)

此路径表示Web应用程序的上下文路径.通过更改此路径,您的Web应用程序上下文路径将发生变化.


小智 6

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

<build>
    <finalName><any-name></finalName>
    <plugins><provide-plugins-needed></plugins>
<build>
Run Code Online (Sandbox Code Playgroud)