Rumah  >  Artikel  >  Java  >  Pandangan pantas JNDI (Nama Java dan Antara Muka Direktori)

Pandangan pantas JNDI (Nama Java dan Antara Muka Direktori)

Patricia Arquette
Patricia Arquetteasal
2024-10-22 06:12:02721semak imbas

Quick look of JNDI (Java Naming and Directory Interface)

Ringkasnya, pengaturcara boleh menggunakan antara muka JNDI yang sama untuk menanyakan perkara berikut

  • sumber carian yang disediakan oleh pelayan aplikasi, seperti sumber data
  • cari entri LDAP
  • cari rekod DNS

Pengenalan ringkas ada di sini.

Kod itu

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");

Penyepaduan but musim bunga

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn