我有一个Tomcat 7项目,它在我的Eclipse集成测试服务器上工作就像一个魅力,但无法在生产服务器上启动.
它之前也曾用于生产,但我不得不添加CORS支持,这在某种程度上使它失败了.
要添加CORS支持,我将其添加到我的pom.xml中
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>8.0.22</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这到我的web.xml
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
如果我再次删除这些行,它可以在生产服务器上运行,但CORS不起作用.
ClassNotFoundException当我尝试启动应用程序时,服务器抛出一个奇怪的东西,因为该类显然存在于.war文件中.
catalina日志声称一些.jar文件无法验证,因为"jar not loaded"..jars都在.war中,所以我不明白它失败的原因.
日志输出:
卡塔利娜日志:
May 19, 2015 9:10:29 AM org.apache.catalina.util.LifecycleBase stop
INFO: The stop() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/APIMR]] after stop() had already been called. The second call will be ignored.
May 19, 2015 9:10:29 AM org.apache.catalina.startup.HostConfig deleteRedeployResources
INFO: Undeploying context [/APIMR]
May 19, 2015 9:10:36 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /var/lib/tomcat/webapps/APIMR.war
May 19, 2015 9:10:37 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/share/tomcat/webapps/APIMR/WEB-INF/lib/tomcat-el-api-8.0.22.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
May 19, 2015 9:10:37 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/share/tomcat/webapps/APIMR/WEB-INF/lib/tomcat-servlet-api-8.0.22.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
May 19, 2015 9:10:38 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
May 19, 2015 9:10:38 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/APIMR] startup failed due to previous errors
Run Code Online (Sandbox Code Playgroud)
localhost日志:
May 19, 2015 8:22:11 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
May 19, 2015 8:22:13 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
May 19, 2015 8:22:13 AM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
May 19, 2015 8:22:13 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@d45f6a5')
May 19, 2015 9:10:05 AM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter CorsFilter
java.lang.ClassNotFoundException: org.apache.catalina.filters.CorsFilter
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
<snip>
May 19, 2015 9:10:38 AM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter CorsFilter
java.lang.ClassNotFoundException: org.apache.catalina.filters.CorsFilter
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
<snip>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Ste*_*fan 11
服务器将拒绝已经属于服务器运行时的jar(tomcat - **.jar,servlet*.jar,...).请尝试使用此CORS过滤器:http://mvnrepository.com/artifact/com.thetransactioncompany/cors-filter
的pom.xml
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
web.xml中
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12919 次 |
| 最近记录: |