"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Vista rápida de JNDI (Java Naming and Directory Interface)

Vista rápida de JNDI (Java Naming and Directory Interface)

Publicado el 2024-11-16
Navegar:943

Quick look of JNDI (Java Naming and Directory Interface)

Simplemente dicho, el programador puede usar la misma interfaz JNDI para consultar lo siguiente

  • recursos de búsqueda proporcionados por el servidor de aplicaciones, como fuente de datos
  • buscar entradas LDAP
  • buscar registros DNS

Aquí hay una breve introducción.

el codigo

Los recursos del servidor de aplicaciones se colocan bajo el prefijo "java:comp/env". Supongamos que una fuente de datos está activada

java:/comp/env/jdbc/db1

Para obtener esa fuente de datos

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

O puede obtener la instancia directamente proporcionando la ruta completa

javax.naming.Context initialContext = new javax.naming.InitialContext();
DataSource dataSource = (DataSource) initialContext.lookup("java:comp/env/jdbc/db1");

Integración de arranque de primavera

Simplemente agregue una línea en application.properties

spring.datasource.jndi-name=java:/comp/env/jdbc/db1

El bean relacionado es creado por 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);
            }
        }
    }

}
Declaración de liberación Este artículo se reproduce en: https://dev.to/saladlam/quick-look-of-jndi-java-naming-and-directory-interface-13gi?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3