ApplicationContextException: Impossible de démarrer le ServletWebServerApplicationContext en raison du manque de ServletWebServerFactory bean
J'ai écrit un printemps application de traitement par lots à l'aide de Printemps de démarrage. Quand je suis en train de lancer cette application à l'aide de la ligne de commande et du chemin de classe sur mon système local, il est en cours d'exécution fine. Cependant, quand j'ai essayé de l'exécuter sur un serveur linux, il me donne de l'exception suivante
Unable to start web server; nested exception is
org.springframework.context.ApplicationContextException:
Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
Ci-dessous est la façon dont je suis en cours d'exécution, il:
java -cp jarFileName.jar; lib\* -Dlogging.level.org.springframework=DEBUG -Dspring.profiles.active=dev -Dspring.batch.job.names=abcBatchJob com.aa.bb.StartSpringBatch > somelogs.log
Vous devez vous connecter pour publier un commentaire.
Pour non application web, désactivez
web application type
dans le fichier de propriétés:Dans
application.properties
:Si vous utilisez
application.yml
puis ajouter:Pour les applications web, s'étend
*SpringBootServletInitializer*
dans la classe principale.Probablement vous manque
@SpringBootApplication
dans votre ressort de démarrage démarreur classe.La solution est:
J'ai explicitement définie ci-dessous la propriété
none
dansapplication.yml
fichier.Vous probablement à l'utiliser dans votre projet:
dans ce cas, vous devrez également ajouter:
et la magie opère 🙂
PS: c'est parce que le Printemps sera utilisé par défaut par les web MVC au lieu de web-flux quand les deux sont disponibles
J'ai eu ce problème lors de la migration de Printemps de Démarrage. J'ai trouvé un conseils pour éliminer les dépendances et il a aidé. Donc, j'ai enlevé de la dépendance jsp-api Projet avait. Aussi, servlet-api de dépendance doit être supprimée.
La mise à niveau de
spring-boot-starter-parent
danspom.xml
à la dernière version fixe pour moi.Annoter la classe avec
public static void main
avec, par exemple:@SpringBootApplication
Dans mon cas, le problème était que je n'avais pas un serveur Tomcat installé séparément, dans mon eclipse. J'ai assumé mes Springboot démarre le serveur automatiquement à l'intérieur de lui-même.
Depuis ma classe principale s'étend
SpringBootServletInitializer
et remplacerconfigure
méthode, j'ai vraiment besoin d'un serveur Tomcat installé dans mon IDE.À installer, tout d'abord télécharger Apachce Tomcat (version 9 dans mon cas) et de créer un serveur à l'aide de l'onglet Serveurs.
Après l'installation, exécutez la classe principale sur le serveur.
J'ai rencontré ce problème lors de la attempint pour exécuter mon application web comme un gras bocal plutôt que de partir dans mon IDE (Ide).
C'est ce qui a fonctionné pour moi. Le simple ajout d'un profil par défaut pour le application.propriétés fichier.
Vous n'avez pas à utiliser par défaut si vous avez déjà mis en place d'autres profils spécifiques (dev/test/prod). Mais si vous n'avez pas ce qui est nécessaire pour exécuter l'application comme un gros pot.