Nous avons une bibliothèque de base que nous incluons en JAR avec toutes nos applications Web pour maximiser la réutilisation du code. Nous souhaitons maintenant inclure certaines fonctionnalités dans cette bibliothèque principale via une bibliothèque tierce (iText). L'ajout de l'iText JAR à la bibliothèque principale ne fonctionne pas car les fichiers JAR imbriqués ne sont pas détectés par le chargeur de classe. Nous ne voulons pas ajouter le fichier iText JAR à chaque application Web, car les applications Web n'utilisent pas iText. Ils utilisent une bibliothèque qui utilise iText. Sémantique? Peut-être, mais en ajoutant des fichiers JAR tiers à une application Web, une bibliothèque utilisée peut accéder aux classes du fichier JAR. Est-ce qu'il me manque une pratique simple qui résout ce problème ou est-ce que les chargeurs de classes personnalisées et jar-fusion sont les meilleures approches?Meilleure pratique pour inclure des jar tiers dans une bibliothèque de base?
Répondre
Un EAR serait probablement la chose appropriée pour cela. Rien de tel qu'une autre couche d'indirection.
Bienvenue dans JAR hell, un problème continu dans le développement Java, et l'une des principales raisons pour lesquelles OSGi prend de l'ampleur. Les approches «désordonnées» sont courantes dans l'industrie jusqu'à très récemment, et les coûts des approches propres peuvent largement compenser le coût de l'approche rapide et polluante. Mais pour répondre à votre question, la plupart des serveurs d'applications ont un endroit où vous pouvez placer des JAR qui sont accessibles à travers toutes les applications Web. Tomcat, par exemple, a le répertoire commun/lib. Vous voulez probablement mettre votre JAR là.
Si vous distribuez des guerres, vous devrez placer le pot iText à l'intérieur de la guerre.
Si vous distribuez des épis, vous pouvez placer tous les pots communs à plusieurs guerres à l'intérieur de la racine de l'oreille.
Si jar est commun à de nombreuses oreilles, il existe une option pour le placer dans le répertoire de la bibliothèque du serveur Web. Cette dernière option n'est pas recommandable à mon avis, car vous pourriez utiliser différentes versions de jar dans chaque oreille, produisant ainsi des conflits, et placer jar dans la racine du serveur n'est généralement pas un mécanisme de distribution standard. Enfin, je recommande d'utiliser Maven ou un outil similaire pour gérer vos dépendances et automatiser vos constructions Cela peut être d'une grande aide lorsque les dépendances commencent à augmenter en nombre.
- 1. Javascript Inclure la meilleure pratique d'étiquette dans une application Rails
- 2. Quelle est la meilleure pratique pour compter des valeurs égales dans une base de données?
- 3. Quelle est la meilleure pratique pour inclure des fichiers actionscript externes dans l'application flexible
- 4. Comment emballer des fichiers JAR tiers dans un fichier EJB?
- 5. Référencement de pots JAXB - meilleure pratique
- 6. Meilleure pratique pour profiler une application SharePoint
- 7. Meilleure pratique pour exposer des services Web
- 8. Comment inclure des rowcounts filtrés provenant de deux autres tables dans une requête d'un tiers?
- 9. Application de suivi des prix: Meilleure pratique
- 10. Meilleure pratique des délégués d'application
- 11. Meilleure pratique pour créer des fichiers Stub avec Ant
- 12. Meilleure pratique pour Java IPC
- 13. Meilleure pratique pour l'idiome de référence scopé?
- 14. Existe-t-il une meilleure pratique pour la commande de colonne de base de données?
- 15. Meilleure pratique pour supprimer les appels de base de données des classes MVC Controller
- 16. Modification de tags dans une application Web. Meilleure pratique
- 17. Meilleure pratique de JQuery pour accélérer l'animation
- 18. Meilleure pratique pour un grand service WCF?
- 19. Meilleure pratique de validation de données dans une application d'entreprise
- 20. Meilleure pratique avec désactivation des fonctionnalités SharePoint
- 21. Meilleure pratique pour réinitialiser un index de base de données une fois par an?
- 22. Meilleure pratique pour interroger une table de recherche
- 23. Meilleure pratique pour gérer les données des utilisateurs anonymes
- 24. Meilleure pratique de gestion des variantes de projet dans Git?
- 25. Meilleure pratique pour le suivi hiérarchique des ressources MySQL
- 26. m2eclipse Indexation de fichiers JAR tiers provenant du référentiel Maven
- 27. Meilleure pratique pour initialiser les variables membres?
- 28. Meilleure pratique: HTTP Handlers ou ActionFilters pour une performance optimale
- 29. Meilleure pratique de test SQL
- 30. Nommage des clés dans les fichiers de ressources Meilleure pratique