sammanhang.xml-Metawerx Java Wiki
sammanhang.xml
sammanhanget.xml-fil är en valfri fil som innehåller en<Context > – tagg (Kontextfragment) för en enda Tomcat-webbapplikation. Detta kan användas för att definiera vissa beteenden för din applikation, JNDI-resurser och andra inställningar.
sammanhanget.xml-fil infördes i Tomcat 5, för att ta bort Kontextinställningar från servern.xml-fil.
Kontextfragmentet kan bäddas in i servern.xml, placeras i mappen <CATALINA>/conf, eller placeras inuti varje applikation i META-INF-mappen i en fil som heter context.xml. META-INF-metoden föredras eftersom det betyder att ändringar i sammanhanget inte kräver att Tomcat startas om. Du kan starta om programmet genom att ändra web.xml när automatisk omlastning är aktiv, eller omlastning manuellt med Tomcat Manager.
ditt sammanhang.xml-fil ska installeras i META-INF-mappen i din ansökan, som META-INF / context.xml. META-INF-mappen hör hemma på samma nivå som WEB-INF (inte inuti den).
index.jsp/WEB-INF web.xml /lib myjar.jar /classes myclass.class/META-INF context.xml
överraskande, inte många utvecklare använder den här filen i sina program ännu, även om det är mycket användbart. Byta till användning av ett sammanhang.xml-fil tar bort alla beroenden från servern.xml, vilket gör applikationen mycket mer bärbar och lättare att distribuera.
exempel sammanhang.xml-fil
den här filen tillhandahåller en JNDI-resurs som representerar en MySQL-datakälla och ett säkerhetsområde.
<?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>
åtkomst till datakällan i exemplet ovan
datakällan i exemplet ovan kan nås i din java-kod med följande rad:
// 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();
ytterligare databaser kan läggas till genom att lägga till ett extra <resurs> – element i sammanhanget.xml-fil, med ett annat namn (t.ex.: jdbc/customerDatabase).
åtkomst till säkerhetsområdet i exemplet ovan
säkerhetsområdet i exemplet ovan kräver ytterligare inställning i web.xml. Mer information finns i artikeln säkra din webbplats med Container Managed Security.
anteckningar
- några exempel visar path-och docBase-attribut i taggen <Context>. Dessa krävs om kontexttaggen finns i server.xml, men i sammanhang.xml de är valfria och orsakar ofta bara distributionsproblem (t.ex. om applikationen distribueras med ett annat namn). Det är lättare (och bättre) att lämna dem, vilket gör kontextnamnet automatiskt. I det här fallet använder du bara <Context> utan attribut, som i exemplet ovan.
- standardinställningar för alla sammanhang definieras i sammanhanget.xml.standardfil i mappen<CATALINA >/conf
Gotchas / Felsökning / Felsökning JNDI DataSource frågor
- JNDI frågor är svåra att felsöka, eftersom det inte finns någon debug utgång, så om du har problem, kolla den här listan
- med en JNDI datasource, se till att inkludera JDBC drivrutinen i <CATALINA/common/lib eller det kommer inte att ladda
- om en JNDI DataSource JNDI Datasource fungerar inte, se till att anslutningsinformationen är korrekt genom att ansluta ett annat sätt (t. ex.: telnet eller mysql-kommandoklienten med samma detaljer)
- deployXML måste vara inställd på false (standard) i posten <Host> i server.xml eller sammanhanget.xml-fil kommer att ignoreras
- Tomcat 5.5 och Tomcat 6 kopiera sammanhanget.xml-fil till <CATALINA> /conf / Standalone efter den första framgångsrika distributionen, och ta inte bort eller uppdatera filen om inte programmet är undeployed. Om du ändrar ditt sammanhang.xml-fil och hitta det fortfarande inte fungerar, eller dina ändringar ignoreras, ta bort alla filer i mappen <CATALINA>/conf/Standalone för att säkerställa att de omfördelas korrekt. Tomcat 7 har inte detta problem, såvida inte copyXML är inställt falskt (standard är sant. Webbplatser som finns på Metawerx har inte detta problem med någon version på grund av vår anpassade installation.
Se även
- webb.xml – Referensguide
- Tomcat 6 sammanhang.xml-dokumentation
- <env-post> tagg i webben.xml, som kan användas om du bara anger enkla textvärden
- JNDI DBCP exempel för MySQL 4.x
- JNDI DBCP exempel för MySQL 5.X
- JNDI DBCP exempel för SQL Server 7 och 2000
- JNDI DBCP exempel för SQL Server 2005
- JNDI DBCP exempel för PostGreSQL
- JNDI DBCP exempel för FireBird
- JNDI DBCP exempel för Oracle
- åtkomst till en JNDI-datakälla med JSTL från JSP
- åtkomst till en JNDI-datakälla från Java
- säkra din webbplats med containerhanterad säkerhet
Leave a Reply