Spring启动 - 2个JNDI配置

时间:2017-03-28 19:16:55

标签: spring spring-boot jndi

enter image description here

发布我当前的配置

2 个答案:

答案 0 :(得分:1)

@Configuration
public class Config {
    @Value("${spring.datasource.primary.jndi-name}")
    private String primaryJndiName;

    @Value("${spring.datasource.secondary.jndi-name}")
    private String secondaryJndiName;

    @Primary
    @Bean(destroyMethod = "") // destroy method is disabled for Weblogic update app ability
    public DataSource primaryDs() {
        JndiDataSourceLookup lookup = new JndiDataSourceLookup();
        return lookup.getDataSource(primaryJndiName);
    }

    @Bean(destroyMethod = "") // destroy method is disabled for Weblogic update app ability
    public DataSource secondaryDs() {
        JndiDataSourceLookup lookup = new JndiDataSourceLookup();
        return lookup.getDataSource(secondaryJndiName);
   }
}

答案 1 :(得分:0)

我实现了这种方式并且正在运行

您可以将jndi值放在一个属性文件中,然后在bean defination.xml中加载该属性文件

jndi.properties

#JNDI property for job repository
job.repository.db.connection=jdbc/pgDB
#JNDI property for application
application.db.connection=jdbc/db2Conn

豆defination.xml

<bean id="propertyPlaceholderConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath*:/properties/jndi.properties</value>
            </list>
        </property>
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    </bean>

<bean id="jobRepoDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="${job.repository.db.connection}" />
    </bean>

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="${application.db.connection}" />
    </bean>