我有一个在 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>
最佳答案
似乎您的部署过程出了点问题,出于某种原因,Tomcat 正在尝试在服务器的根目录下为您的应用程序提供服务,因此您的 ${pageContext.request.contextPath}
返回是空的。
由于我不确定您的确切部署要求,请尝试以下过程之一。为了确保并避免配置冲突,请在全新的 Tomcat 7 安装上执行此操作:
- 如果你有
MyApplication.war
文件只需将其放在<CATALINA_HOME>\webapps
, 不要使用任何上下文文件(注意 war 文件中的上下文文件,即/META-INF/context.xml
) - 如果您有分解的应用程序,请创建一个文件夹
MyApplication
里面webapps
并将应用程序内容放在那里(同样,没有context.xml
)。
如果您真的需要将您的应用程序保留在webapps
之外:
添加一个新的
Context
元素到<CATALINA_HOME>\conf\server.xml
里面<Host>
:<Context path="/MyApplication" docBase="/absolute/physical/path/to/MyApplication" reloadable="true" crossContext="true">
- 或者创建一个
MyApplication.xml
文件在<CATALINA_HOME>\Catalina\localhost
具有上述内容。
有关更多信息,请参阅 The Context Container documentation .
关于xml - Tomcat 6 到 Tomcat 7 导致上下文路径停止协作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905388/