2012-12-03 258 views
3

据说Spring的javadoc中有关于DriverManagerDataSource类的文章,认为这个类非常简单,建议使用容器提供的JNDI DataSource,如何在Spring中使用WebLogic提供的JNDI数据源?

。这样的DataSource可以通过JndiObjectFactoryBean作为DataSource bean在Spring ApplicationContext中公开。

例如,如果我想让DataSource bean访问我的custo oracle数据库,那么我需要什么?在上下文配置中写什么?

回答

4

要访问一个JNDI数据源,你做这样的事情:

<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="jdbc/MyDatabase"/> 
</bean> 

或看等春天“高考”的架构。

数据库连接的详细信息在WebLogic中配置,应用程序通过jndi名称访问数据库 。

2

或者使用基于Java的配置,做这样的:

@Bean(destroyMethod = "") 
public DataSource dataSource() throws NamingException{ 
    Context context = new InitialContext(); 
    return (DataSource)context.lookup("jdbc.mydatasource"); 
} 
1

还有另一种选择:

<jee:jndi-lookup id="dbDataSource" jndi-name="jdbc/MyLocalDB" 
     expected-type="javax.sql.DataSource" /> 
0

您可以使用下面的JNDI配置。

<beans:bean id="weblogicDataSource" class="org.springframework.remoting.rmi.JndiRmiProxyFactoryBean"> 
    <beans:property name="jndiName" value="ConnectionPoolJNDINameAsConfigured"></beans:property> 
    <beans:property name="jndiEnvironment"> 
     <beans:props> 
      <beans:prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</beans:prop> 
      <beans:prop key="java.naming.provider.url">iiop://localhost:7001</beans:prop> 
     </beans:props> 
    </beans:property> 
    <beans:property name="serviceInterface" value="javax.sql.DataSource"></beans:property> 
</beans:bean> 

你作出

<beans:bean id="xxxx" class="xxxxxxxx"> 
    <beans:property name="wlDataSource" ref="weblogicDataSource" /> 
</beans:bean> 

,并在你的班级实行引用您的注入的类文件,使用

import javax.sql.DataSource; 

使实例作为 私人数据源wlDataSource;

和相应的setter。现在你可以根据你的实现思路自由使用JDBCTemplate或SimpleJDBCCall等。

  • 希望这会有所帮助。
相关问题