Rumah >Java >javaTutorial >Pandangan pantas JNDI (Nama Java dan Antara Muka Direktori)
Ringkasnya, pengaturcara boleh menggunakan antara muka JNDI yang sama untuk menanyakan perkara berikut
Pengenalan ringkas ada di sini.
Sumber pelayan aplikasi diletakkan di bawah "java:comp/env" awalan. Andaikan bahawa sumber data dihidupkan
java:/comp/env/jdbc/db1
Untuk mendapatkan sumber data itu
javax.naming.Context initialContext = new javax.naming.InitialContext(); javax.naming.Context subContext = (javax.naming.Context) initialContext.lookup("java:comp/env"); DataSource dataSource = (DataSource) subContext.lookup("jdbc/db1");
Atau anda boleh mendapatkan contoh terus dengan menyediakan laluan penuh
javax.naming.Context initialContext = new javax.naming.InitialContext(); DataSource dataSource = (DataSource) initialContext.lookup("java:comp/env/jdbc/db1");
Hanya tambah satu baris ke dalam application.properties
spring.datasource.jndi-name=java:/comp/env/jdbc/db1
Kacang berkaitan dicipta oleh org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
@Configuration(proxyBeanMethods = false) @AutoConfigureBefore({ XADataSourceAutoConfiguration.class, DataSourceAutoConfiguration.class }) @ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }) @ConditionalOnProperty(prefix = "spring.datasource", name = "jndi-name") @EnableConfigurationProperties(DataSourceProperties.class) public class JndiDataSourceAutoConfiguration { @Bean(destroyMethod = "") @ConditionalOnMissingBean public DataSource dataSource(DataSourceProperties properties, ApplicationContext context) { JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup(); DataSource dataSource = dataSourceLookup.getDataSource(properties.getJndiName()); excludeMBeanIfNecessary(dataSource, "dataSource", context); return dataSource; } private void excludeMBeanIfNecessary(Object candidate, String beanName, ApplicationContext context) { for (MBeanExporter mbeanExporter : context.getBeansOfType(MBeanExporter.class).values()) { if (JmxUtils.isMBean(candidate.getClass())) { mbeanExporter.addExcludedBean(beanName); } } } }
Atas ialah kandungan terperinci Pandangan pantas JNDI (Nama Java dan Antara Muka Direktori). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!