gpt4 book ai didi

java - 如何在 Spring 应用程序中延迟加载 LDAP 配置。

转载 作者:数据小太阳 更新时间:2023-10-29 02:44:02 26 4
gpt4 key购买 nike

我有 application-context.xml,它有如下所示的 bean。

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" >
<property name="jndiName" value="java:/comp/env/DB_NAME" />

</bean>

<bean id="jdbcTemplate" name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>

和一个 context.xml 之类的

<ResourceLink name="DB_NAME1" global="application/cn=MyDB,ou=Database Connections" />

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

如果您在我的 context.xml 中注意到我将我的资源名称保留为 DB_NAME1

我还在 application-context.xml 文件顶部的 beans 标记中保留了 default-lazy-init="true"。我仍然低于错误

javax.naming.NameNotFoundException: Name [DB_NAME] is not bound in this Context. Unable to find [DB_NAME].

所以我的问题是,如何延迟加载我的 jdbcTemplate/dataSource。

因为在我的应用程序中,有些服务正在访问 DB,有些正在访问其他服务。因此,即使数据库已关闭,其他服务也不应停止工作。

最佳答案

所以我找到了我的问题的临时解决方案。

编写了搜索 JNDI 配置并创建 jdbcTemplate 的新方法,如果它没有这样做,我正在处理异常。

public JdbcTemplate getJdbcTemplate() {
try {
Context initContext = new InitialContext();
myDataSource = (DataSource) initContext.lookup("java:/comp/env/DBNAME");
myjdbcTemplate = new org.springframework.jdbc.core.JdbcTemplate(dataSource);
} catch (Exception e) {
e.printStackTrace();
}

return jdbcTemplate;
}

我每次都从我的其他 DAOImpl 方法调用此方法,如下所示

  getJdbcTemplate().query("MySp", args, myBeanRowMapper);

目前可以使用。但如果您看到任何更好的方法,请在此处回答。

谢谢

关于java - 如何在 Spring 应用程序中延迟加载 LDAP 配置。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com