8
votes

Printemps javaconfig et tomcat 8

J'ai une application Web de printemps 4 (webapp-module.war) fonctionnant et fonctionnant localement dans Eclipse à l'aide de Java 8, Tomcat 8 et Javaconfig (no web.xml):

 Entrez la description de l'image ici < / a>

mais quand je déploie sur tomcat 8 (même version que j'utilise localement dans Eclipse) sur un serveur Ubuntu distant, je reçois:

 Entrez la description de l'image ici

I hôte et port vérifié qui sont corrects. Il n'y a pas d'erreur dans le journal (/var/lib/tomcat8/logs/catalina.out )<<p>Le journal d'accès Contient: xxx < / Pré>

où xx.xxx.xxx.xx est l'adresse IP de ma machine locale à partir de laquelle j'essaie d'accéder à l'application Web dans mon navigateur.

J'ai examiné: Spring java config: tomcat Déployer sans web.xml mais il ne fournit pas vraiment de solution.

Détails sur mon projet ci-dessous:

sources

 Entrez la description de l'image ici

config.java xxx

webinaire.java xxx

hellocontroller.java xxx


9 commentaires

Vérifiez si un coup est à l'intérieur localhost_access_log. *. TXT Inside Tomcat Logs Dossier


Je ne sais pas ce que vous voulez dire mais j'ai mis à jour la question avec le contenu du journal d'accès le plus récent sur le serveur après avoir essayé d'accéder à l'application Web de mon navigateur. Ne montre aucune erreur cependant


Ils pourraient ressembler à des questions idiotes, mais le fichier de guerre nommé WebApp-Module? Je suppose que vous l'exécutez également dans une instance Tomcat alors qu'à Eclipse, les versions Tomcat correspondent-elles?


Oui à toutes vos questions, voir la poste mise à jour. Étrange qu'aucune erreur ne soit signalée nulle part depuis qu'il ne parvient clairement pas à y accéder sur le serveur de mon navigateur


Je pense que chaque ligne de journal ACESS affiche une erreur 404. Si vous mettez un mannequin test.jsp dans webapp le voyez-vous dans /webapp-module/test.jsp ? et sinon, dans /test.jsp ?


Pourriez-vous confirmer quelle est la configuration de la racine de contexte pour cette application. Vous pouvez l'obtenir à partir du fichier application.xml


Pouvez-vous vérifier l'application Tomcat Manager ( / manager ) sur le serveur distant? Si oui, votre application, / webapp-module , apparaît là-bas comme ayant été déployé? Voir Stackoverflow.com/a/38794114/639520 si vous ne pouvez pas accéder au / manager


Comment avez-vous construit le pot? Tous les fichiers sont-ils dedans? Essayez de l'ouvrir comme ZIP pour vérifier le contenu.


Pouvez-vous publier votre fichier journal d'application? Cela pourrait être que vous avez des erreurs au démarrage afin que l'application n'a jamais commencé.


3 Réponses :


-1
votes

Ajouter finalName code> comme root code> dans votre pom.xml code>. Cela créera root.war fichier dans votre dossier cible.

    <build>
        <plugins>
<!--All plugins are here -->
        </plugins>
        <finalName>ROOT</finalName>
    </build>


2 commentaires

J'ai essayé l'exemple Websystique. Il fonctionne sur la machine de développement Tomcat / Win 10, mais travaille sur Tomcat / RHL Server. Les deux ont TC 8.0.18. PS: Notre politique d'organisation n'autorise pas l'application Manager pour des raisons de sécurité, de sorte que ce n'est pas une option. :(


@ZENDU pour le déploiement du serveur, l'application Manager n'est pas autorisée. Avez-vous essayé avec root.war pour serveur? Vérifiez s'il vous plaît. Si une erreur existe, veuillez partager le fichier journal.



4
votes

désolé précédemment, j'étais trop hâtif

Il semble que le contexte de printemps n'est pas du tout chargé. P>

Je suppose que le problème est dans cette pièce de code: p>

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        // Create the 'root' Spring application context
        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
        rootContext.scan("com.spring");
        rootContext.setConfigLocations(new String[]{"com.spring.config.WebAppContextConfig", "com.spring.config.AppConfig"});
        // Manages the lifecycle of the root application context
        servletContext.addListener(new ContextLoaderListener(rootContext));

        // Declare dispatcher servlet. Handles requests into the application
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher",
                new DispatcherServlet(rootContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

    }

}


2 commentaires

Pourriez-vous inclure le contexte.xml dans l'exemple?


@ sonance207 je n'ai aucun fichier context.xml dans cet exemple ... je suis désolé



0
votes

s'avère que je ne faisais rien de mal dans le code. Tomcat Server est configuré pour utiliser la conformité Strict Servlet. XXX

Ce paramètre affecte plusieurs autres propriétés ( voir ici ). L'un d'entre eux est "l'attribut ressourceNlyServlets de tout élément de contexte". Définition de cette valeur sur "JSP" dans le contexte de l'application.xml a résolu le problème.

Liste des noms séparés par des virgules des noms de servlet (tels qu'ils sont utilisés dans /web-inf/web.xml) qui attendent une ressource à présenter. Assure que les fichiers d'accueil associés à des servlets qui s'attendent à ce que la ressource soit présente (telle que le servlet JSP) ne soit pas utilisée lorsqu'il n'y a pas de ressource présente. Cela empêche les problèmes causés par la clarification du mappage de fichiers de bienvenue à la section 10.10 de la spécification Servlet 3.0. Si l'org.apache.catalina.strict_servlet_compliance System La propriété est définie sur True, la valeur par défaut de cet attribut sera la chaîne vide, sinon la valeur par défaut sera JSP.


0 commentaires