2015-10-16 1 views
2

J'ai une application existante qui se construit bien via gradle mais quand je l'exécute à travers le serveur tomcat embarqué, je reçois le exception suivante. Une idée sur la façon de résoudre?Spring Boot se construit bien mais javax.naming.NameNotFoundException: nom restant: env/jmx/runtime en cours d'exécution

org.springframework.beans.factory.BeanCreationException: Erreur création d'haricot avec le nom 'mbeanExporter' défini dans la ressource de chemin de classe [org/springframework/boot/autoconfiguration/JMX/JmxAutoConfiguration.class]: Bean instanciation via la méthode d'usine a échoué; l'exception imbriquée est org.springframework.beans.BeanInstantiationException: Echec à instanciation [org.springframework.jmx.export.annotation.AnnotationMBeanExporter]: Méthode d'usine 'mbeanExporter' a lancé l'exception; exception imbriquée est org.springframework.beans.factory.BeanCreationException: Erreur création d'haricot avec le nom 'MBeanServer' défini dans la ressource de chemin de classe [org/springframework/boot/autoconfiguration/JMX/JmxAutoConfiguration.class]: Bean instanciation par usine méthode échouée; l'exception imbriquée est org.springframework.beans.BeanInstantiationException: Échec de instanciation [javax.management.MBeanServer]: méthode d'usine 'mbeanServer' a levé l'exception; l'exception imbriquée est org.springframework.jmx.MBeanServerNotFoundException: échec de récupération de WebLogic MBeanServer à partir de JNDI; exception imbriquée est javax.naming.NameNotFoundException: Nom restant: env/JMX/exécution à org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:599) à org.springframework.beans. factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:1119) à org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1014) à org.springframework.beans.factory.support. AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:504) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:476) à org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:303) à org. springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) à org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:299) à org.springframework.beans. factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSin gletons (DefaultListableBeanFactory.java:755) à org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:757) à org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:480) à org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh (EmbeddedWebApplicationContext.java:118) à org.springframework.boot.SpringApplication.refresh (SpringApplication.java:687) à org.springframework.boot .SpringApplication.run (SpringApplication.java: 321) à org.springframework.boot.SpringApplication.run (SpringApplication.java:967) à org.springframework.boot.SpringApplication.run (SpringApplication.java:956) à com.avada.main. Application.main (Application.java:15)

Répondre

1

L'exportateur MBean pense qu'il est en cours d'exécution sur Weblogic:

Impossible de récupérer WebLogic MBeanServer de JNDI

Cela ne peut se produire que si weblogic.management.Helper sur le classpath. Vous devez supprimer cette classe du classpath. Si vous ne savez pas où cette classe pourrait être, lancer Tomcat avec -verbose:class vous le dira.

+0

Merci Andy - J'ai trouvé cette classe dans un bocal particulier que je suis - 'compiler des fichiers ('WebContent/WEB-INF/lib/wls-api.jar')' - des idées sur la façon d'exclure weblogic .Management.Helper d'être compilé en dehors de ce pot? –

+0

Étant donné que vous utilisez Tomcat, ne pouvez-vous pas supprimer tout le pot? –

+0

Nous nous connectons à WebLogic, nous avons donc besoin de ce pot –

2

J'ai rencontré le même problème et l'ai résolu en excluant la classe JmxAutoConfiguration de la configuration Spring Boot.

@SpringBootApplication(exclude = JmxAutoConfiguration.class) 
public class Application {...} 

Il semblait que Spring essayait de créer un haricot (mbeanExporter) détectée dans la bibliothèque api weblogic, et ce haricot avait besoin de la env/jmx/runtime JNDI.

2

Pour moi, ce qui a fonctionné était de placer l'exclure sur:

@EnableAutoConfiguration (exclude = JmxAutoConfiguration.class)

0

Vous pouvez ignorer la configuration chargée du printemps démarrage en ajoutant la ligne suivante:

@EnableAutoConfiguration(exclude = { JmxAutoConfiguration.class, EndpointMBeanExportAutoConfiguration.class}) 

Le conteneur dans la nouvelle version de Spring Boot (en cours: 1.5.4) tente de charger d'autres beans dans le fichier jar du serveur d'applications. Vous devez donc ajouter l'exclusion (comme: EndpointMBeanExportAutoConfiguration) de cette configuration.