Notre application J2EE est déployée sur JBoss et parfois sur OC4J. Puis-je savoir lequel est utilisé? J'espère qu'il existe une méthode qui retourne les informations du conteneur à l'exécution.Déterminer à quel serveur d'applications notre application est-elle déployée?
Répondre
Probablement JMX est ce que vous allez devoir utiliser. Les deux conteneurs exposent probablement des détails sur eux-mêmes en tant que MBeans. Voici quelques Oracle documentation on JMX et JBoss documentation.
La chose la plus simple à laquelle je puisse penser est de regarder les propriétés du système au moment de l'exécution, car les deux serveurs vont presque certainement définir les leurs. Par exemple, JBoss 4 définit la propriété système jboss.server.dir
. Vérifiez si cette propriété existe, et si c'est le cas, vous pouvez supposer que vous utilisez ce serveur. OC4J aura quelque chose de similaire.
Alternativement, essayez de charger de manière réfléchie une classe qui fait partie de l'infrastructure du serveur (par exemple org.jboss.Version
dans JBoss 4). S'il existe, vous savez sur quel serveur vous êtes.
Vous pouvez trouver ceci par ServletContext#getServerInfo()
.
Curieux ... Je pense que cela retournera le nom du conteneur de servlet, plutôt que le serveur de l'application, mais cela peut suffire. – skaffman
Dépend du serveur d'applications. Par exemple, JBoss 4.2.x et les versions plus récentes renvoient "JBoss", mais les anciennes versions utilisaient "Apache Tomcat". – BalusC
Passer à System.getProperty("jboss.home.dir")
Quel est le problème à résoudre? –