繁体   English   中英

Tomcat:部署多个WAR时出现应用程序错误

[英]Tomcat: Application errors when multiple WARs deployed

Tomcat启动后,我看到了一些非常奇怪的东西。 我已经部署了15个应用程序,并且一切正常,直到尝试访问特定应用程序上的特定页面为止。 有一些交叉依赖性,例如服务。

如果我自己部署有问题的应用程序,则可以无问题地查看页面。 如果我一个接一个地部署所有其他应用程序,则可以无问题地查看页面。 如果所有应用程序都在启动时一起部署,则这是我看到以下错误的时间:

严重:无法使用构造函数public com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和参数org.apache.wicket.WicketRuntimeException实例化页面:无法使用构造函数public实例化页面com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:212)处的参数。在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget上的session.DefaultPageFactory.newPage(DefaultPageFactory.java:65)在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:298) org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234)的org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)的getPage(BookmarkablePageRequestTarget.java:320)在o rg.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1252)位于org.apache.wicket.RequestCycle.step(RequestCycle.java:1331)位于org.apache.wicket.RequestCycle.steps(RequestCycle.java:1438)在org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)在org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)在org.apache.wicket.protocol.http.WicketFilter com的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)处的.doFilter(WicketFilter.java:319)在com.org的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)处在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)的ideasx.stats.HttpFilterStatCounter.doFilter(HttpFilterStatCounter.java:87)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 210),位于org.apache.ca的org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)上的talina.core.StandardContextValve.invoke(StandardContextValve.java:123)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 171)在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)在org.apache.catalina.valves.AccessLogValve.invoke(AccessReportValve.java:953)在org.apache.catalina.core.StandardEngineValve org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)的org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)的.invoke(StandardEngineValve.java:118) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:313)处的apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607)在java.util.concurrent.ThreadPoolExecutor $ Worker。 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecuto处的runTask(ThreadPoolExecutor.java:895) r.java:918)在java.lang.Thread.run(Thread.java:695)由以下原因引起:java.lang.reflect.InvocationTargetException在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.NativeConstructorAccessorImpl。 org.apache.wicket.session.DefaultPageFactory处的java.lang.reflect.Constructor.newInstance(Constructor.java:513)处的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)处的newInstance(NativeConstructorAccessorImpl.java:39) .createPage(DefaultPageFactory.java:188)...还有30个原因:java.lang.NoClassDefFoundError:无法在org.apache.wicket.proxy.LazyInitProxyFactory.createProxy(LazyInitProxyFactory)处初始化net.sf.cglib.proxy.Enhancer类。 .java:159)(位于org.apache.wicket.injection.Injector.Injector.inject(Injector.java:103),位于org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.getFieldValue(AnnotProxyFieldValueFactory.java:130)。 apache.wicket.injection.ConfigurableInjector.inject(ConfigurableIn 在org.apache.wicket.injection.ComponentInjector.onInstantiation(ComponentInjector.java:52)的org.apache.wicket.Application.notifyComponentInstantiationListeners(Application.java:1093)的org.apache.wicket.Component的jector.java:39) 。(Component.java:926)在org.apache.wicket.MarkupContainer。(MarkupContainer.java:113)在org.apache.wicket.markup.html.WebMarkupContainer。(WebMarkupContainer.java:49)在org.apache.wicket org.apache.wicketpan上的.markup.html.WebMarkupContainerWithAssociatedMarkup。(WebMarkupContainerWithAssociatedMarkup.java:51)位于org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup。(WebMarkupContainerWithAssociatedMarkup.java:43)位于org.apache.wicketpan。 Panel.java:76)在com.company.web.view.purchase.buy.BuyAGiftPanel。(BuyAGiftPanel.java:54)在com.company.web.view.purchase.buy.BuyAGiftPage。(BuyAGiftPage.java:22) ...另外35个

我检查了依赖冲突,没有发现任何异常。 所以我的问题是这个。 鉴于我可以按特定顺序部署应用程序并且看不到错误,因此Tomcat是否可能对此负责? 我将如何找到问题?

编辑添加:似乎在启动时,一个干净的会话和对应用程序的第一个请求会引发以下强制转换异常:

严重:无法使用构造函数public com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和参数org.apache.wicket.WicketRuntimeException实例化页面:无法使用构造函数public实例化页面com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:212)处的参数。在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget上的session.DefaultPageFactory.newPage(DefaultPageFactory.java:65)在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:298) org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234)的org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)的getPage(BookmarkablePageRequestTarget.java:320)在o rg.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1252)位于org.apache.wicket.RequestCycle.step(RequestCycle.java:1331)位于org.apache.wicket.RequestCycle.steps(RequestCycle.java:1438)在org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)在org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)在org.apache.wicket.protocol.http.WicketFilter com的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)处的.doFilter(WicketFilter.java:319)在com.org的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)处在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)的ideasx.stats.HttpFilterStatCounter.doFilter(HttpFilterStatCounter.java:87)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 210),位于org.apache.ca的org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)上的talina.core.StandardContextValve.invoke(StandardContextValve.java:123)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 171)在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)在org.apache.catalina.valves.AccessLogValve.invoke(AccessReportValve.java:953)在org.apache.catalina.core.StandardEngineValve org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)的org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)的.invoke(StandardEngineValve.java:118) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:315)处的apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607)在java.util.concurrent.ThreadPoolExecutor $ Worker。 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecuto处的runTask(ThreadPoolExecutor.java:895) r.java:918)在java.lang.Thread.run(Thread.java:695)由以下原因引起:java.lang.reflect.InvocationTargetException在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.NativeConstructorAccessorImpl。 org.apache.wicket.session.DefaultPageFactory处的java.lang.reflect.Constructor.newInstance(Constructor.java:513)处的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)处的newInstance(NativeConstructorAccessorImpl.java:39) .createPage(DefaultPageFactory.java:188)...还有30个原因由org.apache.wicket.spring上的org.apache.wicket.proxy.LazyInitProxyFactory.createProxy(LazyInitProxyFactory.java:159)处的java.lang.ExceptionInInitializerError引起。 org.apache.wicket.injection.Injector.injector.inject(Injector.java:103)位于org.apache.wicket.injection.ConfigurableInjector.inject(ConfigurableInjector.java:处的injection.annot.AnnotProxyFieldValueFactory.getFieldValue(AnnotProxyFieldValueFactory.java:130) 39)在org.apache.wicket.injection.Co 位于org.apache.wicket.Component。(Component.java:926)的org.apache.wicket.Application.notifyComponentInstantiationListeners(Application.java:1093)的mponentInjector.onInstantiation(ComponentInjector.java:52)。 org.apache.wicket.markup.html.WebMarkupContainer.MarkupContainer。(MarkupContainer.java:113).org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup.(WebMarkupContainerWithAssociatedMarkup。 org.apache.wicket.markup.html.panel.Panel。(Panel.java:76)在com.company.web.view上的org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup。(WebMarkupContainerWithAssociatedMarkup.java:43) com.company.web.view.purchase.buy.BuyAGiftPage。(BuyAGiftPage.java:22)上的Purchase.buy.BuyAGiftPanel。(BuyAGiftPanel.java:54)... 35个以上原因:java.lang.ClassCastException:net .sf.cglib.proxy.Enhancer $ EnhancerKey $$ KeyFactoryByCGLIB $$ 7fb24d72无法转换为net.sf.cglib.core.KeyFactory的net.sf.cglib.core.KeyFactor y $ Generator.create(KeyFactory.java:145)在net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)在net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)在net.sf.cglib.proxy.Enhancer。(enhancer.java:69)处的net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)...更多49

删除所有服务器日志以及Tomcat中的所有临时文件,然后重试。 这多次解决了此类问题。

看来这并不是特定于Tomcat的。 搜索更多内容后,我发现cglib_nodep依赖项存在一些类加载问题。 我从树中排除了该库,明确定义了cglib 2.2版,并清除了所有内容。

http://forum.spring.io/forum/spring-projects/web/flex/65337-an-strange-error-with-net-sf-cglib-core-keyfactory

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM