一.引入外部tomcat依赖
在pom.xml中添加外部tomcat依赖,如下所示
<!--添加外部tomcat依赖,以便在tomcat服务器中部署运行 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
二.修改springBoot项目启动类:App
继承SpringBootServletInitializer,重写configure方法
package com.zd.hellospringboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* Hello world!
*
*/
// 此注解指定这是一个SpringBoot的应用程序,不加就会报异常 Unable to start
// ServletWebServerApplicationContext due to missing ServletWebServerFactory
// bean
@SpringBootApplication
public class App extends SpringBootServletInitializer {
public static void main(String[] args) {
// SpringApplication用于从main方法中启动Spring应用的类
SpringApplication.run(App.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// TODO Auto-generated method stub
return builder.sources(App.class);
}
}
三.选择tomcat服务器,版本必须8.0以上
原因:8.0以下的版本没有el-api3.0.jar包依赖,如果要用8.0以下的版本,将相关的jar包下载下来放到tomcat的lib目录下面即可,然后部署项目到tomcat服务器(我这里选择的是8.5版本的tomcat服务器):
四.运行测试:右键tomcat服务器,点击start,启动:
启动成功未报错:
一月 07, 2019 11:04:11 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:helloSpringBoot' did not find a matching property.
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server version: Apache Tomcat/8.5.32
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server built: Jun 20 2018 19:50:35 UTC
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server number: 8.5.32.0
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Name: Windows 10
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Version: 10.0
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Architecture: amd64
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Java Home: C:\Program Files\Java\jdk1.8.0_172\jre
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Version: 1.8.0_172-b11
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Vendor: Oracle Corporation
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_BASE: E:\tools\apache-tomcat-8.5.32
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_HOME: E:\tools\apache-tomcat-8.5.32
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.base=E:\tools\apache-tomcat-8.5.32
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.home=E:\tools\apache-tomcat-8.5.32
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dwtp.deploy=E:\tools\apache-tomcat-8.5.32\webapps
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.endorsed.dirs=E:\tools\apache-tomcat-8.5.32\endorsed-Xms4096m
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Xmx4096m
一月 07, 2019 11:04:11 上午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dfile.encoding=UTF-8
一月 07, 2019 11:04:11 上午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_172\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_172/bin/server;C:/Program Files/Java/jre1.8.0_172/bin;C:/Program Files/Java/jre1.8.0_172/lib/amd64;D:\app\zdAdmin\product\11.2.0\client_1\bin;F:\app\zdAdmin\product\11.2.0\client_1\bin;E:\app\zdAdmin\product\11.2.0\dbhome_1\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Java\jdk1.8.0_172\bin;E:\Program Files\VisualSVN Server\bin;E:\Program Files\TortoiseSVN\bin;E:\tools\apache-maven-3.5.3\bin;E:\ue;D:\app\zdAdmin\product\11.2.0\client_1\BIN;E:\app\zdAdmin\product\11.2.0\dbhome_1\BIN;;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\zdAdmin\AppData\Local\Microsoft\WindowsApps;;E:\开发软件\eclipse;;.]
一月 07, 2019 11:04:11 上午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-nio-8089"]
一月 07, 2019 11:04:12 上午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
一月 07, 2019 11:04:12 上午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-nio-8010"]
一月 07, 2019 11:04:12 上午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
一月 07, 2019 11:04:12 上午 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1396 ms
一月 07, 2019 11:04:12 上午 org.apache.catalina.core.StandardService startInternal
信息: Starting service [Catalina]
一月 07, 2019 11:04:12 上午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/8.5.32
一月 07, 2019 11:04:14 上午 org.apache.jasper.servlet.TldScanner scanJars
信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
一月 07, 2019 11:04:15 上午 org.apache.catalina.core.ApplicationContext log
信息: 2 Spring WebApplicationInitializers detected on classpath
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.0.RELEASE)
2019-01-07 11:04:16.609 INFO 14892 --- [ost-startStop-1] com.zd.hellospringboot.App : Starting App v0.0.1-SNAPSHOT on zdAdmin with PID 14892 (E:\tools\apache-tomcat-8.5.32\webapps\helloSpringBoot\WEB-INF\classes started by zdAdmin in E:\开发软件\eclipse)
2019-01-07 11:04:16.628 INFO 14892 --- [ost-startStop-1] com.zd.hellospringboot.App : No active profile set, falling back to default profiles: default
2019-01-07 11:04:16.721 INFO 14892 --- [ost-startStop-1] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@33f1c911: startup date [Mon Jan 07 11:04:16 CST 2019]; root of context hierarchy
2019-01-07 11:04:18.758 INFO 14892 --- [ost-startStop-1] o.a.c.c.C.[.[.[/helloSpringBoot] : Initializing Spring embedded WebApplicationContext
2019-01-07 11:04:18.758 INFO 14892 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2038 ms
2019-01-07 11:04:19.508 INFO 14892 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2019-01-07 11:04:19.510 INFO 14892 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2019-01-07 11:04:19.511 INFO 14892 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'errorPageFilter' to: [/*]
2019-01-07 11:04:19.511 INFO 14892 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2019-01-07 11:04:19.511 INFO 14892 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2019-01-07 11:04:19.511 INFO 14892 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2019-01-07 11:04:20.743 INFO 14892 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@33f1c911: startup date [Mon Jan 07 11:04:16 CST 2019]; root of context hierarchy
2019-01-07 11:04:20.933 INFO 14892 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello]}" onto public java.lang.String com.zd.hellospringboot.controller.HelloController.hello()
2019-01-07 11:04:20.935 INFO 14892 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello2]}" onto public java.lang.String com.zd.hellospringboot.controller.HelloController.hello2()
2019-01-07 11:04:20.935 INFO 14892 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello3]}" onto public java.lang.String com.zd.hellospringboot.controller.HelloController.hello3()
2019-01-07 11:04:20.942 INFO 14892 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2019-01-07 11:04:20.945 INFO 14892 --- [ost-startStop-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-01-07 11:04:20.991 INFO 14892 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-01-07 11:04:20.991 INFO 14892 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-01-07 11:04:21.092 INFO 14892 --- [ost-startStop-1] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-01-07 11:04:21.396 INFO 14892 --- [ost-startStop-1] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2019-01-07 11:04:21.417 INFO 14892 --- [ost-startStop-1] com.zd.hellospringboot.App : Started App in 6.021 seconds (JVM running for 11.778)
2019-01-07 11:04:21.542 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deploying web application directory [E:\tools\apache-tomcat-8.5.32\webapps\axis2]
2019-01-07 11:04:27.834 INFO 14892 --- [ost-startStop-1] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[INFO] Clustering has been disabled
[INFO] Deploying module: addressing-1.7.9 - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/modules/addressing-1.7.9.mar
[INFO] Deploying module: jaxws-1.7.9 - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/modules/axis2-jaxws-mar-1.7.9.mar
[INFO] Deploying module: metadataExchange-1.7.9 - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/modules/mex-1.7.9.mar
[INFO] Deploying module: mtompolicy-1.7.9 - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/modules/mtompolicy-1.7.9.mar
[INFO] Deploying module: ping-1.7.9 - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/modules/ping-1.7.9.mar
[INFO] Deploying module: script-1.7.9 - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/modules/scripting-1.7.9.mar
[INFO] Deploying module: soapmonitor-1.7.9 - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/modules/soapmonitor-1.7.9.mar
[INFO] Deploying Web service: version-1.7.9.aar - file:/E:/tools/apache-tomcat-8.5.32/webapps/axis2/WEB-INF/services/version-1.7.9.aar
2019-01-07 11:04:30.027 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deployment of web application directory [E:\tools\apache-tomcat-8.5.32\webapps\axis2] has finished in [8,485] ms
2019-01-07 11:04:30.027 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deploying web application directory [E:\tools\apache-tomcat-8.5.32\webapps\docs]
2019-01-07 11:04:30.150 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deployment of web application directory [E:\tools\apache-tomcat-8.5.32\webapps\docs] has finished in [123] ms
2019-01-07 11:04:30.151 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deploying web application directory [E:\tools\apache-tomcat-8.5.32\webapps\examples]
2019-01-07 11:04:30.517 INFO 14892 --- [ost-startStop-1] o.a.c.c.C.[.[localhost].[/examples] : ContextListener: contextInitialized()
2019-01-07 11:04:30.517 INFO 14892 --- [ost-startStop-1] o.a.c.c.C.[.[localhost].[/examples] : SessionListener: contextInitialized()
2019-01-07 11:04:30.519 INFO 14892 --- [ost-startStop-1] o.a.c.c.C.[.[localhost].[/examples] : ContextListener: attributeAdded('StockTicker', 'async.Stockticker@2e5ab251')
2019-01-07 11:04:30.530 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deployment of web application directory [E:\tools\apache-tomcat-8.5.32\webapps\examples] has finished in [379] ms
2019-01-07 11:04:30.530 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deploying web application directory [E:\tools\apache-tomcat-8.5.32\webapps\host-manager]
2019-01-07 11:04:30.673 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deployment of web application directory [E:\tools\apache-tomcat-8.5.32\webapps\host-manager] has finished in [143] ms
2019-01-07 11:04:30.673 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deploying web application directory [E:\tools\apache-tomcat-8.5.32\webapps\manager]
2019-01-07 11:04:30.698 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deployment of web application directory [E:\tools\apache-tomcat-8.5.32\webapps\manager] has finished in [25] ms
2019-01-07 11:04:30.698 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deploying web application directory [E:\tools\apache-tomcat-8.5.32\webapps\ROOT]
2019-01-07 11:04:30.723 INFO 14892 --- [ost-startStop-1] org.apache.catalina.startup.HostConfig : Deployment of web application directory [E:\tools\apache-tomcat-8.5.32\webapps\ROOT] has finished in [25] ms
2019-01-07 11:04:30.742 INFO 14892 --- [ main] org.apache.coyote.ajp.AjpNioProtocol : Starting ProtocolHandler ["ajp-nio-8010"]
2019-01-07 11:04:30.746 INFO 14892 --- [ main] org.apache.catalina.startup.Catalina : Server startup in 18713 ms
2019-01-07 11:04:41.088 INFO 14892 --- [nio-8089-exec-3] o.a.c.c.C.[.[.[/helloSpringBoot] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2019-01-07 11:04:41.089 INFO 14892 --- [nio-8089-exec-3] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2019-01-07 11:04:41.130 INFO 14892 --- [nio-8089-exec-3] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 41 ms
启动成功,在浏览器输入:http://localhost:8089/helloSpringBoot/hello:
成功访问controller层里面的hello()方法: