数据源的配置

             一、JNDI ---数据源

1、Weblogic:  定义JNDI

Spring中对于JNDI的访问,提供了便捷的方法,在Spring的org.springframework.jndi包中包含了所有的类。其中提供了一下核心类: 


1)JndiTemplate:它是这个包的核心类,用来简化对JNDI的操作。它提供了对于lookup、bind方法。 
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
    <property name="environment"> 
        <props> 
      <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop> 
            <prop key="java.naming.provider.url">jnp://localhost:1099</prop> 
            <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop> 
        </props> 
    </property> 
</bean> 

2)JndiObjectFactoryBean:looks up 一个JNDI对象,暴露在JNDI中找到的对象给其他Bean引用,例如在数据源情况下作为数据访问对象的 "dataSource" property 

使用JndiObjectFactoryBean,例如 
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
        <value>java:/MySqlDS</value> 
    </property> 
</bean> 

实例: 

数据源的配置: 

(1)配置可以访问到同一应用服务器的jndi数据源 
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
        <value>jdbc/cqccms</value> 
    </property> 
</bean> 

(2)配置能访问远程jndi数据源 
方法1:直接通过JndiObjectFactoryBean的jndiEnvironment属性定义远程JNDI参数 
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName"> 
     <value>jdbc/cqccms</value> 
  </property> 
  <property name="jndiEnvironment"> 
     <props> 
        <prop key="java.naming.factory.initial"> 
          weblogic.jndi.WLInitialContextFactory 
        </prop> 
        <prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop> 
        <prop key="java.naming.security.principal">weblogic</prop> 
        <prop key="java.naming.security.credentials">weblogic</prop> 
     </props>    
   </property> 
</bean> 

方法2:先定义jndiTemplate,由jndiTemplate定义远程JNDI参数 

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
    <property name="environment"> 
        <props> 
            <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop> 
            <prop key="java.naming.provider.url">t3://172.16.101.42:7001</prop> 
            <prop key="java.naming.security.principal">weblogic</prop> 
            <prop key="java.naming.security.credentials">weblogic</prop> 
        </props> 
    </property> 
</bean> 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName"> 
     <value>jdbc/cqccms</value> 
  </property> 
  <property name="jndiTemplate" ref="jndiTemplate" /> 
</bean> 

2、Tomcat:

JNDI配置文件:context.xml(/WebRoot/META-INF目录下)

<Context>
 <Resource name="jdbc/EmployeeDB"
auth="Container"
type="javax.sql.DataSource"

username="root"
password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/day16"
maxActive="8"
maxIdle="4"/>
</Context>



JNDI代码:

import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;


public class BaseDao {
public void add(){
try{
Context initCtx = new InitialContext();  //初始化jndi
Context envCtx = (Context) initCtx.lookup("java:comp/env");  //得到jndi容器
DataSource ds = (DataSource) envCtx.lookup("jdbc/EmployeeDB");  //从容器中检索链接池

Connection conn = ds.getConnection();
System.out.println(conn);


}catch (Exception e) {
e.printStackTrace();
}
}

}



你可能感兴趣的:(数据源的配置)