Si utiliza la configuración basada en el esquema XML de Spring, configure en el contexto de Spring de esta manera:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd">
...
<jee:jndi-lookup id="dbDataSource"
jndi-name="jdbc/DatabaseName"
expected-type="javax.sql.DataSource" />
Alternativamente, configure usando una configuración de bean simple como esta:
<bean id="DatabaseName" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/DatabaseName"/>
</bean>
Puede declarar el recurso JNDI en server.xml de tomcat usando algo como esto:
<GlobalNamingResources>
<Resource name="jdbc/DatabaseName"
auth="Container"
type="javax.sql.DataSource"
username="dbUser"
password="dbPassword"
url="jdbc:postgresql://localhost/dbname"
driverClassName="org.postgresql.Driver"
initialSize="20"
maxWaitMillis="15000"
maxTotal="75"
maxIdle="20"
maxAge="7200000"
testOnBorrow="true"
validationQuery="select 1"
/>
</GlobalNamingResources>
Y haga referencia al recurso JNDI de Tomcat's web context.xml de esta manera:
<ResourceLink name="jdbc/DatabaseName"
global="jdbc/DatabaseName"
type="javax.sql.DataSource"/>
Documentación de referencia:
Editar: esta respuesta se ha actualizado para Tomcat 8 y Spring 4. Se han realizado algunos cambios en el nombre de la propiedad para la configuración predeterminada del grupo de recursos de datos de Tomcat .
Con el mecanismo SpringConfig de Spring, puede hacerlo así:
fuente
Suponiendo que tiene una definición de fuente de datos "sampleDS" dentro de su configuración de tomcat, puede agregar las siguientes líneas a su
applicationContext.xml
para acceder a la fuente de datos utilizando JNDI.Debe definir el espacio de nombres y la ubicación del esquema para el
jee
prefijo usando:fuente
Documentación: C.2.3.1
<jee:jndi-lookup/>
(simple)Ejemplo:
Solo necesita averiguar a qué nombre JNDI ha vinculado su servidor de aplicaciones el origen de datos. Esto es completamente específico del servidor, consulte los documentos en su servidor para averiguar cómo.
Recuerde declarar el
jee
espacio de nombres en la parte superior de su archivo de beans, como se describe en C.2.3 El esquema jee .fuente
Otra característica: en lugar de server.xml, puede agregar la etiqueta "Resource" en
your_application / META-INF / Context.xml (de acuerdo con los documentos de tomcat ) de esta manera:
fuente
De acuerdo con la página de instrucciones de Apache Tomcat 7 JNDI Datasource, debe haber una configuración de recursos en web.xml:
Funciona para mi
fuente
En tu clase de primavera, puedes inyectar un frijol anotado como
y agrega esto en su context.xml
Puede declarar el recurso JNDI en tomcat's server.xml usando
volver a context.xml de spring agregar esto
si, como este ejemplo, está inyectando una conexión a la base de datos, asegúrese de que el jar de MySQL esté presente en el directorio tomcat lib, de lo contrario, tomcat no podrá crear el grupo de conexiones de la base de datos MySQL.
fuente
Encontré esta solución muy útil de una manera limpia para eliminar completamente la configuración xml.
Compruebe esta configuración de base de datos utilizando JNDI y Spring Framework. http://www.unotions.com/design/how-to-create-oracleothersql-db-configuration-using-spring-and-maven/
En este artículo, explica lo fácil que es crear una configuración de db basada en la configuración de la base de datos jndi (db / test). una vez que haya terminado con la configuración, todos los repositorios de db se cargan usando este jndi. Encontré útil. Si @Pierre tiene problemas con esto, avíseme. Es una solución completa para escribir la configuración de db.
fuente