cadre.xml-Metawerx Wiki Java

contexte.xml

Le contexte.le fichier xml est un fichier facultatif qui contient une balise < Context > (Fragment de contexte) pour une seule application Web Tomcat. Cela peut être utilisé pour définir certains comportements pour votre application, les ressources JNDI et d’autres paramètres.

Le contexte.le fichier xml a été introduit dans Tomcat 5, pour supprimer les paramètres de contexte du serveur.fichier xml.

Le fragment de contexte peut être intégré au serveur.xml, placé dans le dossier < CATALINA >/conf, ou placé à l’intérieur de chaque application dans le dossier META-INF dans un fichier appelé context.XML. La méthode META-INF est préférée car cela signifie que les modifications du contexte ne nécessitent pas le redémarrage de Tomcat. Vous pouvez redémarrer votre application en modifiant web.xml lorsque le rechargement automatique est actif ou le rechargement manuel avec le gestionnaire Tomcat.

Votre contexte.le fichier xml doit être installé dans le dossier META-INF de votre application, en tant que META-INF/context.XML. Le dossier META-INF appartient au même niveau que WEB-INF (pas à l’intérieur).

index.jsp/WEB-INF web.xml /lib myjar.jar /classes myclass.class/META-INF context.xml

Étonnamment, peu de développeurs utilisent encore ce fichier dans leurs applications, bien qu’il soit très utile. Passage à l’utilisation d’un contexte.le fichier xml supprime toutes les dépendances du serveur.xml, rendant l’application beaucoup plus portable et plus facile à déployer.

Contexte d’exemple.fichier xml

Ce fichier fournit une ressource JNDI représentant une source de données MySQL et un domaine de sécurité.

<?xml version="1.0" encoding="UTF-8"?><Context> <!-- Specify a JDBC datasource --> <Resource name="jdbc/mydatabase" auth="Container" type="javax.sql.DataSource" username="YOUR_USERNAME" password="YOUR_PASSWORD" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://mysql.metawerx.net:3306/YOUR_DATABASE_NAME?autoReconnect=true" validationQuery="select 1" maxActive="10" maxIdle="4"/> <!-- Specify the security realm and location of the users file <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="/tomcat/webapps/ROOT/WEB-INF/users.xml" /> --></Context>

Accès à la source de données dans l’exemple ci-dessus

La source de données dans l’exemple ci-dessus est accessible dans votre code java avec la ligne suivante:

// Get DataSourceContext ctx = new InitialContext();DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mydatabase");// Get Connection and StatementConnection c = ds.getConnection();Statement s = c.createStatement();

Des bases de données supplémentaires peuvent être ajoutées en ajoutant un élément <Resource > supplémentaire au contexte.fichier xml, avec un nom différent (par exemple : jdbc/customerDatabase).

Accéder au domaine de sécurité dans l’exemple ci-dessus

Le domaine de sécurité dans l’exemple ci-dessus nécessite une configuration supplémentaire dans web.XML. Pour plus de détails, consultez l’article Sécuriser votre site avec la sécurité gérée par les conteneurs.

Notes

  • Quelques exemples montrent les attributs path et docBase dans la balise < Context >. Ceux-ci sont requis si la balise de contexte se trouve dans le serveur.xml, mais en contexte.xml ils sont facultatifs et provoquent souvent des problèmes de déploiement (par exemple : si l’application est déployée avec un nom différent). Il est plus facile (et mieux) de les laisser de côté, ce qui rend le nom du contexte automatique. Dans ce cas, utilisez simplement < Context > sans attributs, comme dans l’exemple ci-dessus.
  • Les paramètres par défaut pour tous les contextes sont définis dans le contexte.XML.fichier par défaut dans le dossier < CATALINA >/conf

Problèmes de source de données JNDI

  • Les problèmes JNDI sont difficiles à déboguer, car il n’y a pas de sortie de débogage, donc si vous avez des problèmes, vérifiez cette liste
  • Avec une source de données JNDI, assurez-vous d’inclure le pilote JDBC dans < CATALINA/common/lib ou il ne se chargera pas
  • Si une source de données JNDI ne fonctionne pas, assurez-vous que les détails de connexion sont corrects en connectant d’une manière différente (par exemple: telnet ou le client de commande mysql utilisant les mêmes détails)
  • deployXML doit être défini sur false (la valeur par défaut) dans l’entrée < Host > du serveur.xml, ou le contexte.le fichier xml sera ignoré
  • Tomcat 5.5 et Tomcat 6 copient le contexte.fichier xml à < CATALINA >/conf/Standalone après le premier déploiement réussi, et ne supprimez ni ne mettez à jour le fichier que si l’application n’est pas déployée. Si vous changez de contexte.fichier xml et trouvez qu’il ne fonctionne toujours pas, ou vos modifications sont ignorées, supprimez tous les fichiers dans le dossier < CATALINA >/conf/Standalone pour vous assurer qu’ils sont correctement redéployés. Tomcat 7 n’a pas ce problème, sauf si copyXML est défini sur false (la valeur par défaut est true. Les sites hébergés chez Metawerx n’ont ce problème avec aucune version en raison de notre configuration personnalisée.

Voir aussi

  • web.Guide de référence xml
  • Contexte Tomcat 6.documentation xml
  • < balise env-entry > dans le web.xml, qui peut être utilisé si vous spécifiez uniquement des valeurs de texte simples
  • Exemple JNDI DBCP pour MySQL 4.x
  • Exemple JNDI DBCP pour MySQL 5.x
  • Exemple JNDI DBCP pour SQL Server 7 et 2000
  • Exemple JNDI DBCP pour SQL Server 2005
  • Exemple JNDI DBCP pour PostgreSQL
  • Exemple JNDI DBCP pour FireBird
  • Exemple JNDI DBCP pour Oracle
  • Accès à une source de données JNDI avec JSTL à partir de JSP
  • Accès à une source de données JNDI à partir de Java
  • Sécurisation de votre site avec une sécurité gérée par conteneur

Leave a Reply