context.xml-Metawerx Java wiki

context.xml

contextul.fișierul xml este un fișier opțional care conține o etichetă <Context> (fragment de Context) pentru o singură aplicație web Tomcat. Aceasta poate fi utilizată pentru a defini anumite comportamente pentru aplicația dvs., resursele JNDI și alte setări.

contextul.fișier xml a fost introdus în Tomcat 5, pentru a elimina setările de Context de pe server.fișier xml.

fragmentul Context poate fi încorporat în server.xml, plasat în folderul < CATALINA > /conf sau plasat în interiorul fiecărei aplicații în folderul META-INF într-un fișier numit context.xml. Metoda META-INF este preferată, deoarece aceasta înseamnă că modificările aduse contextului nu necesită repornirea Tomcat. Puteți reporni aplicația modificând web.xml atunci când reîncărcarea automată este activă sau reîncărcarea manuală cu managerul Tomcat.

contextul tău.fișierul xml trebuie instalat în folderul META-INF al aplicației dvs., ca META-INF/context.xml. Dosarul META-INF aparține la același nivel ca WEB-INF (nu în interiorul acestuia).

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

în mod surprinzător, nu mulți dezvoltatori folosesc încă acest fișier în aplicațiile lor, deși este foarte util. Trecerea la utilizarea unui context.fișier xml elimină toate dependențele de pe server.xml, ceea ce face aplicația mult mai portabil și mai ușor de implementat.

exemplu de context.fișier xml

acest fișier oferă o resursă JNDI reprezentând o sursă de date MySQL și un domeniu de securitate.

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

accesarea sursei de date din exemplul de mai sus

sursa de date din exemplul de mai sus poate fi accesată în codul java cu următoarea linie:

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

baze de date suplimentare pot fi adăugate prin adăugarea unui element suplimentar<resursă > la context.fișier xml, cu un nume diferit (de exemplu: jdbc/customerDatabase).

accesarea domeniului de securitate din exemplul de mai sus

domeniul de securitate din exemplul de mai sus necesită configurare suplimentară în web.xml. Pentru mai multe detalii, consultați articolul securizarea site-ului Dvs. cu Container Managed Security.

Note

  • câteva exemple arată atributele path și docBase în eticheta< Context >. Acestea sunt necesare dacă eticheta context este în server.xml, dar în context.xml acestea sunt opționale și adesea cauzează doar probleme de implementare (de exemplu: dacă aplicația este implementată cu un nume diferit). Este mai ușor (și mai bine) să le lăsați afară, făcând numele contextului automat. În acest caz, utilizați doar <Context> fără atribute, ca în exemplul de mai sus.
  • setările implicite pentru toate contextele sunt definite în context.xml.fișier implicit în folderul < CATALINA> / conf

Gotchas / depanare / depanare probleme JNDI DataSource

  • probleme JNDI sunt dificil de depanare, deoarece nu există nici o ieșire de depanare, deci, dacă aveți probleme, verificați această listă
  • cu o sursă de date JNDI, asigurați-vă că pentru a include driverul JDBC în <CATALINA/common/lib sau nu se va încărca
  • dacă sursa de date JNDI nu funcționează, asigurați-vă că detaliile conexiunii sunt corecte conectând un mod diferit (de ex: telnet sau clientul de comandă mysql folosind aceleași detalii)
  • deployXML trebuie să fie setat la fals (implicit) în<gazdă > intrare în server.xml sau contextul.fișierul xml va fi ignorat
  • Tomcat 5.5 și Tomcat 6 copiați contextul.fișier xml pentru a < CATALINA > /conf/Standalone după prima implementare de succes, și nu eliminați sau actualizați fișierul cu excepția cazului în care cererea este nedeplasate. Dacă vă schimbați contextul.fișier xml și pentru a găsi că încă nu funcționează, sau modificările sunt ignorate, șterge orice fișiere în <CATALINA>/conf/folderul Standalone pentru a se asigura că acestea sunt redistribuite corect. Tomcat 7 nu are această problemă, cu excepția cazului în copyXML este setat fals (implicit este adevărat. Site-urile găzduite la Metawerx nu au această problemă cu nicio versiune datorită configurării noastre personalizate.

a se vedea, de asemenea,

  • web.xml Ghid de referință
  • Tomcat 6 context.documentație xml
  • <env-intrare > etichetă în web.xml, care poate fi utilizat dacă specificați doar valori simple de text
  • exemplu JNDI DBCP pentru MySQL 4.X
  • exemplu JNDI DBCP pentru MySQL 5.X
  • exemplu JNDI DBCP pentru SQL Server 7 și 2000
  • exemplu JNDI Dbcp pentru SQL Server 2005
  • exemplu JNDI Dbcp pentru PostGreSQL
  • exemplu JNDI Dbcp pentru FireBird
  • exemplu JNDI Dbcp pentru Oracle
  • accesarea unei surse de date JNDI cu JSTL din JSP
  • accesarea unei surse de date JNDI din Java
  • securizarea site-ului dvs. cu securitate gestionată de containere

Leave a Reply