2011-08-05 68 views
2

我想用Eclipse開發一個Web應用程序使用一個Derby數據庫和Tomcat上運行。無法連接到德比在Eclipse

我的問題是,我無法啓動與日食德比服務器(它工作正常了CMD的),我不能讓我的servlet來建立與數據庫的連接,每一個我嘗試,我得到了錯誤的時間:

java.sql.SQLNonTransientConnectionException: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect.at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) 
at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at com.Jieren.servlets.Authenticator.testCredentials(Authenticator.java:84) 
at com.Jieren.servlets.Authenticator.doPost(Authenticator.java:36) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

我沒有任何的xml文件,做任何連接(我見過的web.xml並使得管理連接),但是從我所看到的連接應通過直java代碼可能(這似乎更容易學習,因爲我是相當新的)。

,我使用與如下所示連接的代碼。

Connection conn = null; 
    PreparedStatement prestat = null; 
    ResultSet pw = null; 

    try { 
     Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
    } catch (InstantiationException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    try { 
     conn = DriverManager.getConnection("jdbc:derby://localhost:1527/C:/apache-tomcat-7.0.19/Databases/Jieren;" + 
       "user=Access;" + 
       "password=Entry"); 

     prestat = conn.prepareStatement("SELECT password FROM logs WHERE username = ?"); 
     prestat.setString(1, username); 
     pw = prestat.executeQuery(); 
     if (password.equals(pw.toString())) answer = 1; 
     pw.close(); 
     pw = null; 
     prestat.close(); 
     prestat = null; 
     conn.close(); 
     conn = null; 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    finally{ 
     if (pw != null){ 
      try { pw.close();} catch (SQLException e){;} 
      pw = null; 
     } 
     if (prestat != null){ 
      try { prestat.close();} catch (SQLException e){;} 
      prestat = null; 
     } 
     if (conn != null){ 
      try {conn.close();} catch(SQLException e) {;} 
     conn = null; 
     } 
    } 

從我環視想通了,如果一切配置正確的代碼應該工作。通過外部eclipse工作的ij連接數據庫,所以我有一種感覺,有一個設置或我需要在eclipse中寫入來連接它。

+0

考慮到我的應用程序最終將被轉移到我使用日食真的只是簡化一切以後將打包的服務器。 – Andy

+0

:/未完成:P。我想知道是否有比eclipse更容易開發java web應用程序的方法。 – Andy

回答

3

例外是在告訴你,你的網絡服務器沒有運行。當你的連接URL啓動jdbc:derby:// hostname時,你告訴Derby你希望以客戶端 - 服務器模式運行,這意味着你的客戶端應用程序將建立到網絡服務器的TCP/IP連接。看到這個文檔瞭解如何設置和運行網絡服務器:http://db.apache.org/derby/docs/10.8/adminguide/

+0

非常感謝,我已經有一段時間了,幾乎已經放棄了從這裏得到的有用答案。 – Andy

+0

參見http://stackoverflow.com/questions/32919136/how-to-configure-javadb-in-eclipsepart2和http://stackoverflow.com/questions/25141733/javadb-having-port-connection-error?rq = 1 –