这种故障貌似经常见,但是有时候悲剧。
这个故障大多就是与数据库驱动或者在连接错误时出现的,解决方法:
1.先检查自己的context.xml配置文件信息是否错误。(打错字绝对是家常便饭,当然我是新手)
没放jar包只会报Cannot load JDBC driver class(数据库的类库只要放在tomcat\lib中就可以了)
2.还不行,就要看看一个悲剧点,因为context.xml的配置可以有两种,但是不能两种一起使用,如果配置了在tomcat\conf\context,xml的就是不要在自己项目的META-INF目录创建context.xml文件。因为存在两个的话就会在运行时报一下错误。(在tomcat中配置是全局的,而在项目中只有自己可以看到)
2016-6-2 10:00:57 org.apache.catalina.startup.Catalina start
信息: Server startup in 5511 msorg.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.microsoft.sqlserver.jdbc.SQLServerDriver' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.jbit.news.dao.BaseDao.getConnection(BaseDao.java:58)
at org.jbit.news.dao.impl.NewsDaoImpl.getNewsByNID(NewsDaoImpl.java:104)
at org.jbit.news.biz.impl.NewsBizImpl.getNewsByNID(NewsBizImpl.java:34)
at org.apache.jsp.util.news_005fcontrol_jsp._jspService(news_005fcontrol_jsp.java:145)
最后附加步骤:
1. 配置context.xml文件
要么在tomcat\conf\context.xml中配置,要么在项目的META-INF目录创建context.xml文件(不需要DTD),注意,一定不能两个一起加,否则报错。
2. 配置web.xml
如果在项目META-INF目录创建context.xml文件就不需要了。
3. jar是放在tomcat中,而不需要在项目中放。
4. 调用lookup()获取对象连接数据库。
/**获取数据库连接对象。
*/
public ConnectiongetConnection() {
Context ctx;
// 获取连接并捕获异常
try {
ctx=newInitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/news");
conn=ds.getConnection();
} catch(NamingException e) {
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
}
return conn;
}