springboot項目 部署tomcat

springboot  默認以jar打包【所以對jsp支持不是特別好】,以war包打包springboot項目

         步驟一: 將maven中的jar----修改爲war 然後將war包 丟在tomcat的webapps目錄下 windows下啓動tomcat報錯

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[
/report]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1092)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1984)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
        at org.apache.tomcat.websocket.server.WsServerContainer.<init>(WsServerContainer.java:150)
        at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
        at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5573)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        ... 10 more

  錯誤原因是:springboot默認servlet容器是基於tomcat8的 而我本地是tomcat7的 【可以在打好的war包裏面 看到tomcat8的相關jar包】

步驟二:解決方式

1、用springboot內置的tomcat庫 並制定我們要採用的tomcat版本

<properties>
    <tomcat.version>要採用的tomcat版本</tomcat.version>
</properties>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-juli</artifactId>
    <version>${tomcat.version}</version>
</dependency

2、不採用springboot內置的tomcat庫   

      

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

      在打war包的時候 告訴spring-boot tomcat相關的jar包用外部的 不要打進去

步驟三:

 


打包好的war 放到tomcat的webapps下面 啓動 方位http://localhost:[端口號]/[打包項目名]/url 就可以啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章