2014-10-07 22 views
5

Vorrei sapere come eseguire il salvataggio della risorsa JNDI nel controller Spring utilizzando l'annotazione.Risorsa Autowire JNDI in primavera

Attualmente posso recuperare la risorsa utilizzando

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
<property name="jndiName" value="my/service"/> 
</bean> 

C'è un modo, posso fare la stessa cosa con l'annotazione? Qualcosa come @Resource (name = "my/service")?

+0

Non è chiaro cosa si sta cercando di raggiungere. Puoi autowire qualsiasi bean nel tuo contesto Spring usando @Autowired. Se si desidera utilizzare un identificatore, l'ID del bean serve a tale scopo. Tuttavia, non sono sicuro del motivo per cui si desidera autorizzare il bean factory JNDI. – Angad

+0

hai risolto questo problema? se sì, come lo hai risolto? – Xstian

risposta

2

Io uso questa configurazione per iniettare una risorsa JNDI

primavera config

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    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/context 
      http://www.springframework.org/schema/context/spring-context.xsd 
      http://www.springframework.org/schema/jee 
      http://www.springframework.org/schema/jee/spring-jee.xsd"> 

    <jee:jndi-lookup id="destination" jndi-name="java:/queue/inbound/jndiname" /> 

</beans> 

Classe

@Autowired 
private javax.jms.Destination destination; 
+0

Perché un downvote senza commento? -.-' – Xstian

6
@Configuration 
public class Configuration { 
    @Bean(destroyMethod = "close") 
    public DataSource dataSource() { 
     JndiDataSourceLookup dsLookup = new JndiDataSourceLookup(); 
     dsLookup.setResourceRef(false); 
     DataSource dataSource = dsLookup.getDataSource("my/service");  
     return dataSource; 
    } 
}