2017-09-29 2 views
11

Un serveur d'applications Java EE 7, et plus particulièrement un conteneur Servlet 3.1, devrait nous permettre de déployer un fichier WAR contenant une application Web. Et un fichier WAR est essentiellement un fichier JAR avec un descripteur de déploiement (web.xml) et deux autres éléments.La modularité de Java 9 est-elle également utilisée pour les fichiers WAR?

D'autre part, Java 9 introduit une notion de fichier JAR modulaire, qui est, avec un JAR descripteur de module (module-info.class) qui fait un module en termes de projet Jigsaw. Par conséquent, un fichier WAR peut-il également contenir un descripteur de module et créer un «fichier WAR modulaire»?

Existe-t-il déjà des serveurs d'applications capables d'accepter le déploiement d'un "fichier WAR modulaire"?

En général, quel est l'avenir des conteneurs de servlets et des fichiers WAR en termes de modularité Java 9?

Répondre

8

Actuellement, il n'y a aucun lien entre les modules Java EE et java 9 (jigsaw). Les prochaines versions de Java EE pourraient introduire un comportement défini par la spécification sur la façon d'interagir avec les modules de puzzle.

À ce stade, tous les serveurs d'applications s'exécutent en mode «classpath» lorsqu'ils s'exécutent sur JDK9, ce qui signifie en pratique qu'ils n'utilisent pas de puzzle. Dans la plupart des cas, l'introduction de module-info dans votre déploiement war ne peut que causer des problèmes de déploiement car JDK peut essayer de le charger différemment des autres parties du serveur d'applications. Ou il ne pouvait même pas faire la différence car la plupart des serveurs d'application ont une logique personnalisée pour charger les classes &.Certains serveurs d'applications implémentent déjà une sorte de modularité comme OSGi (GlassFish, Liberty) ou jboss-modules (Wildfly) Mais pour le moment, jigsaw a encore quelques limitations pour pouvoir utiliser de tels systèmes modulaires en haut. Bref, tant qu'il n'y a pas de spécification EE (probablement 9+) mise à jour pour décrire comment les déploiements d'EE doivent s'exécuter sur le moteur d'exécution Jigsaw, il n'y a pas de façon "officielle" de ce comportement. Jusqu'à ce moment-là, chaque serveur d'application peut implémenter un support personnalisé, mais il ne sera pas standard.

4

Alors, peut un fichier WAR contient ainsi un descripteur de module et faire un « fichier WAR modulaire »

Oui, il peut. Comme il pourrait maintenant être essentiellement Modular JAR file avec des descripteurs de déploiement comme web.xml.


En général, quel est l'avenir des conteneurs de servlets et des fichiers WAR en termes de modularité Java 9?

De l'aspect Dynamic configuration du système de module,

Pour Java EE la plate-forme, en particulier, l'objectif est de permettre à un standard de fichier de guerre modulaire future dans lequel les composants dans un fichier de guerre peuvent être des modules de développeur.


Y at-il déjà des serveurs d'applications capables d'accepter le déploiement d'un « fichier WAR modulaire »?

Bien que je suis actuellement pas au courant d'un tel outil existant ou les serveurs, mais une capacité à create Modular Jar est déjà ajouté à JMOD et JAR outils qui offrent une vue futuriste de l'intégration des serveurs d'applications et système de module.

+2

Actuellement, aucun serveur d'applications ne peut encore exécuter des déploiements modulaires. La partie de configuration dynamique de Jigsaw est là pour permettre de telles choses pour les serveurs d'application, mais elle est sévèrement limitée dans ce qu'elle peut supporter; ce qui est également une raison pour laquelle les serveurs d'applications ne sont pas encore là avec leur soutien. – ctomc

+0

@ctomc Merci. Bon à apprendre [cela] (https://stackoverflow.com/a/46907106/1746118). – nullpointer