2017-03-09 1 views
1

geeting org.apache.tomcat.dbcp.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper nicht gegossen werden kann, um com.mysql.jdbc . Verbindung mit Tomcat-Server und MySQL-Datenbank finden Sie unter dem folgenden Code. Bitte hilf mir, das zu lösen.

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-Code:

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

Antwort

1

Verwenden com.mysql.jdbc.jdbc2.optional.MysqlDataSource statt com.mysql.jdbc.Driver in Ihrem context.xml. Sie erstellen eine Datenquelle, keine direkte Verbindung.

Weitere Informationen finden Sie unter the Connector-J docs.

+0

Vielen Dank für Ihre Antwort und Anregung nach dem Anw in context.xml Hinzufügen unter Fehler javax.naming.NamingException bekommen: Kann Ressourceninstanz – sathyay

2

sollten diese Einfuhren entfernt werden:

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

Verwenden statt

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

Wenn Sie eine Datasource Ihre Verbindung verwenden, indem Sie den Pool eingewickelt wird, die Schnittstellen verwenden.

+0

Erste folgenden Fehler nicht erstellen, während die Anwendung javax.naming.NamingException ausgeführt wird: kann nicht erstellt werden Ressource Instanz kann mir jeder Körper helfen – sathyay

+0

Veröffentlichen Sie den gesamten Stack-Trace. – minus

Verwandte Themen