contexto.xml-Metawerx Java Wiki

contexto.xml

El contexto.el archivo xml es un archivo opcional que contiene una etiqueta< Context > (Fragmento de contexto) para una sola aplicación web Tomcat. Esto se puede usar para definir ciertos comportamientos para su aplicación, recursos JNDI y otras configuraciones.

El contexto.el archivo xml se introdujo en Tomcat 5, para eliminar la configuración de contexto del servidor.archivo xml.

El fragmento de contexto se puede incrustar en el servidor.xml, colocado en la carpeta<CATALINA > /conf, o colocado dentro de cada aplicación en la carpeta META-INF en un archivo llamado contexto.XML. Se prefiere el método META-INF, ya que esto significa que los cambios en el contexto no requieren que se reinicie Tomcat. Puede reiniciar la aplicación modificando web.xml cuando la recarga automática está activa, o la recarga manual con Tomcat Manager.

Su contexto.el archivo xml debe instalarse en la carpeta META-INF de su aplicación, como META-INF / context.XML. La carpeta META-INF pertenece al mismo nivel que WEB-INF (no dentro de ella).

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

Sorprendentemente, todavía no muchos desarrolladores usan este archivo dentro de sus aplicaciones, aunque es muy útil. Cambiar al uso de un contexto.el archivo xml elimina todas las dependencias del servidor.xml, lo que hace que la aplicación sea mucho más portátil y fácil de implementar.

Contexto de ejemplo.archivo xml

Este archivo proporciona un recurso JNDI que representa una fuente de datos MySQL y un ámbito de seguridad.

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

Acceder al origen de datos del ejemplo anterior

Se puede acceder al origen de datos del ejemplo anterior en su código java con la siguiente línea:

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

Se pueden agregar bases de datos adicionales agregando un elemento adicional < Resource> al contexto.archivo xml, con un nombre diferente (por ejemplo: jdbc / customerDatabase).

Acceder al reino de seguridad en el ejemplo anterior

El reino de seguridad en el ejemplo anterior requiere una configuración adicional en la web.XML. Para obtener más información, consulte el artículo Protección de su sitio con seguridad administrada por contenedores.

Notas

  • Algunos ejemplos muestran los atributos path y docBase en la etiqueta < Context>. Estos son necesarios si la etiqueta de contexto está en el servidor.xml, pero en contexto.xml son opcionales y, a menudo, solo causan problemas de implementación (por ejemplo, si la aplicación se implementa con un nombre diferente). Es más fácil (y mejor) omitirlos, haciendo que el nombre del contexto sea automático. En este caso, simplemente use < Contexto> sin atributos, como en el ejemplo anterior.
  • La configuración predeterminada para todos los contextos se define en el contexto.XML.archivo predeterminado en la carpeta < CATALINA> /conf

Problemas de fuentes de datos JNDI, Solución de problemas y depuración

  • Los problemas JNDI son difíciles de depurar, ya que no hay salida de depuración, por lo que si tiene problemas, consulte esta lista
  • Con una fuente de datos JNDI, asegúrese de incluir el controlador JDBC en <CATALINA / common / lib o no cargará
  • Si una fuente de datos JNDI no funciona, asegúrese de que los detalles de conexión sean correctos conectando de una manera diferente (por ejemplo: telnet o el cliente de comandos mysql con los mismos detalles)
  • deployXML debe estar configurado en false (el valor predeterminado) en la entrada <Host> en server.xml, o el contexto.el archivo xml se ignorará
  • Tomcat 5.5 y Tomcat 6 copian el contexto.archivo xml a < CATALINA> /conf/Standalone después de la primera implementación correcta, y no elimine ni actualice el archivo a menos que la aplicación no esté desplegada. Si cambias de contexto.si el archivo xml sigue sin funcionar, o se ignoran los cambios, elimine los archivos de la carpeta<CATALINA > /conf/Standalone para asegurarse de que se redistribuyan correctamente. Tomcat 7 no tiene este problema, a menos que copyXML esté configurado como false (el valor predeterminado es true. Los sitios alojados en Metawerx no tienen este problema con ninguna versión debido a nuestra configuración personalizada.

Ver también

  • web.guía de referencia xml
  • Contexto Tomcat 6.documentación xml
  • <etiqueta env-entry> en la web.xml, que se puede usar si solo especifica valores de texto simples
  • JNDI DBCP Ejemplo para MySQL 4.x
  • Ejemplo JNDI DBCP para MySQL 5.x
  • Ejemplo de JNDI DBCP para SQL Server 7 y 2000
  • Ejemplo de JNDI DBCP para SQL Server 2005
  • Ejemplo de JNDI DBCP para PostgreSQL
  • Ejemplo de JNDI DBCP para FireBird
  • Ejemplo de JNDI DBCP para Oracle
  • Acceder a una fuente de datos JNDI con JSTL desde JSP
  • Acceder a una fuente de datos JNDI desde Java
  • Proteger su sitio con Seguridad Administrada por contenedores

Leave a Reply