java.util.concurrent.ExecutionException----啟動tomcat失敗
阿新 • • 發佈:2018-12-05
最近在學習maven管理分散式專案,maven如何建立管理分散式專案網上資料很多這邊就不說了,主要記錄下我啟動專案時遇到的一個問題java.util.concurrent.ExecutionException。
分散式專案,子專案需要單獨啟動。我將他們當作tomcat專案分別啟動。首先我配置了一個tomcat7的server來啟動service專案(Fragrans-Whites-Sys-Service),ok,service啟動成功。然後重新配置了一個server來啟動web專案(Fragrans-Whites-Web),問題來了。
網上百度了很多的資料,大部分都是說這個錯誤的原因是web.xml檔案配置有問題引起的,或者是jar包衝突的問題。但是我這邊明顯不一樣。在糾結了很久之後,還是求助了我們技術老大(沒錯,博主就是這樣的一隻菜鳥)。嚴重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null].StandardContext[/Fragrans-Whites-Sys-Service]] at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) at java.util.concurrent.FutureTask.get(FutureTask.java:83) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1120) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null].StandardContext[/Fragrans-Whites-Sys-Service]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) ... 7 more Caused by: java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:394) at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:5185) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5386) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) ... 7 more 2016-9-8 15:44:43 org.apache.catalina.core.ContainerBase startInternal 嚴重: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null]] at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) at java.util.concurrent.FutureTask.get(FutureTask.java:83) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1120) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:738) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.startup.Catalina.start(Catalina.java:693) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[null]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.catalina.LifecycleException: A child container failed during start at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) ... 7 more 2016-9-8 15:44:43 org.apache.catalina.startup.HostConfig deployWAR 資訊: Deploying web application archive E:\Program Files\apache-tomcat-7.0.68\webapps\Fragrans-Whites-Web.war 2
然後發現,雖然建立了兩個server但這兩個server實際是引用了同一個tomcat,第二個server本身就有問題,與專案程式碼無關。同一個tomcat同時只能啟動一個server,如果要啟動多個專案,可以部屬多個tomcat來依次啟動,或者將多個專案部屬在同一個server下(注意專案之間的依賴關係)啟動。
因為博主的兩個專案一個是service專案一個是web專案,所以還可以先通過main函式來啟動service專案,再通過tomcat來啟動web專案解決問題。