Besoin de comprendre le descripteur et la structure de WAR - Projet Flex dans WAR
-
28-10-2019 - |
Question
J'essaie de comprendre pourquoi je ne parviens pas à lancer un SWF à partir de l'URL après avoir lancé mvm jetty: run sur mon projet.
Le projet a été construit avec succès et a produit un Falcon-WAR-0.0.1-SNAPSHOT.war dans le répertoire cible de maven. Dans ce fichier se trouvent les fichiers suivants - et inclut le fichier .swf compilé à partir du projet Flex.
Mon web.xml est très simple et contient le code suivant:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Falcon Flights</display-name>
<welcome-file-list>
<welcome-file>Falcon-Flights.swf</welcome-file>
</welcome-file-list>
</web-app>
La racine de contexte de mon application est la même que l'ID d'artefact de WAR, c'est donc FALCON-WAR.
Lorsque je lance mvn jetty: run, j'obtiens l'impression suivante sur la console:
Cependant, lorsque j'essaye d'accéder à http:// localhost: 8080 / FALCON-WAR sur mon navigateur, j'obtiens ce qui suit, lorsque je prévois de lancer le fichier .swf à partir de la définition web.xml.
Quelqu'un pourrait-il m'aider à comprendre ce que je fais mal? Cela pourrait me permettre de mieux comprendre comment les conteneurs Web interprètent les structures .war - mais c'est ma première visite au développement d'applications Web et cela pourrait faire avec un coup de pouce!
Merci d'avance.
La solution 2
J'ai finalement utilisé la jetée mvn: run= objectif explosé.Cet objectif pointe vers le répertoire de construction du fichier WAR (le premier instantané de l'image à partir du texte de la question) et le chemin du contexte était alors valide.
Je ne sais toujours pas pourquoi la jetée: run ne fonctionnait pas correctement - mais je suis opérationnel.
Merci à Flextras pour l'aide ...
Autres conseils
Je ne connais pas grand-chose à Jetty;mais ce que vous voyez dans votre "sortie" ressemble à une liste de répertoires de serveur Web.Y a-t-il autre chose répertorié dans le répertoire?Êtes-vous sûr que la racine Web est pointée vers le répertoire que vous affichez dans votre premier instantané?[Si oui, où se trouvent le répertoire meta-inf et le fichier Falcon-Flights?Que faire si vous modifiez votre URL comme suit:
http:// localhost: 8080 / FALCON-WAR / Falcon-Flights.swf
Cela vous donne-t-il une erreur 404 ou se charge-t-il correctement?
En effet, jetty:run
fonctionne à partir de la source de votre projet Maven.Bien que vous ayez montré une liste de répertoires de la cible , il n'est pas évident de savoir comment votre SWF est arrivé là-bas - je suppose que c'est une dépendance de votre module WAR, plutôt que contenue dans src/main/webapp
ou similaire.
jetty:run-exploded
construit d'abord le répertoire cible, puis exécute l'application à partir de là.Par conséquent, cela fonctionnerait mieux.
Une autre option est jetty:run-war
, qui construit le WAR et exécute l'application à partir de celui-ci.Cependant, cela sera plus lent que jetty:run-exploded
, qui nécessite une étape de construction en moins.
Voir http://docs.codehaus.org/display/JETTY/Maven+ Jetty + Plugin pour plus de détails.