Je tente d'exécuter une application simple avec la configuration basée sur Java Spring sur JBoss, mais pas de succès. Cette application fonctionne correctement sur la jetée et la tomcat. Le journal JBoss a l'air bien, car cela me montre des mappages réussis, etc., mais j'ai 404 essayé d'accéder à l'URL.
Voici mon code: p>
Initialiseur P>
Spring WebApplicationInitializers detected on classpath Initializing Spring root WebApplicationContext Root WebApplicationContext: initialization started Mapped URL path [/resources/**] Mapped URL path [/**] Registering web context: /test JBAS018559: Deployed "test.war"
8 Réponses :
Eh bien, pour quelqu'un d'autre face à ce problème, cela fonctionne simplement sur le nouveau Wildfly. Si vous n'avez pas de conteneur spécifique pour exécuter votre application, vous pouvez choisir entre JBoss 7 et Wildfly et veut exécuter Spring Java Config, essayez-le sur Wildfly! P>
Cela fonctionne également pour moi sur EAP 6.2 (qui est comme 7,3, je pense). Le problème semble être que le mappage "/" (par défaut) n'est pas traité comme implicite par JBoss 7.1 (mais c'est par tomcat et jetée), mais seulement si vous utilisez la configuration Java non web.xml. Bizarre.
Correction, cela ne fonctionne pas pour moi avec EAP 6.2. JBoss comme 7 est un DUD. Wildfly (comme 8) travaille pour moi. Ou vous pouvez vous déconner avec la configuration du conteneur en tant que 7 (E.G. Set Activer-Welcome-root = "False" code> dans
standalone.xml code>).
J'ai eu un problème similaire avec un projet MVC printemps déployé sur JBoss 7.1 sans web.xml.
Selon Javadocs de ressort pour webapplicationInitializer, plus anciennes versions de Tomcat (
C'était la source de mon problème. J'instende le servlet via "/", mais JBoss EAP 6.4 ne prend pas en charge cette cartographie par programme. Cela ne fonctionne que via web.xml. Je voulais toujours utiliser la configuration programmatique, j'ai donc changé la cartographie en "/ *" au lieu de "/", et elle a corrigé mon problème. P> Remarque: cette configuration est incompatible avec des vues JSP. "/ *" remplacera le servlet de servlet le servlet jsp du conteneur. Si vous comptez toujours sur des points de vue JSP, je vous recommanderais d'utiliser web.xml pour configurer le DispatcherServlet em> de le faire par programme; La configuration Web.xml fonctionne avec "/" correctement. P> <servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Appeler nouveau annotationconfigwebwebapplicationContext () code> dans le
SpringbootservletInitializer code> Sous-classe cause tout
@Component code> des objets annotés à instanciation deux fois (voir ma réponse pour éviter cela ).
Il convient de noter que votre problème ne s'applique qu'aux démarrages de printemps. Pour une application MVC à ressort non-Boot, cette solution devrait être bien.
Nous avons un projet de démarrage de printemps (1.1.4) sur JBoss EAP 6.2 (l'exigence de mon client ...)
J'ai trouvé une solution pour l'exécuter sur JBoss EAP 6.2.0 GA et gardez la capacité de fonctionner sur Apache Tomcat 7 conteneur. P>
Initialement mon projet exécuté en mode embarqué, j'ai donc besoin de créer et de modifier certains fichiers pour exécuter sur les conteneurs. P>
Pour exécuter sur Tomcat en tant qu'application racine que j'ai créée. context.xml:
/src/main/webapp/meta-inf/context.xml strong> p> à exécuter sur jboss EAP 6.2.0 ga en tant qu'application racine que j'ai créée jboss-web.xml:
/src/main/webapp/web-inf/jboss-web.xml strong> p> J'ai créé une classe, N'oubliez pas appeler super.onstartup (conteneur); strong> P> changements dans i couronne jboss EAP 6.2.0 GA en mode autonome: strong> p> si vous < Strong> Exécuter sur Tomcat strong>, alors n'oubliez pas de définir -dspring.profiles.acfiles.active = local p> Comme je vois que le paramètre Server.port sera ignoré lorsque vous exécutez sur le conteneur. p> p>
Appeler nouveau annotationconfigwebwebapplicationContext () code> dans le
SpringbootservletInitializer code> Sous-classe cause tout
@Component code> des objets annotés à instanciation deux fois (voir ma réponse pour éviter cela ).
@ Thiago-Pereira, je dirais respectueusement que cette réponse n'est pas appropriée pour la question posée. La question concerne le printemps java config, pas la chaussure de printemps. Je crois que ma réponse résout toujours le mieux la question par rapport à Spring Java Config. Je l'ai également mis à jour pour aborder les problèmes avec JSP. Stackoverflow.com/a/22395946/428628
selon les réponses fournies par Michael R et István Pat³, la cartographie de servlet à JBoss doit être "/ *", pas "/". Cependant, les autres solutions causent à deux reprises les objets annotés @Component. Ce qui suit résout la double initialisation par première appelant super.onstartup code>, puis ajoutant un autre mappage pour le servlet Dispatcher:
public class WebApplicationInitializerImpl implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
super.onStartup(container);
Dynamic registration = (Dynamic) container.getServletRegistration(EmbeddedWebApplicationContext.DISPATCHER_SERVLET_NAME);
registration.setLoadOnStartup(1);
registration.addMapping("/*");
}
}
J'utilisais comme je l'ai lu dans ce fil, j'avais besoin de: P> Modifiez la cartographie du Dispatcherservlet en "/ *" au lieu de "/" (en ajoutant un @bean de type SerblistrationBean avec un servlet nommé "Disternersservlet") P>
BlockQquote> Dans cette URL, j'ai trouvé la solution de code: Ajouter mappage de servlet au servlet Dispatch P>
À l'époque, cela a été écrit, je n'utilisais pas de démarrage de printemps. Aujourd'hui, tout semble plus facile avec ça :)
Ouais, la botte de printemps est géniale! Je lance et testais mon application localement dans une tomcat intégrée, mais lorsque je suis déployé à JBoss, j'ai eu le même problème. Ainsi, après avoir lu votre fil et trouvez une solution décidée de poster une autre réponse pour aider les autres gars si avait les mêmes problèmes à l'avenir;)
Ouais c'est génial, en fait, ce fil aide les gars qui sont et qui n'utilisent pas de démarrage de printemps ... bien que sa demande vivement recommande d'aller pour la démarrage :)
J'utilise JBoss EAP 6.4. Je traversais le fil.
Je voudrais ajouter cela après avoir changé de mappage pour DispatcherVlet de "/" à "/ *". Le JSP de votre projet pourrait ne pas traiter correctement. Je soupçonne que depuis "/ *" avoir plus de priorité sur "/*.jsp", JSPSServillet pourrait ne pas obtenir la demande de traitement de la JSP et du JSP ne sera pas traitée correctement. Dans mon cas, la source de JSP apparaît sur le navigateur comme texte. P>
J'ai résolu ce problème en définissant JSP en tant que servlet en web.xml comme mentionné ci-dessous. Après cela, les choses fonctionnaient bien pour moi :) p> p> J'ai passé beaucoup de temps à ce sujet, pourrait aider quelqu'un :)) P> < / p>
Je pense que vous avez cloué le raisonnement pour la raison pour laquelle JSPS ne fonctionne plus. Toutefois, si vous avez déjà démissionné pour configurer le déploiement via web.xml, vous pouvez également configurer également le Disternerservlet là-bas. Cet insecte Tomcat applique uniquement l'enregistrement programmatique, pas l'enregistrement web.xml. J'aurai plus de détails sur ma réponse.
J'utilise Spring Boot 1.3.1 et JBoss EAP 6.4. Et j'ai trouvé avec cela dans votre projet, vous pouvez ajouter à SRC / Main / Ressources / Application.Proporties Cette ligne:
server.servlet-path=/*
J'ai eu des problèmes similaires avec JBoss 6.4.0. et démarrage à ressort 1.3 En combinaison avec des tuiles 3. Après avoir installé le correctif JBoss JBoss-eap-6.4.6-Patch.zip. Les problèmes ont été résolus. P>
Après la correction, je n'avais pas besoin d'utiliser le serveur de configuration.Servlet-chemin = / * p>
Trouver intéressant. Je parie que le patch inclut le correctif Tomcat de V7.0.14. Malheureusement, c'est un peu douloureux pour patcher EAP 6.4 et JBoss n'offre pas une version corrigée sous une forme librement téléchargeable.
Que se passe-t-il lorsque vous essayez d'accéder à la console d'administration ATHTTP: //127.0.0.1: 9990?
Avez-vous des gestionnaires pour
/ code>?
@Nambari, fonctionne bien, apparaît la console d'administration JBoss ...
@Sotirios, j'ai celui-ci: Public Void AddviewControls (ViewControllerregistry Registry) {registry.addviewController ("/"). SetViewName ("Index"); }
Et avez-vous un
/web-inf/pages/index.jsp code>?
@Sotiriosdelimanolis Yeap
Comme je l'ai dit, tout fonctionne bien sur la jetée ou Tomcat ... Toutes les applications que je développées sont en cours d'exécution sur la jetée ou la tomcat, mais maintenant je dois maintenant déployer sur JBoss et idk ce qui se passe ...
@Nambari souhaiterait une réponse 404 ou tout simplement pas de réponse?
@Nambari, mais c'est ... Démarrage Coyote http / 1.1 sur http-localhost-127.0.0.1-8080
@ user1596111: Je cherchais l'entrée dans le journal que vous avez posté, je pourrais négliger. Dans la console d'administration, voyez-vous cette application? Pouvez-vous vérifier les outils de développeur de navigateur et les informations de recherche de réseau de recherche?
@Sotiriosdelimanolis: je soupçonnais, d'autres services (Jeté / tomcat) en cours d'exécution sur 8080, mais l'application n'est pas là, de toute façon, il semble de ne pas se connecter à ce que JBoss écoute sur 8080. S'il n'y a pas de serveur Web exécutant 8080, vous obtiendrez cet écran de navigateur avec pas de réponse.
@NAMBARI Oui, je suis d'accord, mais mon serveur fonctionne sur 8080.
@Sotiriosdelimanolis Oui, ma demande est en déploiement et activée. En regardant l'activité du réseau, cela me donne 404 non trouvé.
@Nambari ce que vous voulez dire avec "Aucun serveur Web en cours d'exécution"? JBoss est-il seul pas assez?
@ user1596111: C'était un commentaire pour Sotirios.