Tengo un problema al configurar mi configuración para JNDI con Spring. Revisé las otras publicaciones pero no pude resolver mi problema. Estoy usando Tomcat 6 como mi contenedor. Según tengo entendido, necesito configurar un recurso en el servidor. Así que en mi archivo server.xml
tengo esto:Spring Jndi Configuration, Server.xml
<GlobalNamingResources>
<Resource auth="Container" driverClassName="org.postgresql.Driver"
maxActive="100" maxIdle="5" maxWait="10000"
minEvictableIdleTimeMillis="60000" name="jdbc/myTomcatPool"
password="password" testOnBorrow="true" testWhileIdle="true"
timeBetweenEvictionRunsMillis="10000" type="javax.sql.DataSource"
url="jdbc:postgresql://localhost:5432/postgis" username="postgres"
validationQuery="SELECT 1"/>
</GlobalNamingResources>
Tengo el siguiente en mi spring-context.xml
(que está en la ruta de clase):
<jee:jndi-lookup id="geoCodeData" jndi-name="java:comp/env/jdbc/myTomcatPool" />
<bean id="geoCodeService" class="com.sample.SampleImpl">
<property name="dataSource" ref="geoCodeData"/>
</bean>
Entonces tengo esto en el archivo META-INF/context.xml
:
<Context path="/myApp" reloadable="true" cacheMaxSize="51200"
cacheObjectMaxSize="2560">
<ResourceLink global="jdbc/myTomcatPool" name="jdbc/myTomcatPool"
type="javax.sql.DataSource"/>
</Context>
Mi servidor se inicia sin errores.
Cuando trato de ejecutar la siguiente prueba (que funcionaba antes de agregar el código JNDI):
public class Test {
public static void main(String[] args) {
ApplicationContext ctx =
new ClassPathXmlApplicationContext("spring-context.xml");
}
}
me sale el siguiente error:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'geoCodeData': Invocation of init method failed;
nested exception is javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
Es mi configuración incorrecta o es el Cómo estoy tratando de ejecutar la prueba incorrecta?
Eso tiene sentido. Pensé que podría tener que ver solo con el caso de prueba. Voy a intentar esto. Voy a marcar esto como la respuesta. Gracias de nuevo. Una última pregunta, ¿agregaría el proyecto-datasource.xml a mi lista de contextConfigLocation en mi web.xml y usaría project-datasource-test.xml en mis clases de prueba como mi ejemplo? – blong824
¡Qué solución tan inteligente! Por cierto, puede consultar el archivo de fuente de datos recién creado en su configuración de aplicación xml usando: ' ' y los similares. ¡Aclamaciones! –
acdcjunior