簡體   English   中英

org.apache.tomcat.dbcp.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper無法強制轉換為com.mysql.jdbc.Connection

[英]org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to com.mysql.jdbc.Connection

geeting org.apache.tomcat.dbcp.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper無法使用tomcat服務器和mysql數據庫強制轉換為com.mysql.jdbc.Connection,請在下面找到代碼。 請幫我解決這個問題。

context.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context>
<Resource name="jdbc/MySQL_ds" auth="Container" type="javax.sql.DataSource"
               maxActive="50" maxIdle="30" maxWait="10000"
               username="root" password="root321"
               driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://162.70.211.17:3306/emp"
               accessToUnderlyingConnectionAllowed="true"/>

</Context>

web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>sample</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>Insert</display-name>
    <servlet-name>Insert</servlet-name>
    <servlet-class>Insert</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Insert</servlet-name>
    <url-pattern>/insert</url-pattern>
  </servlet-mapping>
  <resource-ref>
<description>MySQL Datasource example</description>
<res-ref-name>jdbc/MySQL_ds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
  </resource-ref>
</web-app>

Java代碼:

        import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;






import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;






    import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

    public class Insert extends HttpServlet {  

    protected void service(HttpServletRequest request, HttpServletResponse   response) throws ServletException, IOException {
            doPost(request, response);
    }   
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
                throws ServletException, IOException {  
     System.out.println("do post calling");
    response.setContentType("text/html");  
    PrintWriter out = response.getWriter();  
    String Username = request.getParameter("roll");
    Context ctx = null;
    Connection connection;
    try{  

        ctx = new InitialContext();
        DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/MySQL_ds");  
        connection =   (Connection) ds.getConnection();
        System.out.println("Connection established");
        PreparedStatement ps=(PreparedStatement) connection.prepareStatement("insert into employee values(?)");
        ps.setString(1,Username);
        int i=ps.executeUpdate();  
        if(i>0)  
        out.print("You are successfully registered...");  


        }catch (Exception e2) {System.out.println(e2);}  

        out.close();  
        }  
    }

應刪除這些導入:

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

請改用

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;

如果您使用DataSource,您的連接將被池包裝,請使用接口。

在context.xml中使用com.mysql.jdbc.jdbc2.optional.MysqlDataSource而不是com.mysql.jdbc.Driver 您正在創建數據源,而不是直接連接。

有關更多信息,請參閱Connector-J文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 Apache Commons DBCP 連接對象問題,線程:org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper 中的 ClassCastException org.apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper 無法轉換為 oracle.jdbc.OracleConnection java.lang.ClassCastException:org.apache.tomcat.dbcp.dbcp2.PoolingDataSource $ PoolGuardConnectionWrapper無法轉換為oracle.jdbc.OracleConnection org.apache.commons.dbcp.DelegatingPreparedStatement無法強制轉換為com.mysql.jdbc.PreparedStatement 未捕獲的可拋出 java.lang.AbstractMethodError: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createArrayOf 即使連接成功后,org.apache.derby.client.net.NetConnection40也不能轉換為com.mysql.jdbc.Connection錯誤? java.lang.ClassCastException:org.apache.tomcat.dbcp.dbcp.PoolableConnection無法轉換為oracle.jdbc.OracleConnection 使用org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper的最里面的類時引發異常 java.lang.AbstractMethodError: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getClientInfo()Ljava/util/Properties; 如何解決這個 java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to org.apache.tomcat.jdbc.pool.DataSource?
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM