context.XML-Metawerx Java Wiki

context.xml

de context.xml-bestand is een optioneel bestand dat een <Context> tag (Context Fragment) bevat voor een enkele Tomcat-webtoepassing. Dit kan worden gebruikt om bepaalde gedragingen te definiëren voor uw toepassing, JNDI-bronnen en andere instellingen.

de context.xml-bestand werd geà ntroduceerd in Tomcat 5, om Context-instellingen van de server te verwijderen.xml-bestand.

het Contextfragment kan in de server worden ingebed.xml, geplaatst in de <CATALINA> / conf map, of geplaatst in elke toepassing in de META-INF map in een bestand genaamd context.xml. De META-INF methode heeft de voorkeur omdat dit betekent dat veranderingen in de context niet vereisen dat Tomcat opnieuw wordt gestart. U kunt uw toepassing opnieuw opstarten door Web te wijzigen.xml wanneer automatisch herladen actief is, of handmatig herladen met de Tomcat Manager.

uw context.xml bestand moet worden geïnstalleerd in de META-INF map van uw toepassing, als META-INF/context.xml. De META-INF map hoort op hetzelfde niveau als WEB-INF (niet erin).

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

verrassend genoeg gebruiken nog niet veel ontwikkelaars dit bestand binnen hun applicaties, hoewel het erg nuttig is. Overschakelen naar het gebruik van een context.xml-bestand verwijdert alle afhankelijkheden van de server.xml, waardoor de applicatie veel draagbaarder en gemakkelijker te implementeren.

Voorbeeldcontext.xml-bestand

dit bestand biedt een JNDI-bron die een MySQL-datasource vertegenwoordigt, en een security realm.

<?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>

toegang tot de gegevensbron in het bovenstaande voorbeeld

de gegevensbron in het bovenstaande voorbeeld kan worden benaderd in uw java-code met de volgende regel:

// 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();

extra databases kunnen worden toegevoegd door een extra <Resource> element aan de context toe te voegen.xml bestand, met een andere naam (bijvoorbeeld: jdbc / customerDatabase).

toegang tot de Security Realm in het bovenstaande voorbeeld

de security realm in het bovenstaande voorbeeld vereist verdere installatie in web.xml. Zie voor meer informatie het artikel Uw site beveiligen met Container Managed Security.

opmerkingen

  • enkele voorbeelden tonen pad-en docBase-attributen in de<Context > tag. Deze zijn vereist als de context tag zich in server bevindt.xml, maar in context.xml ze zijn optioneel, en vaak alleen de implementatie problemen veroorzaken (bijvoorbeeld: als de toepassing wordt ingezet met een andere naam). Het is makkelijker (en beter) om ze weg te laten, waardoor de contextnaam automatisch wordt. Gebruik in dit geval gewoon < Context> zonder attributen, zoals in het bovenstaande voorbeeld.
  • de standaardinstellingen voor alle contexten zijn gedefinieerd in de context.xml.standaard bestand in de <CATALINA>/conf map

Valkuilen / problemen Oplossen / Foutopsporing JNDI-Gegevensbron problemen

  • JNDI problemen zijn moeilijk op te lossen, als er geen debug output, dus als u problemen hebt, controleer deze lijst
  • Met een JNDI-gegevensbron, zorg ervoor dat u het JDBC-stuurprogramma in <CATALINA/common/lib of het zal niet laden
  • Als een JNDI-gegevensbron niet werkt, controleert u de verbinding details zijn juist door het aansluiten op een andere manier (bv.: telnet of de MySQL-opdrachtclient met dezelfde details)
  • deployXML moet op false (de standaard) worden ingesteld in de<Host > ingang in de server.xml, of de context.xml-bestand wordt genegeerd
  • Tomcat 5.5 en Tomcat 6 kopieer de context.xml-bestand naar <CATALINA>/conf / Standalone na de eerste succesvolle implementatie, en het bestand niet verwijderen of bijwerken, tenzij de toepassing is undeployed. Als je je context verandert.XML-bestand en vind dat het nog steeds niet werkt, of uw wijzigingen worden genegeerd, verwijder alle bestanden in de map<CATALINA >/conf/Standalone om er zeker van te zijn dat ze correct worden heringedeeld. Tomcat 7 heeft dit probleem niet, tenzij copyXML false is ingesteld (standaard is true. Sites gehost bij Metawerx hebben dit probleem met geen enkele versie als gevolg van onze aangepaste setup.

zie ook

  • web.XML Reference Guide
  • Tomcat 6 context.XML-documentatie
  • <env-entry> tag in web.xml, die gebruikt kan worden als u alleen eenvoudige tekstwaarden
  • opgeeft JNDI Dbcp voorbeeld voor MySQL 4.X
  • JNDI Dbcp voorbeeld voor MySQL 5.x
  • JNDI DBCP Voorbeeld voor SQL Server 7 en 2000
  • JNDI DBCP Voorbeeld voor SQL Server 2005
  • JNDI DBCP Voorbeeld voor PostGreSQL
  • JNDI DBCP Voorbeeld voor FireBird
  • JNDI DBCP Voorbeeld voor Oracle
  • Toegang tot een JNDI-Gegevensbron met JSTL van JSP
  • Toegang tot een JNDI-Gegevensbron vanuit Java
  • Het beveiligen van uw website met Container Managed Security

Leave a Reply