2013-02-16 75 views
0

我有一个在Tomcat 6中游泳的web应用程序。假设它运行在server:8282/MyApplication上。我有一个上下文XML,看起来像这样:Tomcat 6到Tomcat 7会导致上下文路径停止合作

<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> 
+0

向我们展示生成该链接的代码。 – 2013-02-16 00:10:51

+0

添加了创建链接的jsp – corsiKa 2013-02-16 00:20:44

回答

1

好像事情是不对您的部署过程中,由于某种原因Tomcat的正试图在根目录,以满足您的应用程序的服务器,因为你的${pageContext.request.contextPath}返回空。

由于我不确定您的确切部署要求,请尝试以下过程之一。只是可以肯定,避免配置冲突,做一个全新的Tomcat 7的安装:

  1. 如果你有一个MyApplication.war文件只是砸在<CATALINA_HOME>\webapps,不使用任何上下文文件(经上下文的器皿内的文件战争文件,即/META-INF/context.xml
  2. 如果您有爆炸的应用程序,请在webapps之内创建一个文件夹MyApplication并在其中放置应用程序内容(再次,没有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. <CATALINA_HOME>\Catalina\localhost或者创建一个MyApplication.xml文件,上面提到的内容。

如需进一步信息请参考The Context Container documentation

+0

嗨安东尼 - 我在context.xml中有一个资源(tomcat托管的SQL连接),这就是为什么文件首先存在。有没有更好的地方,所以我可以摆脱context.xml? – corsiKa 2013-02-19 16:14:55

+0

因为Tomcat不支持[@DataSourceDefinition](http://docs.oracle.com/javaee/6/api/javax/annotation/sql/DataSourceDefinition.html),所以'Context'仍然是一条路。但是,通过将''标记移动到' \ conf \ server.xml' 并在'中声明一个'', \的conf \ context.xml'。这将创建一个全局数据源(可由所有应用程序访问)。看看我以前的答案之一更多详细信息:http://stackoverflow.com/questions/5997122 – 2013-02-20 00:21:47

+0

这是非常好的。我已经添加了一个临时措施,使用一个愚蠢的'AppConstants.CONTEXT_PATH'和一个'public static final String CONTEXT_PATH =“/ MyApplication”;'作为权宜之计。我更喜欢更强大的功能,因为这是一些应用程序中的问题。谢谢! – corsiKa 2013-02-20 01:12:08