当前位置: 首页 > 知识库问答 >
问题:

微型Spring和Spring启动致动器,无法访问/执行器endpoint

松飞翮
2023-03-14

只是试用具有Spring功能的微纳特,并且无法访问我的/执行器endpointSpring启动v2.3.0版本和微纳特2.0.0.M3

我使用mn创建应用程序xxx创建了一个基本的微纳特项目- lang groovy。

然后,我添加了Spring依赖项和微纳Spring以及相关的注释处理器。

我的构建.gradle 现在如下所示

plugins {
    id "groovy"
    id "com.github.johnrengelman.shadow" version "5.2.0"
    id "application"
    id "net.ltgt.apt" version "0.21"  //enables annotation preproccessing support
    id "net.ltgt.apt-idea" version "0.21"
    id "org.springframework.boot" version "2.3.0.RELEASE"
    id "io.spring.dependency-management" version "1.0.9.RELEASE"
}

ext['groovy.version'] = '3.0.4'

version "0.1"
group "com.softwood"

repositories {
    mavenCentral()
    maven { url "https://jcenter.bintray.com" }
}

configurations {
    // for dependencies that are needed for development only
    developmentOnly 
}

dependencies {

    //annotation processors
    annotationProcessor platform("io.micronaut:micronaut-bom:$micronautVersion")
    annotationProcessor "io.micronaut.spring:micronaut-spring-boot-annotation"
    annotationProcessor "io.micronaut.spring:micronaut-spring-web-annotation"
    testAnnotationProcessor "io.micronaut.spring:micronaut-spring-web-annotation:2.0.1"

    //latest groovy v3
    implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: '3.0.4' //, ext: 'pom'

    //spring
    compileOnly "io.micronaut.spring:micronaut-spring-annotation:2.0.1"
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation group: 'io.micronaut.spring', name: 'micronaut-spring-web', version: '2.0.1'
    runtime ("io.micronaut.spring:micronaut-spring-boot:2.0.1")


    compileOnly platform("io.micronaut:micronaut-bom:$micronautVersion")
    compileOnly "io.micronaut:micronaut-inject-groovy"
    implementation platform("io.micronaut:micronaut-bom:$micronautVersion")
    implementation "io.micronaut:micronaut-runtime-groovy"
    implementation "io.micronaut:micronaut-validation"
    implementation "javax.annotation:javax.annotation-api"
    implementation "io.micronaut:micronaut-http-server-netty"
    implementation "io.micronaut:micronaut-http-client"
    runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
    testCompileOnly platform("io.micronaut:micronaut-bom:$micronautVersion")
    testImplementation platform("io.micronaut:micronaut-bom:$micronautVersion")
    testImplementation("org.spockframework:spock-core:2.0-M2-groovy-3.0") {
        exclude group: "org.codehaus.groovy", module: "groovy-all"
    }
    testImplementation "io.micronaut:micronaut-inject-groovy"
    testImplementation "io.micronaut.test:micronaut-test-spock"
    testImplementation "io.micronaut.test:micronaut-test-junit5"
}

test.classpath += configurations.developmentOnly

mainClassName = "com.softwood.Application"

//added - enable incremetal compile feature - can't enable with annotation processors !
/*tasks.withType(GroovyCompile).configureEach {
    options.incremental = true
}*/

tasks.withType(GroovyCompile) {
    groovyOptions.forkOptions.jvmArgs.add('-Dgroovy.parameters=true')
}


shadowJar {
    mergeServiceFiles()
}

tasks.withType(JavaExec) {
    classpath += configurations.developmentOnly
    jvmArgs('-noverify', '-XX:TieredStopAtLevel=1', '-Dcom.sun.management.jmxremote')
}

我调整了一个HelloController,如下所示

import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.HttpStatus
import org.springframework.boot.actuate.endpoint.annotation.Endpoint


@Controller("/hello")
@Endpoint
class HelloController {

    @Get("/")
    String index() {
        return 'hello william'
    }
}

并将应用程序类标记为spring boot Application——但是调用Micronaut.run()来构建MN上下文等

import io.micronaut.runtime.Micronaut
import groovy.transform.CompileStatic
import org.springframework.boot.autoconfigure.SpringBootApplication

@CompileStatic
@SpringBootApplication
class Application {
    static void main(String[] args) {
        Micronaut.run(Application)
    }
}

我尝试调整application.yml以公开所有endpoint,如下所示

micronaut:
  application:
    name: micronaut-std-app

management:
  endpoints:
    web:
      exposure:
        include=*:

这一切编译正常,运行正常。如果调用localhost:8080/hello,则会得到预期的字符串

如果您尝试访问执行器endpoint,则不会生成任何内容,浏览器会显示

{"message":"Page Not Found","_links":{"self":{"href":"/actuator/health","templated":false}}}

如果您尝试进行混合微纳和Spring项目,那么如何为您的MN预处理控制器等启用任何执行器endpoint?

共有1个答案

诸葛嘉熙
2023-03-14

如果您只想要一个健康检查endpoint,Micronaut有可用的内置健康检查endpoint。

在 build.gradle 中添加休耕依赖性以添加运行状况等终结点:

implementation("io.micronaut:micronaut-management")

你可以把application.yml

endpoints:
    health:
        enabled: true

然后将运行状况检查 URL 更改为“/运行状况”

 类似资料:
  • 如何访问http://localhost:8081/Actuatorendpoint?

  • 问题内容: 我一直在研究Spring / Spring MVC应用程序,并且希望添加性能指标。我遇到过Spring Boot Actuator,它看起来是一个不错的解决方案。但是我的应用程序不是Spring Boot应用程序。我的应用程序在传统容器Tomcat 8中运行。 我添加了以下依赖 我创建了以下配置类。 我什至可以按照StackOverflow另一篇文章的建议在每个配置类上添加 问题答案:

  • Spring Boot Actuator中存在一个错误,如果使用了某些属性,在暴露处的就绪endpoint和处的活动endpoint时不起作用。您会得到一个白标签错误页面。 此应用程序没有显式的/错误映射,因此您将其视为回退。 这些属性包括: 默认情况下,我需要使用管理端口,以便可以使用执行器/指标进行监控。因此,为了进行可靠的健康检查,我需要在主/应用程序端口上公开活动性和就绪性endpoint

  • 我尝试在Spring启动中使用执行器endpoint。应用程序运行平稳。我的pom文件如下所示: 这是应用程序的内容。属性文件: 这是我的Spring Boot应用程序的开始: 每当我尝试通过键入连接/health、/Info或/metricsendpoint时http://localhost:8080/health,HTTP请求传输到http://localhost:8080/showMyLog

  • 我想为我们的应用程序配置Spring启动致动器endpoint。下面是我的pom.xml文件,添加了Spring启动执行器依赖项。 当我启动应用程序时,我看不到文档中显示的任何注册的/application/URLendpoint。文件表明,在将致动器相关性添加到pom之后。xml,我应该在启动日志中看到额外的映射,但我没有。这里会有什么问题? 下面是一个启动日志: