Ho problemi con un campo annotato come @Resource
in un bean Spring. Quello che ho:Spring @Resource Handling
Un campo, con metodo setter, annotato @Resource
@Resource
private URL someUrl;
public void setSomeUrl(URL someUrl) {
this.someUrl = someUrl;
}
Un <env-entry>
tag nel mio descrittore di deployment (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>
L'applicazione non viene avviato con un BeanCreationException
, che non mi aspetto perché non voglio necessariamente che molla inietti un bean gestito da Spring. Voglio che Spring elabori @Resource
e recuperi la risorsa JNDI.
Questo è Spring 2.5.6SEC03 e il bean stesso è annotato @Service
per l'autowiring in altre istanze @Component
. In questo caso, il contenitore servlet è Tomcat 7, ma verrà in definitiva distribuito su Weblogic 10, quindi mentre preferisco che una soluzione funzioni su entrambi, Weblogic è il must-have.
Sto abusando di questa funzione in Spring 2.5? In generale? C'è un po 'che mi manca? Qualcosa che ho frainteso su JNDI? Tutto l'aiuto è apprezzato. Grazie.
Grande, questo ha funzionato perfettamente! Ho anche scoperto che è possibile forzare CommonAnnotationBeanPostProcessor per eseguire una ricerca JNDI estraendo un valore per "mappedName" nel corpo dell'annotazione. Detto questo, e dopo il lavoro svolto, ho appreso che il nostro processo di implementazione aziendale standard non supporterà più descrittori di implementazione. Dovrei usare lo stesso in tutte le distribuzioni. Quindi, questo approccio non funzionerà. –