2012-12-03 259 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等。

  • 希望這會有所幫助。
相關問題