Spring引导JNDI资源引用

Spring引导JNDI资源引用,spring,spring-boot,datasource,jndi,Spring,Spring Boot,Datasource,Jndi,我需要在Spring引导应用程序中声明一个资源引用,该应用程序将作为war文件部署。这是访问数据库所必需的。在传统的web应用程序中,这会添加到web.xml中。我如何通过Spring Boot的方式实现这一点 谢谢, 本杰明我们不久前就解决了这个问题,所以我想,我应该把这个贴在这里 src/main/webapp/WEB-INF/WEB.xml <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="h

我需要在Spring引导应用程序中声明一个资源引用,该应用程序将作为war文件部署。这是访问数据库所必需的。在传统的web应用程序中,这会添加到web.xml中。我如何通过Spring Boot的方式实现这一点

谢谢,
本杰明

我们不久前就解决了这个问题,所以我想,我应该把这个贴在这里


src/main/webapp/WEB-INF/WEB.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
  <resource-ref>
    <res-ref-name>jdbc/DefaultDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
  </resource-ref>
</web-app>

src/main/java//DataSourceConfiguration.java

@Configuration
public class DataSourceConfiguration {

    @Bean
    @ConditionalOnMissingBean // optional
    public DataSource jndiDataSource(DataSourceProperties properties) {
        InitialContext context = new InitialContext();
        return (DataSource) context.lookup("unmanageddatasource:" + properties.getJndiName());
    }
}

这里-。是的,但我要的是参考资料!对不起,我没看到。您可能需要声明类型为
org.springframework.jndi.JndiPropertySource
的bean。不过应该有一个直接的配置选项。您不需要资源引用,您可以直接使用
JndiDataSourceLookup
来查找JNDI资源。这可能适用于诸如jBoss这样的应用服务器,其中命名树是公共可访问的,但是在其他情况下,您需要声明一个资源引用,以使appserver知道您将访问它。HI@Benny使用这个bean定义,我将如何获取对数据源的引用-之前我将
datasource datasource=null;JndiTemplate jndi=新的JndiTemplate();尝试{dataSource=(dataSource)jndi.lookup(“java:comp/env/jdbc/DefaultDB”);}catch(NamingException e){logger.error(“NamingException for java:comp/env/jdbc/DefaultDB”,e);}返回数据源
@Configuration
public class DataSourceConfiguration {

    @Bean
    @ConditionalOnMissingBean // optional
    public DataSource jndiDataSource(DataSourceProperties properties) {
        InitialContext context = new InitialContext();
        return (DataSource) context.lookup("unmanageddatasource:" + properties.getJndiName());
    }
}