2017-03-09 10 views
1

geeting org.apache.tomcat.dbcp.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper는 com.mysql.jdbc로 캐스팅 될 수 없습니다. Tomcat 서버와 mysql 데이터베이스를 사용하여 .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> 

자바 코드 :

 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(); 
     } 
    } 

답변

1

사용 com.mysql.jdbc.jdbc2.optional.MysqlDataSource 대신 당신의 context.xml에 com.mysql.jdbc.Driver. 직접 연결이 아닌 데이터 소스를 만들고 있습니다.

자세한 내용은 the Connector-J docs을 참조하십시오.

+0

감사 : 응용 프로그램 javax.naming.NamingException을 실행하는 동안 오류를 다음 얻기 자원 인스턴스 – sathyay

2

이 수입 제거해야합니다

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; 

을 당신이 인터페이스를 사용하여 연결이 풀 래핑됩니다 데이터 소스를 사용하는 경우. 오류 javax.naming.NamingException 아래 점점의 context.xml에 STMT를 추가 한 후 응답과 제안을

+0

를 만들 수 없습니다 : 리소스를 만들 수 없습니다 인스턴스 어떤 신체가 나를 도울 수 있습니다 – sathyay

+0

전체 스택 추적을 게시하십시오. – minus