小编Fre*_*ezY的帖子

如何将jndi查找从xml转换为java配置

目前我正在将xml转换为java配置.但我坚持了几天,我已经研究了几天.这里的问题是:

Xml配置:

     <jee:jndi-lookup id="dbDataSource" jndi-name="${db.jndi}" resource-ref="true" />

     <beans:bean id="jdbcTemplate"
     class="org.springframework.jdbc.core.JdbcTemplate" >
     <beans:property name="dataSource" ref="dbDataSource"></beans:property>
     </beans:bean>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我设法转换此代码:

<jee:jndi-lookup id="dbDataSource" jndi-name="${db.jndi}" resource-ref="true" />

对此:

@Bean(name = "dbDataSource")
public JndiObjectFactoryBean dataSource() {
   JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
   bean.setJndiName("${db.jndi}");
   bean.setResourceRef(true); 
   return bean; 
}
Run Code Online (Sandbox Code Playgroud)

还有这个 :

     <beans:bean id="jdbcTemplate"
     class="org.springframework.jdbc.core.JdbcTemplate" >
     <beans:property name="dataSource" ref="dbDataSource"></beans:property>
     </beans:bean>
Run Code Online (Sandbox Code Playgroud)

对此:

@Bean(name = "jdbcTemplate")
public JdbcTemplate jdbcTemplate() { 
   JdbcTemplate jt = new JdbcTemplate();
    jt.setDataSource(dataSource);
    return jt;
   }
Run Code Online (Sandbox Code Playgroud)

问题是该方法的setDataSource()需要DataSource对象,但我不知道如何与两个bean.How到JndiObjectFactoryBean中传递给数据源?

或者我需要使用其他方法吗?

额外问题:

bean.setJndiName("${db.jndi}"),$ {} db.jndi是指属性文件,但我总是得到的NameNotFoundException,如何使它工作?

谢谢!!

java spring spring-java-config

9
推荐指数
1
解决办法
1万
查看次数

Weblogic jndi使用java配置发生NameNotFoundException

我一直在寻找这个问题,我无法使用java配置找到jndi数据库.在此之前我使用xml及其工作完美但在java配置中它会导致问题;

Xml代码:

     <!-- Jndi database connection -->
     <jee:jndi-lookup id="dbDataSource" jndi-name="${db.jndi}"
     resource-ref="true" />

     <beans:bean id="jdbcTemplate"
     class="org.springframework.jdbc.core.JdbcTemplate" >
     <beans:property name="dataSource" ref="dbDataSource"></beans:property>
     </beans:bean>
Run Code Online (Sandbox Code Playgroud)

Java配置现在:

@Bean(name = "dbDataSource")
public DataSource dataSource(@Value("${db.jndi}") String jndiName) 
{
    JndiDataSourceLookup lookup = new JndiDataSourceLookup();
    return lookup.getDataSource(jndiName);
}

@Bean
public JdbcTemplate jdbcTemplate(DataSource ds) { 
    return new JdbcTemplate(ds);
}
Run Code Online (Sandbox Code Playgroud)

属性文件:

db.jndi=jndi/myData
Run Code Online (Sandbox Code Playgroud)

weblogic中的JNDI名称:

jndi/myData
Run Code Online (Sandbox Code Playgroud)

更改为java配置后,有时系统可以读取数据库但很少发生,直到我清理并重新启动计算机然后它才能找到数据库,但通常它总是触发:

javax.naming.NameNotFoundException: Unable to resolve 'jndi.myData'. Resolved 'jndi'; remaining name 'myData'

为什么应用程序无法正确找到数据库?谢谢!!!

spring weblogic spring-java-config

2
推荐指数
1
解决办法
2813
查看次数

标签 统计

spring ×2

spring-java-config ×2

java ×1

weblogic ×1