J'essaie d'ajouter un dossier webapp avec des pages HTML statiques à JAXRSArchive avec Wildfly Swarm. Mais malheureusement, cela n'a pas réussi. Comment puis je faire ça?Wildfly Swarm JAXRSArchive ajouter le répertoire webapp
Répondre
Copiez tous vos fichiers statiques dans src/main/webapp
et vous ajoutez principale méthode de l'appel staticContenet
comme suit
public static void main(String... args) throws Exception {
Swarm container = new Swarm();
JAXRSArchive jaxrsDeployment = ShrinkWrap.create(JAXRSArchive.class);
jaxrsDeployment.addAsLibrary(container.createDefaultDeployment());
jaxrsDeployment.addAllDependencies();
jaxrsDeployment.staticContent();
container.start();
container.deploy(jaxrsDeployment);
Pouvez-vous expliquer pourquoi vous avez besoin d'un principal personnalisé()?
L'option préférée est de ne pas utiliser de main() principale personnalisée, ou si vous devez avoir un main() principal personnalisé pour ne pas personnaliser le déploiement.
Vous pouvez simplement appeler Swarm.deploy() et il crée un déploiement par défaut, si votre projet est la guerre de type, fonctionne très bien
J'aime l'approche basée sur Java. Et cette personnalisation du déploiement est utilisée dans la plupart des exemples d'essaims de mouches sauvages (par exemple, pour ajouter de la fantaisie). Pour moi, ça ressemble à une meilleure approche, mais ce n'est pas bien documenté. – Nikita
La plupart des exemples et de la documentation personnalisent le déploiement, ce ne sera donc pas beaucoup plus facile. – Nikita
Si vous avez vraiment besoin d'un main() principal parce que vous avez besoin de personnaliser le WAR, utilisez Swarm.createDefaultDeployment() pour obtenir une archive équivalente à l'empaquetage WAR Maven plutôt que de tout construire à partir de rien – Ken
Cette question est dépassée. Mais je poste cette solution pour ceux qui rencontrent le même problème. Le problème peut se produire si vous utilisez JAX-RS
sans spécifier @ApplicationPath
.
Par défaut, JAX-RS écoute la racine /
de votre application et remplace le mappage standard.
Dans ce cas, vous devez ajouter la configuration comme ceci:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/api")
public class JaxRSConfiguration extends Application {
}
Ce préfixera tous vos points d'extrémité avec JAX-RS
/api
et vous permettent de travailler avec le contenu statique.
Avez-vous résolu le problème? J'ai le même problème. –