如何解决这个java.lang.ClassCastException:org.apache.tomcat.
发布时间:2020-12-15 05:23:38 所属栏目:Java 来源:网络整理
导读:我试图在tomcat中使用池进行数据库连接,这就是我的上下文: Resource name="jdbc/slingemp" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc
我试图在tomcat中使用池进行数据库连接,这就是我的上下文:
<Resource name="jdbc/slingemp" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/slingemp"/> 这就是我的web.xml: <description>MySQL JNDI Test</description> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/slingemp</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 这就是我与数据库连接的方式: package org.slingemp.jnditest; import java.io.IOException; import java.sql.Connection; import javax.naming.Context; import javax.naming.InitialContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.tomcat.jdbc.pool.DataSource; /** * Servlet implementation class JNDILookUpServlet */ @WebServlet("/JNDILookUpServlet") public class JNDILookUpServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public JNDILookUpServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request,HttpServletResponse response) */ protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request,HttpServletResponse response) */ protected void doPost(HttpServletRequest request,IOException { // TODO Auto-generated method stub try { Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/slingemp"); Connection conn = ds.getConnection(); if(conn != null)System.out.println("Connected.."); else System.out.println("Not connected..."); } catch (Exception e) { e.printStackTrace(); } response.sendRedirect("index.jsp"); } } 但它给了我以下例外: java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to org.apache.tomcat.jdbc.pool.DataSource 请帮我解决这个问题, 问候 解决方法
你只是使用错误的导入.
替换这个: import org.apache.tomcat.jdbc.pool.DataSource; 有了这个: import javax.sql.DataSource; javax.sql.DataSource是所有DataSource实现必须继承的基接口.通常不建议针对此接口以外的任何其他方式进行开发. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |