Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Опять проблема с коннектом (((


Автор: dimon444 1.8.2011, 18:39
Работаю в Eclipse с динамическим веб-проектом на Tomcat. Написал класс для работы с mysql базой

Код

package pmysql;
import java.sql.*;

public class CMySQLConnect 
{    
    private static String driver = "com.mysql.jdbc.Driver";
    private String url;
    private String dbname;
    private String login;
    private String pass;
    private Connection connect;
    private Statement state;
    
    public CMySQLConnect(String url,String dbname,String login,String pass)
    {
        this.url    = url;
        this.dbname = dbname;
        this.login  = login;
        this.pass   = pass;
        connect = null;
    }
    
    public String   GetURL()
    {
        return url;
    }
    public String   GetDBName()
    {
        return dbname;
    }
    public String   GetLogin()
    {
        return login;
    }
    public String   GetPassword()
    {
        return pass;
    }
    public void     SetURL(String url)
    {
        if(!IsConnect())
            this.url = url;
    }
    public void     SetDBName(String dbname)
    {
        if(!IsConnect())
            this.dbname = dbname;
    }
    public void     SetLogin(String login)
    {
        if(!IsConnect())
            this.login = login;
    }
    public void     SetPassword(String pass)
    {
        if(!IsConnect())
            this.pass = pass;
    }
    
    public Statement GetStatement()
    {
        if(!IsConnect())
            return null;
        return state;
    }
    
    public boolean IsConnect()
    {
        return (connect != null);
    }
    public boolean ConnectDB()
    {
        if(IsConnect())
            return false;
        try
        {
            Class.forName(driver).newInstance();
            connect = DriverManager.getConnection("jdbc:mysql://"+url+"/"+dbname, login, pass);
            state = connect.createStatement();
            return true;
        }
        catch(Exception e)
        {
            e.printStackTrace();
            connect = null;
            return false;
        }
    }
    public boolean DisconnectDB()
    {
        if(!IsConnect())
            return false;
        try
        {
            connect.close();
            connect = null;
            return true;
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return false;
        }
    }

    protected void finalize()
    {
        if(IsConnect())
            DisconnectDB();
    }
    
    public static void main(String[] args) 
    {
        CMySQLConnect mysql = new CMySQLConnect("localhost","mesdb","root","");
        if(mysql.ConnectDB())
            System.out.println("GOOD connection");
        else 
            System.out.println("BAD connection");    
        mysql.DisconnectDB();
    }
}


Запускаю его все работает нормально , на консоль пишет Good connection .
Создаю страницу JSP, подключаю к ней этот класс :

Код

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page language="java" import="pmysql.CMySQLConnect" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>
      Outlook Web project
    </title>
  </head>
  <body>

<%
  CMySQLConnect mysqlcon = new CMySQLConnect("localhost","mesdb","root","");
  mysqlcon.ConnectDB();
%>

  <table border="1" cellpadding="5" cellspacing="0">  
    <tr>
     <td><b>Connection</b></td>
     <td><%= mysqlcon.IsConnect() %></td>
    </tr>
    <tr>
     <td><b>URL</b></td>
     <td><%= mysqlcon.GetURL() %></td>
    </tr>
    <tr>
     <td><b>DB Name</b></td>
     <td><%= mysqlcon.GetDBName() %></td>
    </tr>
    <tr>
     <td><b>Login</b></td>
     <td><%= mysqlcon.GetLogin() %></td>
    </tr>
    <tr>
     <td><b>Password</b></td>
     <td><%= mysqlcon.GetPassword() %></td>
    </tr>                
  </table>

  </body>
</html>


Запускаю и тут мне в консоль выдает такое чудо :

Код

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at pmysql.CMySQLConnect.ConnectDB(CMySQLConnect.java:77)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:79)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


Автор: LSD 1.8.2011, 18:45
В твоем веб проекте не хватает драйвера MySql. Или упакуй его в war или положи в Tomcat\lib. И вообще, обычно для соединения с базой обычно используют http://wiki.apache.org/tomcat/UsingDataSources.

Автор: dimon444 1.8.2011, 18:56
Цитата(LSD @ 1.8.2011,  18:45)
В твоем веб проекте не хватает драйвера MySql. Или упакуй его в war или положи в Tomcat\lib. И вообще, обычно для соединения с базой обычно используют http://wiki.apache.org/tomcat/UsingDataSources.

Я подключил его через Project->Properties->Java Build Path->Libraries->Add external Chars.. . Просто если запустить на выполение сам класс, то коннект происходит, а если через страницу , то он ругается ...

Автор: LSD 1.8.2011, 19:07
Подключил ты его к проекту, а томкат ничего не знает о твоем проекте.
Цитата(LSD @  1.8.2011,  19:45 Найти цитируемый пост)
Или упакуй его в war или положи в Tomcat\lib. И вообще, обычно для соединения с базой обычно используют DataSource.


Автор: dimon444 2.8.2011, 11:36
Спасибо все работает !)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)