我有许多CXF需要部署(13次战争),有时其中一次会给我错误:
java.lang.NoClassDefFoundError: org/apache/cxf/transport/servlet/BaseUrlHelper
org.apache.cxf.transport.servlet.ServletController.getBaseURL(ServletController.java:74)
org.apache.cxf.transport.servlet.ServletController.updateDestination(ServletController.java:83)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:196)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:290)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:209)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:265)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52包含该类的jar位于每个lib应用程序中:cxf-rt-transports-http-3.0.2.jar。
当我重新加载没有由tomcat管理器工作的服务器时,我已经没有问题了,当我重新启动服务器时(在另一场战争中),它会再次出现。缺少的类总是一样的。
我使用的是Cxf版本3.0.2。
发布于 2015-09-03 14:30:59
似乎是进程打开的文件数量出现了问题。tomcat的类加载程序打开了太多的文件,因为每个应用程序/war在他的汇辑WEB/lib中都有许多库。
当ClassLoader由于这个限制而无法打开java类文件时,它不会抛出任何异常:它只是不加载类.因此,当我调用我的应用程序时,调用的第一个类是BaseUrlHelper.
我已经在tomcat/lib中放置了一些库(我已经将它们从汇辑WEB/lib中删除),应用程序运行良好。如果您在unix系统中有管理权限,我看到命令ulimit也有问题。
您也可以将您的应用程序放在更多的tomcats中。
https://stackoverflow.com/questions/32315859
复制相似问题