我有一个可在Tomcat 6中流畅运行的webapp。假设它正在上运行server:8282/MyApplication。我有一个上下文XML,看起来像这样:
server:8282/MyApplication
<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}的返回的是空的。
${pageContext.request.contextPath}
由于我不确定您的确切部署要求,请尝试以下过程之一。为了确保避免配置冲突,请在全新的Tomcat 7安装上执行此操作:
MyApplication.war
<CATALINA_HOME>\webapps
/META-INF/context.xml
MyApplication
webapps
context.xml
如果您确实需要将应用程序保留在以下范围之外webapps:
Context在<CATALINA_HOME>\conf\server.xml里面添加一个新元素<Host>:
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使用上述内容创建一个文件。
MyApplication.xml
<CATALINA_HOME>\Catalina\localhost
有关更多信息,请参阅上下文容器文档。