javax.management.InstanceNotFoundException:org.springframework.boot:type = Admin,name = SpringApplication

时间:2018-05-20 14:58:29

标签: spring spring-boot spring-batch

我开发了一个Spring启动应用程序,该应用程序的功能正常运行。但是,在启动时,我多次看到下面的异常。

几周后,当我运行相同的应用程序时,我没有看到任何此类异常。之后代码库没有改变。我想知道它是否必须对环境做些什么。

我发帖的原因是我想更多地了解异常的原因以及如何解决它。当我用Google搜索时,我找不到多少帮助。这http://www.example.com/directory/index.php无效。

Spring批处理从Oracle DB中提取数据,并在经过一些处理后将其写入JSON文件。我发布了pom.xml。

javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringApplication
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095) ~[na:1.8.0_161]
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getClassLoaderFor(DefaultMBeanServerInterceptor.java:1444) ~[na:1.8.0_161]
    at com.sun.jmx.mbeanserver.JmxMBeanServer.getClassLoaderFor(JmxMBeanServer.java:1324) ~[na:1.8.0_161]
    at javax.management.remote.rmi.RMIConnectionImpl$6.run(RMIConnectionImpl.java:1365) ~[na:1.8.0_161]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_161]
    at javax.management.remote.rmi.RMIConnectionImpl.getClassLoaderFor(RMIConnectionImpl.java:1362) ~[na:1.8.0_161]
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:813) ~[na:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_161]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_161]
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:361) ~[na:1.8.0_161]
    at sun.rmi.transport.Transport$1.run(Transport.java:200) [na:1.8.0_161]
    at sun.rmi.transport.Transport$1.run(Transport.java:197) [na:1.8.0_161]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_161]
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) [na:1.8.0_161]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_161]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) [na:1.8.0_161]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_161]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_161]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_161]

的pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd">     4.0.0

<groupId>com.mySample</groupId>
<artifactId>db-extraction</artifactId>
<version>1.0.0</version>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
</parent>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc7</artifactId>
        <version>12.1.0.1</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
    <dependency>
        <groupId>commons-dbutils</groupId>
        <artifactId>commons-dbutils</artifactId>
        <version>1.6</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.1</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </configuration>
        </plugin>
    </plugins>
</build>

5 个答案:

答案 0 :(得分:7)

你是从Eclipse推出的吗? 如果是这样,我找到了一种方法来解决Eclipse氧气中的这个问题: 从STS插件Spring Boot仪表板或Run菜单中的Run Configurations转到启动配置。然后取消勾选启用JMX复选框并运行它。 希望它有所帮助

答案 1 :(得分:7)

我在IDEA IntelliJ中遇到了同样的问题。问题是IntelliJ的默认服务器配置。您只需要删除“启用启动优化”和“启用JMX代理”复选框,即可正常工作!

步骤:

  • 编辑配置
  • 选择您的项目
  • 删除“启用启动优化”和“启用JMX代理”复选框

答案 2 :(得分:1)

似乎可以回答您的问题“我发布帖子的原因是我想 了解 更多有关异常原因以及如何解决该异常的信息。我无法当我用Google搜索时会找到很多帮助。”

问题是JMX / Lifecycle立即启动,但是Spring Boot需要更长的时间,因为有很多事情需要解决,例如应用程序属性,bean,自动装配等。因此在这段时间内JMX已启动,但Spring Boot尚未启动,JMX正在搜索您的SpringApplication(尚未启动),因此抛出了这些错误/异常。一旦启动了Spring Boot,JMX就会感到高兴,并且错误/异常会停止。

就我而言,我使用上面的解决方案来解决启动期间出现的错误/异常,但是随后我发现Boot Dashboard不再显示正在运行localhost应用程序的端口...。作为未知端口。在Eclipse / STS 3.9.5中,我看到了“启用生命周期管理”复选框,它似乎解决了启动期间发生的错误/异常,但是从这篇文章here看来,您需要启用生命周期管理和JMX来在引导面板中查看您的端口。

也就是说,看起来我们只需要做出选择a。)在启动过程中发生错误/异常并查看端口,或者b。)禁用JMX / Lifecycle并在纸上跟踪端口...

希望这会有所帮助,adym

答案 3 :(得分:1)

这是正常现象,无需担心。

日志级别在TRACE或DEGUG时可以看到这个异常。在 RMI TCP 服务器启动和 spring boot tomcat 启动之间总是有一些时间延迟。 RMI TCP 将首先启动,并尝试找到后者启动的 SpringApplication Insatance。到那时,RMI TCP 服务器将轮询以找到此 SpringApplication 实例。一旦找到 SpringApplication 实例,此错误就消失了,并且启动了 Spring Boot 的自动配置。

答案 4 :(得分:0)

在编辑配置窗口取消选中启用 JMX 代理帮助我摆脱了 IntelliJ 上的错误。要保存设置查找时间发布屏幕截图:

enter image description here