我正在升级一个旧的网络应用程序(Tomcat 5 和 JSF 1)。我对Tomcat很陌生。
进入应用程序的 URL 都是这样的:"http://localhost:8181/app/esp/..."
但是,目前我可以通过应用程序获取请求的唯一方法是使用这样的 URL "http://localhost:8181/esp/esp/..."
:.
那么,我需要如何以及在哪里配置这个“/app”?(请记住,这在以前的版本中运行良好)。
我当前的环境是 Eclipse Kepler、Tomcat 7 和 JSF 2。Tomcat 从 Eclipse 启动正常,将显示一个带有“作为服务器运行”的 html 页面,例如:"http://localhost:8181/esp/esp/logout.html"
但是此页面有一个链接,"http://localhost:8181/app/esp/main"
该链接会导致消息“HTTP 状态 404 - /app/esp/main - 请求的资源不可用”。如果我用“esp”覆盖“app”,则处理请求。
我的 web.xml(现在已经精简)是这样的:
<?xml version="1.0" encoding="UTF-8"?>
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> ESP
<servlet>
<display-name>ESPServlet</display-name>
<servlet-name>ESPServlet</servlet-name>
<servlet-class>ch.eds.esp.controller.ESPServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ESPServlet</servlet-name>
<url-pattern>/esp/main/*</url-pattern>
</servlet-mapping>
Server.xml 在 Host 中定义了一个 Context,如下所示:
<Host appBase="webapps" debug="0" name="localhost" unpackWARs="true">
<Context reloadable="true" path="/app" />
</Host>
所以,长话短说,像“.../ esp /esp/mypage...”这样的 URL 有效,而像“.../ app /esp/mypage...”这样的 URL 无效吨。第二种形式是它需要工作的方式。
但为什么?如何?
按照下面 David99World 的建议,我尝试更改这些内容。在 Eclipse 中,我将“Web 项目设置/上下文根”从“esp”更改为“app”。尝试从 Eclipse“在服务器上运行”时,这没有产生任何变化。
我尝试将 WAR 文件从我的项目中导出(使用“导出...”)到 esp.war 或 app.war。将它们放入 /webapps 并清除以前的内容并重新启动 Tomcat。
如果我使用 esp.war,那么通常会发生 404。
如果我使用 app.war,我有一个文件夹结构 /webapps/app/esp 等。请求"http://localhost:8181/app/esp/main"
似乎给出了一个有趣的结果。它首先重定向到"http://localhost:8181/app/esp/login.jsp"
然后导致异常“bean exceptionHeaderBean 在范围内找不到”。
所以,一些好的进展(我会去找那个豆子)。但是如何从 Eclipse 内部获得相同的结果呢?我不想继续输出战争来做每一个小的增量测试。
啊! 您需要修改上下文根(如上所述) -然后您需要(在 Eclipse 的服务器选项卡上)“发布到服务器”。仅仅停止和启动是不够的。