spring boot 干货actuator 主要工作是干啥

spring-boot-starter-actuator模块的实现对于实施微服务的中小团队来说,可以有效地减少监控系统在采集应用指标时的开发量。当然,它也并不是万能的,有时候我们也需要对其做一些简单的扩展来帮助我们实现自身系统个性化的监控需求。下面,在本文中,我们将详解的介绍一些关于spring-boot-starter-actuator模块的内容,包括它的原生提供的端点以及一些常用的扩展和配置方式。
/autoconfig:该端点用来获取应用的自动化配置报告,其中包括所有自动化配置的候选项。同时还列出了每个候选项自动化配置的各个先决条件是否满足。所以,该端点可以帮助我们方便的找到一些自动化配置为什么没有生效的具体原因。该报告内容将自动化配置内容分为两部分:
positiveMatches中返回的是条件匹配成功的自动化配置negativeMatches中返回的是条件匹配不成功的自动化配置
"positiveMatches": { // 条件匹配成功的
"EndpointWebMvcAutoConfiguration": [
"condition": "OnClassCondition",
"message": "@ConditionalOnClass classes found:
javax.servlet.Servlet,org.springframework.web.servlet.DispatcherServlet"
"condition": "OnWebApplicationCondition",
"message": "found web application StandardServletEnvironment"
"negativeMatches": {
// 条件不匹配成功的
"HealthIndicatorAutoConfiguration.DataSourcesHealthIndicatorConfiguration": [
"condition": "OnClassCondition",
"message": "required @ConditionalOnClass classes not found: org.springframework.jdbc.core.JdbcTemplate"
从如上示例中我们可以看到,每个自动化配置候选项中都有一系列的条件,比如上面没有成功匹配的HealthIndicatorAutoConfiguration.DataSourcesHealthIndicatorConfiguration配置,它的先决条件就是需要在工程中包含org.springframework.jdbc.core.JdbcTemplate类,由于我们没有引入相关的依赖,它就不会执行自动化配置内容。所以,当我们发现有一些期望的配置没有生效时,就可以通过该端点来查看没有生效的具体原因。
/configprops:该端点用来获取应用中配置的属性信息报告。从下面该端点返回示例的片段中,我们看到返回了关于该短信的配置信息,prefix属性代表了属性的配置前缀,properties代表了各个属性的名称和值。所以,我们可以通过该报告来看到各个属性的配置路径,比如我们要关闭该端点,就可以通过使用endpoints.configprops.enabled=false来完成设置。
"configurationPropertiesReportEndpoint": {
"prefix": "endpoints.configprops",
"properties": {
"id": "configprops",
"sensitive": true,
"enabled": true
/env:该端点与/configprops不同,它用来获取应用所有可用的环境属性报告。包括:环境变量、JVM属性、应用的配置配置、命令行中的参数。从下面该端点返回的示例片段中,我们可以看到它不仅返回了应用的配置属性,还返回了系统属性、环境变量等丰富的配置信息,其中也包括了应用还没有没有使用的配置。所以它可以帮助我们方便地看到当前应用可以加载的配置信息,并配合@ConfigurationProperties注解将它们引入到我们的应用程序中来进行使用。另外,为了配置属性的安全,对于一些类似密码等敏感信息,该端点都会进行隐私保护,但是我们需要让属性名中包含:password、secret、key这些关键词,这样该端点在返回它们的时候会使用*来替代实际的属性值。
/mappings:该端点用来返回所有Spring MVC的控制器映射关系报告。从下面的示例片段中,我们可以看该报告的信息与我们在启用Spring MVC的Web应用时输出的日志信息类似,其中bean属性标识了该映射关系的请求处理器,method属性标识了该映射关系的具体处理类和处理函数。
"/webjars/**": {
"bean": "resourceHandlerMapping"
"bean": "resourceHandlerMapping"
"/**/favicon.ico": {
"bean": "faviconHandlerMapping"
"{[/hello]}": {
"bean": "requestMappingHandlerMapping",
"method": "public java.lang.String com.didispace.web.HelloController.index()"
"{[/mappings || /mappings.json],methods=[GET],produces=[application/json]}": {
"bean": "endpointHandlerMapping",
"method": "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()"
/info:该端点用来返回一些应用自定义的信息。默认情况下,该端点只会返回一个空的json内容。我们可以在application.properties配置文件中通过info前缀来设置一些属性,比如下面这样:info.app.name=spring-boot-helloinfo.app.version=v1.0.0再访问/info端点,我们可以得到下面的返回报告,其中就包含了上面我们在应用自定义的两个参数。
"name": "spring-boot-hello",
"version": "v1.0.0"
度量指标类上面我们所介绍的应用配置类端点所提供的信息报告在应用启动的时候都已经基本确定了其返回内容,可以说是一个静态报告。而度量指标类端点提供的报告内容则是动态变化的,这些端点提供了应用程序在运行过程中的一些快照信息,比如:内存使用情况、HTTP请求统计、外部资源指标等。这些端点对于我们构建微服务架构中的监控系统非常有帮助,由于Spring Boot应用自身实现了这些端点,所以我们可以很方便地利用它们来收集我们想要的信息,以制定出各种自动化策略。下面,我们就来分别看看这些强大的端点功能。
/metrics:该端点用来返回当前应用的各类重要度量指标,比如:内存信息、线程信息、垃圾回收信息等。
"mem": 541305,
"mem.free": 317864,
"processors": 8,
"instance.uptime": ,
"uptime": ,
"systemload.average": -1,
"mitted": 476672,
"heap.init": 262144,
"heap.used": 158807,
"heap": 3701248,
"mitted": 65856,
"nonheap.init": 2496,
"nonheap.used": 64633,
"nonheap": 0,
"threads.peak": 22,
"threads.daemon": 20,
"threads.totalStarted": 26,
"threads": 22,
"classes": 7669,
"classes.loaded": 7669,
"classes.unloaded": 0,
"gc.ps_scavenge.count": 7,
"gc.ps_scavenge.time": 118,
"gc.ps_marksweep.count": 2,
"gc.ps_marksweep.time": 234,
"httpsessions.max": -1,
"httpsessions.active": 0,
"gauge.response.beans": 55,
"gauge.response.env": 10,
"gauge.response.hello": 5,
"gauge.response.metrics": 4,
"gauge.response.configprops": 153,
"gauge.response.star-star": 5,
"counter.status.200.beans": 1,
"counter.status.200.metrics": 3,
"counter.status.200.configprops": 1,
"counter.status.404.star-star": 2,
"counter.status.200.hello": 11,
"counter.status.200.env": 1
从上面的示例中,我们看到有这些重要的度量值:
系统信息:包括处理器数量processors、运行时间uptime和instance.uptime、系统平均负载systemload.average。mem.*:内存概要信息,包括分配给应用的总内存数量以及当前空闲的内存数量。这些信息来自java.lang.Runtime。heap.*:堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getHeapMemoryUsage方法获取的java.lang.management.MemoryUsage。nonheap.*:非堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getNonHeapMemoryUsage方法获取的java.lang.management.MemoryUsage。threads.*:线程使用情况,包括线程数、守护线程数(daemon)、线程峰值(peak)等,这些数据均来自java.lang.management.ThreadMXBean。classes.*:应用加载和卸载的类统计。这些数据均来自java.lang.management.ClassLoadingMXBean。gc.*:垃圾收集器的详细信息,包括垃圾回收次数gc.ps_scavenge.count、垃圾回收消耗时间gc.ps_scavenge.time、标记-清除算法的次数gc.ps_marksweep.count、标记-清除算法的消耗时间gc.ps_marksweep.time。这些数据均来自java.lang.management.GarbageCollectorMXBean。httpsessions.*:Tomcat容器的会话使用情况。包括最大会话数httpsessions.max和活跃会话数httpsessions.active。该度量指标信息仅在引入了嵌入式Tomcat作为应用容器的时候才会提供。gauge.*:HTTP请求的性能指标之一,它主要用来反映一个绝对数值。比如上面示例中的gauge.response.hello: 5,它表示上一次hello请求的延迟时间为5毫秒。counter.*:HTTP请求的性能指标之一,它主要作为计数器来使用,记录了增加量和减少量。如上示例中counter.status.200.hello: 11,它代表了hello请求返回200状态的次数为11。
对于gauge.*和counter.*的统计,这里有一个特殊的内容请求star-star,它代表了对静态资源的访问。这两类度量指标非常有用,我们不仅可以使用它默认的统计指标,还可以在程序中轻松的增加自定义统计值。只需要通过注入org.springframework.boot.actuate.metrics.CounterService和org.springframework.boot.actuate.metrics.GaugeService来实现自定义的统计指标信息。比如:我们可以像下面这样自定义实现对hello接口的访问次数统计。
@RestController
public class HelloController {
@Autowired
private CounterService counterS
@RequestMapping("/hello")
public String greet() {
counterService.increment("didispace.hello.count");
return "";
/metrics端点可以提供应用运行状态的完整度量指标报告,这项功能非常的实用,但是对于监控系统中的各项监控功能,它们的监控内容、数据收集频率都有所不同,如果我们每次都通过全量获取报告的方式来收集,略显粗暴。所以,我们还可以通过/metrics/{name}接口来更细粒度的获取度量信息,比如我们可以通过访问/metrics/mem.free来获取当前可用内存数量。
/health:该端点在一开始的示例中我们已经使用过了,它用来获取应用的各类健康指标信息。在spring-boot-starter-actuator模块中自带实现了一些常用资源的健康指标检测器。这些检测器都通过HealthIndicator接口实现,并且会根据依赖关系的引入实现自动化装配,比如用于检测磁盘的DiskSpaceHealthIndicator、检测DataSource连接是否可用的DataSourceHealthIndicator等。有时候,我们可能还会用到一些Spring Boot的Starter POMs中还没有封装的产品来进行开发,比如:当使用RocketMQ作为消息代理时,由于没有自动化配置的检测器,所以我们需要自己来实现一个用来采集健康信息的检测器。比如,我们可以在Spring Boot的应用中,为org.springframework.boot.actuate.health.HealthIndicator接口实现一个对RocketMQ的检测器类:
@Component
public class RocketMQHealthIndicator implements HealthIndicator {
public Health health() {
int errorCode = check();
if (errorCode != 0) {
return Health.down().withDetail("Error Code", errorCode).build();
return Health.up().build();
private int check() {
// 对监控对象的检测操作
通过重写health()函数来实现健康检查,返回的Heath对象中,共有两项内容,一个是状态信息,除了该示例中的UP与DOWN之外,还有UNKNOWN和OUT_OF_SERVICE,可以根据需要来实现返回;还有一个详细信息,采用Map的方式存储,在这里通过withDetail函数,注入了一个Error Code信息,我们也可以填入一下其他信息,比如,检测对象的IP地址、端口等。重新启动应用,并访问/health接口,我们在返回的JSON字符串中,将会包含了如下信息:
"rocketMQ": {
"status": "UP"
/dump:该端点用来暴露程序运行中的线程信息。它使用java.lang.management.ThreadMXBean的dumpAllThreads方法来返回所有含有同步信息的活动线程详情。
/trace:该端点用来返回基本的HTTP跟踪信息。默认情况下,跟踪信息的存储采用org.springframework.boot.actuate.trace.InMemoryTraceRepository实现的内存方式,始终保留最近的100条请求记录。它记录的内容格式如下:
"timestamp": 3,
"method": "GET",
"path": "/metrics/mem",
"headers": {
"request": {
"host": "localhost:8881",
"connection": "keep-alive",
"cache-control": "no-cache",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/53.0. Safari/537.36",
"postman-token": "9817ea4d-ad9d-b2fc-7685-9dff1a1bc193",
"accept": "*/*",
"accept-encoding": "gzip, deflate, sdch",
"accept-language": "zh-CN,q=0.8"
"response": {
"X-Application-Context": "hello:dev:8881",
"Content-Type": "application/charset=UTF-8",
"Transfer-Encoding": "chunked",
"Date": "Sat, 24 Dec :22 GMT",
"status": "200"
操作控制类仔细的读者可能会发现,我们在&初识Actuator&时运行示例的控制台中输出的所有监控端点,已经在介绍应用配置类端点和度量指标类端点时都讲解完了。那么还有哪些是操作控制类端点呢?实际上,由于之前介绍的所有端点都是用来反映应用自身的属性或是运行中的状态,相对于操作控制类端点没有那么敏感,所以他们默认都是启用的。而操作控制类端点拥有更强大的控制能力,如果要使用它们的话,需要通过属性来配置开启。
在原生端点中,只提供了一个用来关闭应用的端点:/shutdown。我们可以通过如下配置开启它:
endpoints.shutdown.enabled=true在配置了上述属性之后,只需要访问该应用的/shutdown端点就能实现关闭该应用的远程操作。由于开放关闭应用的操作本身是一件非常危险的事,所以真正在线上使用的时候,我们需要对其加入一定的保护机制,比如:定制Actuator的端点路径、整合Spring Security进行安全校验等。
http://www./lib/view/open2.html
阅读(...) 评论()解决java - Spring Boot Actuator Not Working - java-maven-jetty - ITkeyowrd
解决java - Spring Boot Actuator Not Working
推荐:You are here to learn about Spring Boot Actuator for collecting metrics about your production grade applications. Spring Boot Actuator is sub-project
With the following pom dependencies:
&?xml version=&1.0& encoding=&UTF-8&?&
&project xmlns=&http://maven.apache.org/POM/4.0.0& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&&
&modelVersion&4.0.0&/modelVersion&
&groupId&org.springframework.boot&/groupId&
&artifactId& spring-boot-starter-parent&/artifactId&
&version&1.1.4.RELEASE&/version&
&groupId&test.actuator&/groupId&
&artifactId&actuator-load-testing-webapp&/artifactId&
&version&1.0.0-SNAPSHOT&/version&
&properties&
&main.basedir&${basedir}/../..&/main.basedir&
&/properties&
&dependencies&
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-actuator&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-jetty&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-security&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-test&/artifactId&
&scope&test&/scope&
&/dependency&
&/dependencies&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-maven-plugin&/artifactId&
&/plugins&
&/project&
The following application.properties file located at classpath root:
management.address: 127.0.0.1
management.port: 8081
endpoints.shutdown.enabled: true
security.require_ssl: false
shell.ssh.enabled: false
spring.jmx.enabled: false
And the following application main/config:
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
@ComponentScan
public class SampleJettyApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleJettyApplication.class, args);
I was expecting the management facilities to be available on 127.0.0.1:8081 i.e.
http://127.0.0.1:8081/health
But nothing loads on the endpoint, what have I done wrong?
Updated: Startup logs
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java -Dorg.eclipse.jetty.servlet.Default.dirAllowed=true -Didea.launcher.port=7538 &-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 13.app/bin& -Dfile.encoding=UTF-8 -classpath &/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/javafx-doclet.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/htmlconverter.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Users/james.mchugh/Documents/workspaceGamesPlatform/core/actuator-parent/actuator-load-testing-webapp/target/classes:/Users/james.mchugh/.m2/repository/org/springframework/boot/spring-boot-starter/1.0.2.RELEASE/spring-boot-starter-1.0.2.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/boot/spring-boot/1.0.2.RELEASE/spring-boot-1.0.2.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/spring-core/4.0.3.RELEASE/spring-core-4.0.3.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/spring-context/4.0.3.RELEASE/spring-context-4.0.3.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/spring-aop/4.0.3.RELEASE/spring-aop-4.0.3.RELEASE.jar:/Users/james.mchugh/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/james.mchugh/.m2/repository/org/springframework/spring-beans/4.0.3.RELEASE/spring-beans-4.0.3.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/spring-expression/4.0.3.RELEASE/spring-expression-4.0.3.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.0.2.RELEASE/spring-boot-autoconfigure-1.0.2.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.0.2.RELEASE/spring-boot-starter-logging-1.0.2.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.7/jcl-over-slf4j-1.7.7.jar:/Users/james.mchugh/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar:/Users/james.mchugh/.m2/repository/org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.jar:/Users/james.mchugh/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.7/log4j-over-slf4j-1.7.7.jar:/Users/james.mchugh/.m2/repository/ch/qos/logback/logback-classic/1.1.2/logback-classic-1.1.2.jar:/Users/james.mchugh/.m2/repository/ch/qos/logback/logback-core/1.1.2/logback-core-1.1.2.jar:/Users/james.mchugh/.m2/repository/org/yaml/snakeyaml/1.13/snakeyaml-1.13.jar:/Users/james.mchugh/.m2/repository/org/springframework/boot/spring-boot-starter-jetty/1.0.2.RELEASE/spring-boot-starter-jetty-1.0.2.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-webapp/8.1.14.v/jetty-webapp-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-xml/8.1.14.v/jetty-xml-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-util/8.1.14.v/jetty-util-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-servlet/8.1.14.v/jetty-servlet-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-security/8.1.14.v/jetty-security-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-server/8.1.14.v/jetty-server-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-continuation/8.1.14.v/jetty-continuation-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-http/8.1.14.v/jetty-http-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-io/8.1.14.v/jetty-io-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/jetty-jsp/8.1.14.v/jetty-jsp-8.1.14.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/javax.servlet.jsp/2.2.0.v/javax.servlet.jsp-2.2.0.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/javax.servlet/3.0.0.v/javax.servlet-3.0.0.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/org.apache.jasper.glassfish/2.2.2.v/org.apache.jasper.glassfish-2.2.2.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/javax.servlet.jsp.jstl/1.2.0.v/javax.servlet.jsp.jstl-1.2.0.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/org.apache.taglibs.standard.glassfish/1.2.0.v/org.apache.taglibs.standard.glassfish-1.2.0.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/javax.el/2.2.0.v/javax.el-2.2.0.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/com.sun.el/2.2.0.v/com.sun.el-2.2.0.v.jar:/Users/james.mchugh/.m2/repository/org/eclipse/jetty/orbit/org.eclipse.jdt.core/3.7.1/org.eclipse.jdt.core-3.7.1.jar:/Users/james.mchugh/.m2/repository/org/springframework/spring-webmvc/4.0.3.RELEASE/spring-webmvc-4.0.3.RELEASE.jar:/Users/james.mchugh/.m2/repository/org/springframework/spring-web/4.0.3.RELEASE/spring-web-4.0.3.RELEASE.jar:/Applications/IntelliJ IDEA 13.app/lib/idea_rt.jar& com.intellij.rt.execution.application.AppMain test.actuator.jetty.SampleJettyApplication
/\\ / ___'_ __ _ _(_)_ __
__ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
___)| |_)| | | | | || (_| |
|____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::
(v1.0.2.RELEASE)
15:58:55.173
INFO 65654 --- [
main] g.l.jetty.SampleJettyApplication
: Starting SampleJettyApplication on gl02729m-2.test.corp with PID 65654 (/Users/james.mchugh/Documents/workspaceGamesPlatform/core/actuator-parent/actuator-load-testing-webapp/target/classes started by james.mchugh in /Users/james.mchugh/Documents/workspaceGamesPlatform/core/actuator-parent/actuator-test-utils/actuator-load-testing-webapp)
15:58:55.223
INFO 65654 --- [
main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@188fd321: startup date [Mon Jul 21 15:58:55 BST 2014]; root of context hierarchy
15:58:56.157
INFO 65654 --- [
main] e.j.JettyEmbeddedServletContainerFactory : Server initialized with port: 8080
15:58:56.161
INFO 65654 --- [
main] org.eclipse.jetty.server.Server
: jetty-8.1.14.v
15:58:56.201
INFO 65654 --- [
: Initializing Spring embedded WebApplicationContext
15:58:56.201
INFO 65654 --- [
main] o.s.web.context.ContextLoader
: Root WebApplicationContext: initialization completed in 981 ms
15:58:56.496
INFO 65654 --- [
main] o.s.b.c.e.ServletRegistrationBean
: Mapping servlet: 'dispatcherServlet' to [/]
15:58:56.499
INFO 65654 --- [
main] o.s.b.c.embedded.FilterRegistrationBean
: Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
15:58:56.516
INFO 65654 --- [
main] o.e.jetty.server.AbstractConnector
: Started SelectChannelConnector@0.0.0.0:8080
15:58:56.606
INFO 65654 --- [
main] o.s.w.s.handler.SimpleUrlHandlerMapping
: Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
15:58:56.687
INFO 65654 --- [
main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped &{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}& onto public java.lang.String test.actuator.jetty.web.SampleController.helloWorld()
15:58:56.708
INFO 65654 --- [
main] o.s.w.s.handler.SimpleUrlHandlerMapping
: Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
15:58:56.708
INFO 65654 --- [
main] o.s.w.s.handler.SimpleUrlHandlerMapping
: Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
15:58:56.848
INFO 65654 --- [
: Initializing Spring FrameworkServlet 'dispatcherServlet'
15:58:56.849
INFO 65654 --- [
main] o.s.web.servlet.DispatcherServlet
: FrameworkServlet 'dispatcherServlet': initialization started
15:58:56.863
INFO 65654 --- [
main] o.s.web.servlet.DispatcherServlet
: FrameworkServlet 'dispatcherServlet': initialization completed in 14 ms
15:58:56.913
INFO 65654 --- [
main] o.e.jetty.server.AbstractConnector
: Started SelectChannelConnector@0.0.0.0:8080
15:58:56.916
INFO 65654 --- [
main] .s.b.c.e.j.JettyEmbeddedServletContainer : Jetty started on port: 8080
15:58:56.918
INFO 65654 --- [
main] g.l.jetty.SampleJettyApplication
: Started SampleJettyApplication in 2.108 seconds (JVM running for 2.529)
推荐:搭建一个简单的Web Service服务器 要想跑Web Service客户端,前提是要有个Web Service服务器。如果你已经有Web Service服务器,那么可以跳过这一步。如果没有,answer 1 >>解决方法It looks like IntelliJ has made a mess of the classpath. Looking at the jars supplied with -classpath there's a lot of Spring Boot 1.0.2.RELEASE jars in there which doesn't match your pom.
The banner in the startup logs also shows that you're running Spring Boot 1.0.2.RELEASE:
/\\ / ___'_ __ _ _(_)_ __
__ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
___)| |_)| | | | | || (_| |
|____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::
(v1.0.2.RELEASE)
Convincing IntelliJ to use the right classpath, or running your application on the command line with mvn spring-boot:run should fix your problem, although I strongly suspect that you'll also need to add a dependency on spring-webmvc:
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&/dependency&
推荐:使用Spring Boot来加速Java web项目的开发 我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的。
回首我们以前使用Spring框架的时候,我们需
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。

我要回帖

更多关于 springboot干嘛的 的文章

 

随机推荐