一尘不染

Tomcat 6到Tomcat 7导致上下文路径停止协作

jsp

我有一个可在Tomcat
6中流畅运行的webapp。假设它正在上运行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>

阅读 225

收藏
2020-06-10

共1个答案

一尘不染

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

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

  1. 如果您只将MyApplication.war文件放在<CATALINA_HOME>\webapps,请不要使用任何上下文文件(请注意war文件中的上下文文件,即/META-INF/context.xml
  2. 如果您有一个爆炸的应用程序,请在其中创建一个文件夹MyApplicationwebapps然后将应用程序内容放在那里(再次,否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使用上述内容创建一个文件。

有关更多信息,请参阅上下文容器文档

2020-06-10