0

我正在升级一个旧的网络应用程序(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 的服务器选项卡上)“发布到服务器”。仅仅停止和启动是不够的。

4

1 回答 1

1

将构建的war文件名更改appesp,之后的第一个位置localhost:8080是部署的war应用程序。

于 2013-10-28T11:39:25.347 回答