Spring中配置JNDI数据源

时间:2021-05-28 19:11:40

Spring中配置JNDI数据源
    如果应用配置在高性能的应用服务器(如WebLogic或Websphere等)上,更希望使用应用服务器本身提供的数据源。应用服务器的数据源使用JNDI开放调用者使用,Spring为此专门提供引用JNDI资源的JndiObjectFactoryBean类。

一、在Spring配置文件中的配置

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


二、在web.xml的配置(这些标签就是用来建立当前应用环境到服务器资源的映射的)

  <resource-ref>
    <res-ref-name>jdbc/DBPool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>


三、在Tomcat的配置

server.xml下 <GlobalNamingResources></GlobalNamingResources>中配置
    <Resource
        auth="Container"
        description="DB Connection"
        driverClass="oracle.jdbc.driver.OracleDriver"
        maxPoolSize="50"
        minPoolSize="2"
        initialPoolSize="5"
        maxIdleTime="60"
        autoCommitOnClose="true"
        acquireIncrement="3"
        name="jdbc/DBPool"
        user="root"
        password="123456"
        jdbcUrl="jdbc:oracle:thin:@192.168.120.165:1521:orcl10"
        factory="org.apache.naming.factory.BeanFactory"
        type="com.mchange.v2.c3p0.ComboPooledDataSource"
        />

context.xml下<Context></Context>中的配置

<ResourceLinkglobal="jdbc/DBPool" name="jdbc/DBPool" type="javax.sql.DataSource" />


四、调用

 这样既可以通过Spring获得数据源得到Connection对象 , 也可以通过下面获得Connection 对象
  Context    context = new InitialContext();
  DataSource  dataSource = (DataSource)context.lookup("java:comp/env/jdbc/DBPool");
  Connection  con = dataSource.getConnection();