2014-03-25 348 views
9

我在webapp中使用org.apache.catalina.filters.CorsFilter。所以我指定的Maven的依赖apache tomcat catalina作为CORS过滤器的maven依赖关系

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-catalina</artifactId> 
    <version>7.0.50</version> 
</dependency> 

现在,如果我说的范围“提供”或“运行”服务器无法启动,因为

java.lang.ClassNotFoundException: org.apache.catalina.filters.CorsFilter 

该类不在可用来自jbossews/lib的卡塔利娜瓶是7.0.40

在openshift上“升级”tomcat很容易吗?或者如果有人可以提出解决方案,非常感谢。

非常感谢,

+0

我已经开始使用来自com.thetransactioncompany的CORS过滤器并服务于我的目的。但我仍然想知道上述的解决方案。 – epsilonpsi

回答

6

这为我工作:

 <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-catalina</artifactId> 
      <version>7.0.42</version> 
      <scope>provided</scope> 
     </dependency> 

试图7.0.50还曾。你能仔细检查一下是否存在竞争的jar文件版本?也许有一个老版本没有实际上被JVM使用的类。在Linux下,“ls -l/proc/$ CATALINA_PID/fd”可能显示正在使用哪个jar文件。

此外,请确保在最新版本的Tomcat服务器上运行此操作。

+3

我在一个普通的Web应用程序中使用Tomcat 7.0.37来到这里,然而上面剪掉的东西并不适合我。问题是**你至少需要Tomcat 7.0.41才能使CORS过滤器可用**,正如你可以在http://tomcat.apache.org/oldnews-2013.html的7.0.41更新日志中看到的那样 – user3001

0

您可以将jar添加到您的存储库,并修改.openshift /配置/ catalina.properties为了让Tomcat看看吧:

shared.loader=${catalina.home}/../app-root/runtime/repo/_your_jar_folder_ 

您还可以使用common.loader - 查找tomcat的裁判对区别。