Peut DropWizard servir actifs de l'extérieur le fichier jar?
En regardant la documentation, il semble que DropWizard est seulement capable de se servir du contenu statique vivant dans src/main/resources. J'aimerais garder mes fichiers statiques dans un répertoire séparé à l'extérieur du fichier jar. Est-ce possible? Ou la plupart des gens utilise nginx/Apache pour leur contenu statique?
OriginalL'auteur zslayton | 2013-01-08
Vous devez vous connecter pour publier un commentaire.
oui, il peut, à l'aide de ce plugin - https://github.com/bazaarvoice/dropwizard-configurable-assets-bundle
Malheureusement, ce plug-in est âgé de, et ne supporte jusqu'à 0,7. C'est peut être juste une question de changer pour le plugin à utiliser la plus récente Dropwizard (io.dropwizard) classpath, mais je n'ai pas essayé. Tous les autres out-of-the-box réponse?
Oui, suivez les étapes décrites dans ma réponse ci-dessous.
OriginalL'auteur LiorH
De travail hors de Marcello Nuccio réponse, il a fallu quand même moi la meilleure partie de ma journée pour y arriver, voici donc ce que j'ai fait en un peu plus de détails.
Disons que j'ai cette structure de répertoire:
Alors c'est ce que vous avez à faire pour le faire fonctionner:
1) Dans votre dropwizard la classe d'Application, ajouter une nouvelle AssetsBundle. Si vous voulez que votre actif à partir d'une URL différente, modifiez le deuxième paramètre.
2) Ajouter le document à la racine de votre classpath en configurant le maven-jar-plugin comme celui-ci. (Mettre en place le "./staticdocs/" dans la forme correcte m'a pris du temps. Les chemins de classe sont impitoyables.)
3) Cette étape est entièrement facultative. Si vous voulez servir votre Maillot de REPOS Ressources d'un autre chemin de la racine (par exemple, "app"), ajoutez les lignes suivantes à votre configuration YML:
Vous pouvez maintenant accéder à votre contenu statique comme ceci, par exemple:
maven-jar-plugin
en mettant leassets
dossier dans lesrc/main/resources
.Mais que de package les actifs dans le pot, n'est-ce pas? Le point de l'ensemble de cette question est de servir les actifs de l'EXTÉRIEUR du pot.
vous êtes de droite. Le point important est: mettez vos biens où que vous le souhaitez, mais assurez-vous qu'ils sont trouvés dans le classpath. C'est la seule condition.
Pouvez confirmer cela fonctionne avec dropwizard v 1.0.0
OriginalL'auteur craddack
La manuel de l'utilisateur dit:
c'est à dire les fichiers sont chargés de ressources du classpath. Ensuite, vous avez seulement besoin de définir correctement le classpath pour le service.
Avec la configuration par défaut, cela signifie que vous devez appeler la racine du document
assets
, et de mettre le dossier parent de la racine du document dans le classpath. Alors, par exemple,assets/foo.html
sera disponible àLe gros avantage de l'unique fichier jar est la facilité de déploiement: il suffit de copier un seul fichier et tout est mis à jour et garanti pour fonctionner comme sur le serveur de test. Souvent, le plus grand inconvénient est la nécessité de télécharger un gros fichier sur le serveur de production. Pour contourner ce problème, j'utilise
rsync
pour mettre à jour une copie intermédiaire de la dernière déployé fichier. C'est très rapide et fiable.pour clarifier: je ne dis pas de mettre tous les éléments d'actif dans le pot. Comme je l'ai dit dans ma réponse, il vous suffit d'ajouter le dossier des actifs du classpath. En d'autres termes: mettre le dossier assets où vous le souhaitez, la seule exigence est qu'il se trouve dans le classpath.
Je vois. Le Dropwizard de documentation recommande de créer ombragée pots, sens tout sur le classpath est dans la ombragée bocal dans de nombreuses applications. Mais vous pouvez aussi prendre le contrôle plus fin de la classpath.
OriginalL'auteur Marcello Nuccio
La grande majorité des sites web qui servent de contenu statique faire par l'intermédiaire d'un serveur web dédié, ou, à plus grande échelle, un CA.
Parfois, vous pouvez déployer une application comme une unité autonome complet avec tous les éléments d'actif qui est l'endroit où Dropwizard.
Il est possible d'obtenir Dropwizard pour servir d'actifs provenant de l'extérieur du classpath, mais la façon la plus simple de le faire est d'écrire votre propre actif d'extrémité qui lit à partir de l'extérieur configuré chemin d'accès au fichier.
OriginalL'auteur Gary Rowe
Il y a un jour
dropwizard-configurable-assets-bundle
maintenu à l'officiel de dropwizard-faisceaux. Vous pouvez le trouver sur github https://github.com/dropwizard-bundles/dropwizard-configurable-assets-bundle. Version actuelle prend en charge dropwizard 0.9.2Cela peut être utilisé pour servir les fichiers statiques de l'arbitraire chemin du système de fichiers.
OriginalL'auteur Chathurika Sandarenu
Pour compléter craddack réponse: Correcte, vous pouvez utiliser le AssetsBundle aussi longtemps que vous ajoutez les actifs de votre classpath.
Si vous utilisez gradle et oneJar, vous pouvez ajouter un répertoire dans le chemin de la oneJar tâche:
voir https://github.com/rholder/gradle-one-jar
OriginalL'auteur user1146522