JNDI数据源的配置步骤

Posted 神奇的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();

}

}

 

以上是关于JNDI数据源的配置步骤的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat数据源的原理,配置及使用(JNDI)

MyBatis-Plus 多数据源配置

JNDI数据源的配置

Spring+Tomcat的JNDI数据源连接池简单配置

tomcat配置oracel数据库全局jndi数据源

将现有 JNDI HornetQ 服务设为 HA 的步骤?