JNDI数据源的配置步骤

第一步:在Servers中的content.xml文件中配置需要连接的数据源

<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/mysqlDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/bbs"
username="root"
password="root"
maxActive="100"
maxIdle="30"
maxWait="10000"/>

第二步:在项目WEB-INF的Web.xml引用配置好的数据源

<resource-ref>
<!-- 引用名称 -->
<res-ref-name>jdbc/mysqlDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

 

<!--配置监听器数据连接池 -->
<listener>
<listener-class>com.bbs.listener.ContentListener</listener-class>
</listener>

<!-- 数据库连接池Servlet的配置 -->
<servlet>
<servlet-name>ContextListener</servlet-name>
<servlet-class>com.bbs.listener.ContextListener</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ContextListener</servlet-name>
<url-pattern>/ContextListener</url-pattern>
</servlet-mapping>


<!-- log4jLocation:log4j配置文件存放路径 -->
<context-param>
<param-name>log4jLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>

第三步:通过数据库连接池的监听器,获取到数据源对象,并设置的数据库连接操作的帮助类

public class ContentListener implements ServletContextListener{

@Override
public void contextDestroyed(ServletContextEvent arg0) {

}

@Override
public void contextInitialized(ServletContextEvent arg0) {
try {
//通过Web.xml中配置的数据库连接池获取数据源对象
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup
("java:comp/env/jdbc/mysqlDB");
//并把数据源对象设置到数据库帮助类里面进行连接的封装操作。
DBUTil.setDataSource(ds);
//这里是获取路径
ServletContext sc = arg0.getServletContext();
String path = sc.getRealPath("/");
//获取绝对路径
System.out.println(path);
File logfile = new File(path+"log");
//判断是否存在 不存在就自动创建
if(!logfile.exists()){
logfile.mkdir();
}
String log4JFile = sc.getInitParameter("log4jLocation");
//log4jLocation与xml里面的log4jLocation:log4j配置文件存放路径 是一样的
System.setProperty("logLocaltion", logfile.getAbsolutePath());
//logLocaltion这与log4j.properties里面EL表达式里面的是一样的
PropertyConfigurator.configure(path+log4JFile);

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

}

第四步:定义数据库连接操作的帮助类,然后在需要连接数据库的地方直接调用方法即可。

public class DBUTil {
private static DataSource dataSource;

public static void setDataSource(DataSource ds){
dataSource=ds;

}

public static Connection getConnection() throws SQLException{
return dataSource.getConnection();

}

public static void closeResultSet(ResultSet rs) throws SQLException {
rs.close();

}

public static void closeStatement(PreparedStatement ps) throws SQLException {
ps.close();
}

public static void closeConnection(Connection conn) throws SQLException {
conn.close();

}

}

 

转载于:https://www.cnblogs.com/luminccs-5308/p/8681667.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值