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. Может ли это быть? Как включить его в этой конфигурации?