Tengo problemas con un campo anotado como @Resource
en un Spring Bean. Lo que tengo:Spring @Resource Handling
un campo, con método de selección, anotado @Resource
@Resource
private URL someUrl;
public void setSomeUrl(URL someUrl) {
this.someUrl = someUrl;
}
Un <env-entry>
etiqueta en mi descriptor de despliegue (web.xml)
<env-entry>
<env-entry-name>someUrl</env-entry-name>
<env-entry-type>java.net.URL</env-entry-type>
<env-entry-value>http://somedomain.net/some/path</env-entry-value>
</env-entry>
La aplicación no puede iniciar con una BeanCreationException
, lo que no espero porque no necesariamente quiero que la primavera inyecte un grano administrado por Spring. Quiero que Spring procese @Resource
y recupere el recurso JNDI.
Esto es Spring 2.5.6SEC03 y el bean en sí tiene la anotación @Service
para el autoenlace en otras instancias @Component
. El contenedor del servlet en este caso es Tomcat 7, pero finalmente se implementará en Weblogic 10, por lo que si bien me gustaría que una solución funcione en ambos, Weblogic es imprescindible.
¿Estoy haciendo un uso indebido de esta función en Spring 2.5? ¿En general? ¿Hay algo que me falta? Algo que malinterpreto sobre JNDI? Toda la ayuda es apreciada. Gracias.
Genial, ¡esto funcionó por completo! También descubrí que puede obligar a CommonAnnotationBeanPostProcessor a realizar una búsqueda JNDI al sprcificar un valor para "mappedName" en el cuerpo de la anotación. Dicho todo esto, y después del trabajo puesto en esto, aprendí que nuestro proceso estándar de implementación corporativa no admitirá descriptores de implementación múltiples. Se supone que debo usar el mismo en todas las implementaciones. Entonces, este enfoque no funcionará. –