2017-10-12 17 views
0

Je n'arrive pas à me connecter aux extrémités de mon application Java déployée sur AWS Elastic Beanstalk. L'application gère un certain nombre de requêtes POST et est destinée à servir une application mobile, de sorte que le serveur lui-même n'a pas de fichiers statiques. J'ai utilisé le framework Spark Java, qui trouve les points de terminaison correctement lorsque je teste sur Localhost, mais pas sur AWS Elastic Beanstalk.Déploiement de l'application Spark-Java (Gradle, Maven) sur AWS Elastic Beanstalk

Je peux déployer la guerre éclatée sur EB (exécutant le serveur Web Tomcat), mais toutes les demandes que j'envoie renvoient une erreur 404 Erreur: ressource introuvable. Spark java fonctionne sur le serveur Jetty intégré, donc pour fonctionner sur Tomcat, j'ai fait comme suggéré dans leur documentation (http://sparkjava.com/documentation#other-web-server): J'ai implémenté l'interface SparkApplication, en déplaçant tous les endpoints de main() vers init() et j'ai ajouté le code suggéré dans le fichier web.xml. Le .war téléchargé contient META-INF avec web.xml, lib (avec les librairies gradle) et classes (avec ma sortie compilée). Encore une fois, pas de fichiers statiques.

Plus de détails:

J'utilise le plug-in Elastic Beanstalk IntelliJ (Ultimate) pour déployer et à ce stade je l'ai testé que ce ne diffère pas de déployer un .war directement sur le tableau de bord EB. J'ai ouvert à tous les ports et connexions dans les paramètres de sécurité pour éliminer tout problème de connectivité. Je crois que c'est juste une question de la servlet ne pas cartographier les URL. Aucune suggestion?

Répondre

0

Exécutez-le comme une guerre sur la boîte locale pour vous assurer que vous avez le droit de câblage. Je l'ai fait récemment - Spark Java on Beanstalk, mais je pense que je l'ai déployé comme un pot. Beanstalk supporte juste jar java droit (fait face à nginx). Je pense que lorsque je me suis déployé comme un pot, j'ai dû faire quelque chose pour spécifier le port d'écoute de 4567 que Spark Java utilise par défaut. J'ai également lancé Spark Java comme une guerre dans Tomcat, mais je ne pense pas sur AWS - je crois que dans ce cas, j'ai déployé comme un pot.

+0

Ok, laissez-moi essayer le .jar –

+0

C'est une option avec AWS et plus naturelle pour Spark Java. J'ai lancé Spark sous Tomcat comme une guerre - une chose à garder à l'esprit est que Tomcat donnera un contexte qui est le nom de guerre que vous devez ajouter à l'URL avant vos chemins API REST. Donc si vous avez blah.war sur 8090, localhost: 8090/blah/myrestpath, pas localhost: 8090/myrestpath. –

+0

Merci! Il s'est avéré être un problème de port. –

0

Résolu! J'avais du code dans la classe principale qui changeait le port. Bien que cela ait été nécessaire pour s'exécuter sur l'environnement local, il était en conflit avec AWS, qui attribue automatiquement le port.