Источник данных Spring Boot не создает JNDI - PullRequest
0 голосов
/ 27 августа 2018

Application.yml -

spring:
  profiles: desktop

  datasource:
    db:
      url : jdbc:xxxx
      username : xxxx
      password : xxxx
      driver-class-name: oracle.jdbc.OracleDriver
      jndi-name: jndiName
      tomcat:
        max-wait : 20000
        max-active : 5
        max-idle : 2
        min-idle : 2

Application.java -

@SpringBootApplication
public class Application implements CommandLineRunner {
    private static final Logger logger = LogManager.getLogger(Application.class);

    @Autowired
    private YAMLConfig myConfig;

    public static void main(String[] args) {
        logger.info("Running application");
        SpringApplication.run(Application.class, args);
    }

}

DBConfig.java -

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "dbEntityManagerFactory", transactionManagerRef = "dbTransactionManager", basePackages = { "com.et.repo" })
public class DBConfig {

    @Primary
    @Bean(name = "ldbDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.db")
    public DataSource dbDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "dbEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean dbEntityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("dbDataSource") DataSource dataSource) {
        return builder.dataSource(dataSource).packages("com.et.entity").persistenceUnit("db").build();
    }

    @Primary
    @Bean(name = "dbTransactionManager")
    public PlatformTransactionManager dbTransactionManager(@Qualifier("dbEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
    }

}

Я ожидал, что эта конфигурация создаст JNDI с именем "jndiName", но, похоже, не создает его. Этот код ничего не показывает -

context = new InitialContext();
log.info("Listing JNDI's");
NamingEnumeration<NameClassPair> list = context.list("");
while (list.hasMore()) {
  log.info("Name: " + list.next().getName());
}

Чего мне не хватает? Я где-то читал, что именование не включено по умолчанию во встроенном Tomcat. Может ли это быть? Как включить его в этой конфигурации?

...