2014-10-07 83 views
5

我想知道如何在Spring控制器中使用註釋自動裝配JNDI資源。Spring中的Autowire JNDI資源

目前我可以檢索使用

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

有什麼辦法,我可以做註解使用同樣的事情的資源?像 @Resource(name =「my/service」)?

+0

目前還不清楚你正在尋找實現的目標。您可以使用@Autowired在Spring上下文中自動裝入任何bean。如果你想使用一個標識符,那麼你的bean id就是爲了這個目的。但是,我不確定爲什麼要自動裝入JNDI工廠bean。 – Angad 2014-10-07 23:55:00

+0

你解決了這個問題嗎?如果是的話,你是如何解決它的? – Xstian 2014-10-13 13:51:10

回答

2

我使用此配置注入JNDI資源

Spring配置

<?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> 

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

爲什麼downvote沒有評論? -.-」 – Xstian 2016-12-21 08:11:27

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; 
    } 
}