2014-03-25 52 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的裁判對區別。