0

我有一个在 Tomcat 6 中运行良好的 web 应用程序。假设它在server:8282/MyApplication. 我有一个看起来像这样的上下文 xml:

<Context crossContext="true"
         debug="5"
         docBase="MyApplication"
         path="MyApplication"
         reloadable="true">

在我的应用程序中,我的链接看起来像

server:8282/MyApplication/myAction.do?params=blah

当我将它切换到 Tomcat 7 时,它似乎将链接更改为:

server8282/myAction.do?params=blah

我没有更改应用程序中的任何内容,这两个地方的代码都是相同的。是否有一些全局设置我可以更改以恢复“MyApplication”?

编辑:例如,生成链接的代码是:

<a href="<%=request.getContextPath() %>/myAction.do?params=blah">do the blah</a>
4

1 回答 1

1

似乎您的部署过程有问题,并且由于某种原因,Tomcat 试图在服务器的根目录上为您的应用程序提供服务,因为您${pageContext.request.contextPath}返回的是空的。

由于我不确定您的确切部署要求,请尝试以下过程之一。为了确保避免配置冲突,请在全新的 Tomcat 7 安装上执行此操作:

  1. 如果您有一个MyApplication.war文件,只需将其放在<CATALINA_HOME>\webapps,不要使用任何上下文文件(请注意 war 文件中的上下文文件,即/META-INF/context.xml
  2. 如果您有一个展开的应用程序,请在其中创建一个文件夹并将应用程序内容MyApplication放在webapps那里(同样,否context.xml)。

如果您确实需要将您的应用程序保留在以下范围之外webapps

  1. 在里面添加一个新Context元素:<CATALINA_HOME>\conf\server.xml<Host>

    <Context path="/MyApplication"
             docBase="/absolute/physical/path/to/MyApplication" 
             reloadable="true"
             crossContext="true">
    
  2. 或者创建一个包含上述内容的MyApplication.xml文件。<CATALINA_HOME>\Catalina\localhost

有关详细信息,请参阅上下文容器文档

于 2013-02-16T01:20:19.380 回答