[Java] Sybase (Database server connection limit exceeded)

Pagina: 1
Acties:
  • 292 views sinds 30-01-2008
  • Reageer

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 30-04 16:44
Intro:
Voor een jsp applicatie ben ik bezig met en wil ik bepaalde kolommen uit de database trekken..
Maar ik krijg een error waarvan ik natuurlijk wel snap wat het inhoudt, maar niet hoe het komt en hoe ik het op kan lossen..

Heb alle informatie proberen te geven die relevant is (vandaar de lange post). Heb een hoop geprobeerd, maar kom er echt niet uit.. Tuurlijk eerst ff GOT en google geprobeerd, maar helaas.

hoop dat iemand misschien mijn foutje spot, want ik kijk er waarschijnlijk overheen, of mijn kennis is nog niet toereikend genoeg

Alvast bedankt...
GiDEoN


Dit is de JSP file waarin de BEAN Items wordt aangeroepen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<jsp:useBean id="ophalenBean" scope="request" class="beans.Items" />
<jsp:useBean id="aanpassenBean" scope="session" class="main.Profiel" />

<html>
<head>
<title>Profiel aanpassen</title>
<link href="../../css/stylesheet.css" rel="stylesheet" type="text/css">

</head>

<body>

<br />

<form action="/jsp/profiel/profiel-functies-aanpassen.jsp" name="profielfrm" enctype="text/plain" method="post" >
<input type="hidden" name="klantid" value ="<jsp:getProperty name="ToegangBean" property="klantid"/>">

<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3" class="TABELTITEL">Profiel aanpassen</td>
    </tr>
  <tr>
    <td class="TABELTEXTKOP">&nbsp;</td>
    <td class="TABELTEXTKOP">&nbsp;</td>
    <td class="TABELTEXTKOP">Persoonlijke gegevens </td>
  </tr>
            <tr>
    <td width="125" class="TABELTEXTKOP">Nationaliteit</td>
    <td width="5" class="TABELTEXTKOP">:</td>
    <td width="385" class="TABELTEXT">
            <div align="center">
                    <select name="nationaliteit" size="1">
[b]<%
    ophalenBean.Items("nationaliteit");

    if (ophalenBean.hasresult() == true) {
    while(ophalenBean.hasresult()) {
    ophalenBean.nextresult();
%>

 <option value="<jsp:getProperty name="ophalenBean" property="itemID"/>"><jsp:getProperty name="ophalenBean" property="itemText"/>
 
<%
}}
else
{ %>  
Geen resultaten gevonden!
<%}%>[/b]       </select>
              </div></td></tr>
              

  <tr>
    <td width="125" class="TABELTEXTKOP">Kleur Ogen</td>
    <td width="5" class="TABELTEXTKOP">:</td>
     <td width="385" class="TABELTEXT">
            <div align="center">
                    <select name="kleurogen" size="1" >
[b]<%
    ophalenBean.Items("kleurogen");

    if (ophalenBean.hasresult() == true) {
    while(ophalenBean.hasresult()) {
    ophalenBean.nextresult();
%>

 <option value="<jsp:getProperty name="ophalenBean" property="itemID"/>"><jsp:getProperty name="ophalenBean" property="itemText"/>
 
<%
}}
else
{ %>  
Geen resultaten gevonden!
<%}%>[/b]     </select>
              </div></td></tr>
 
 
  <tr>
    <td width="125" class="TABELTEXTKOP">Kleur haar</td>
    <td width="5" class="TABELTEXTKOP">:</td>
     <td width="385" class="TABELTEXT">
            <div align="center">
                    <select name="kleurhaar" size="1" >
[b]<%
    ophalenBean.Items("kleurhaar");

    if (ophalenBean.hasresult() == true) {
    while(ophalenBean.hasresult()) {
    ophalenBean.nextresult();
%>

 <option value="<jsp:getProperty name="ophalenBean" property="itemID"/>"><jsp:getProperty name="ophalenBean" property="itemText"/>
 
<%
}}
else
{ %>  
Geen resultaten gevonden!
<%}%>[/b]     </select>
              </div></td></tr>

  <tr>
    <td width="125" class="TABELTEXTKOP">Postuur</td>
    <td width="5" class="TABELTEXTKOP">:</td>
     <td width="385" class="TABELTEXT">
            <div align="center">
                    <select name="postuur" size="1" >
[b]<%
    ophalenBean.Items("postuur");

    if (ophalenBean.hasresult() == true) {
    while(ophalenBean.hasresult()) {
    ophalenBean.nextresult();
%>

 <option value="<jsp:getProperty name="ophalenBean" property="itemID"/>"><jsp:getProperty name="ophalenBean" property="itemText"/>
 
<%
}}
else
{ %>  
Geen resultaten gevonden!
<%}%>[/b]     </select>
              </div></td></tr>

  <tr>
    <td width="125" class="TABELTEXTKOP">Gewichtsklasse</td>
    <td width="5" class="TABELTEXTKOP">:</td>
     <td width="385" class="TABELTEXT">
            <div align="center">
                    <select name="gewicht" size="1" >
[b]<%
    ophalenBean.Items("gewicht");

    if (ophalenBean.hasresult() == true) {
    while(ophalenBean.hasresult()) {
    ophalenBean.nextresult();
%>

 <option value="<jsp:getProperty name="ophalenBean" property="itemID"/>"><jsp:getProperty name="ophalenBean" property="itemText"/>
 
<%
}}
else
{ %>  
Geen resultaten gevonden!
<%}%>[/b]     </select>
              </div></td></tr>



Dit is de Items bean file
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package beans;

import java.util.*;

public class Items {
    
    main.Beheerder deBeheerder = new main.Beheerder();
    
    private ArrayList lijst;
    
    private int itemID;
    private String itemText;
    
    private int teller = 0;
    
    public Items() {
    }
    
    public void Items(String welkeLijst) {
        this.lijst = deBeheerder.geefLijst(welkeLijst);
    }
    
    public int getItemID() {
        return this.itemID;
    }
    
    public void setItemID(int itemID) {
        this.itemID = itemID;
    }
    
    public String getItemText() {
        return this.itemText;
    }
    
    public void setItemText(String itemText) {
        this.itemText = itemText;
    }
    
    public boolean hasresult() {
        if (this.lijst != null) {
            if (teller < lijst.size()) {
                return true;
            }
            else {
                return false;
            }
        }
        
        else {
            return false;
        }
    }
    
    public void resetlijst() {
        teller = 0;
    }
    
    public void nextresult() {
        itemID = 0;
        itemText = "";
        
        Items deItems = (Items)lijst.get(teller);
        
        itemID = deItems.getItemID();
        itemText = deItems.getItemText();
        
        teller++;
        System.out.println( "----nextresult--------------------------------");
         System.out.println( "DEBUG INFO: -> itemID = " + itemID);
         System.out.println( "DEBUG INFO: -> itemText = " + itemText);
         System.out.println( "DEBUG INFO: -> teller = " + teller);
       
    }
}


Het stukje tekst uit de Beheerders class die het weer doorstuurt naar de Database class
code:
1
2
3
public ArrayList geefLijst(String welkeLijst) {
        return  eenDatabase.geefLijst(welkeLijst);
    }


Het stukje tekst uit de Database class die het probleem 'veroorzaakt' blijkbaar
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 public ArrayList geefLijst(String welkeLijst) {
        
        String deTable = "";
        String hetVeld = "";
        String deWaarde = "";
        
        ArrayList deItems = new ArrayList();
        PreparedStatement pstmt;
        ResultSet resultaat;
        
        // Kijken wat de welkeLijst string is, en dan het juiste veld meegeven aan de sql string
        if (welkeLijst.equals("nationaliteit")) { deWaarde = "natioliteit_natioliteit"; hetVeld = "natioliteit_id"; deTable = "u2d_klant_nationaliteit";  }
        if (welkeLijst.equals("kleurogen")) { deWaarde = "ogen_kleur"; hetVeld = "ogen_id"; deTable = "u2d_klant_kleurogen";  }
        if (welkeLijst.equals("kleurhaar")) { deWaarde = "haar_kleur"; hetVeld = "haar_id"; deTable = "u2d_klant_kleurhaar";  }
        if (welkeLijst.equals("postuur")) { deWaarde = "postuur_type"; hetVeld = "postuur_id"; deTable = "u2d_klant_postuur";  }
        if (welkeLijst.equals("gewicht")) { deWaarde = "gewicht_type"; hetVeld = "gewicht_id"; deTable = "u2d_klant_gewicht";  }
        
        try {
            
            String SearchString = "";
            
            SearchString = "SELECT " + hetVeld + "," + deWaarde + " FROM " + deTable;
            
            pstmt = deDatabaseConnectie.prepareStatement(SearchString);
            //pstmt.setQueryTimeout(1);
            resultaat = pstmt.executeQuery();
            
            System.out.println( "----------------------------------------------");
            System.out.println( "SQL String => "  + SearchString);
            
            while (resultaat.next()) {
                beans.Items hetItem = new beans.Items();
                
                hetItem.setItemID(resultaat.getInt(hetVeld));
                hetItem.setItemText(resultaat.getString(deWaarde));
                
                deItems.add(hetItem);
            }
            
            pstmt.close();
        }
        catch (SQLException eSql) {
            
            System.out.println( "----------------------------------------------");
            System.out.println( "Fout bij het laden van lijst gegevens => "  + eSql.toString());
            System.out.println( "DEBUG INFO: -> Tabelnaam  bij het laden van lijst gegevens => "  + eSql.toString());
        }
        
        return deItems;
    }



Zoals je ziet heb ik 'debug' dingetjes ingebouwd, zie hier de 'debug waarden'. Het gaat dus mis nadat de eerste table is afgerond
----------------------------------------------
SQL String => SELECT natioliteit_id,natioliteit_natioliteit FROM u2d_klant_nationaliteit
----nextresult--------------------------------
DEBUG INFO: -> itemID = 1
DEBUG INFO: -> itemText = Nederlands
DEBUG INFO: -> teller = 1
----nextresult--------------------------------
DEBUG INFO: -> itemID = 2
DEBUG INFO: -> itemText = Italiaans
DEBUG INFO: -> teller = 2
----nextresult--------------------------------
DEBUG INFO: -> itemID = 3
DEBUG INFO: -> itemText = Spaans
DEBUG INFO: -> teller = 3
----nextresult--------------------------------
DEBUG INFO: -> itemID = 4
DEBUG INFO: -> itemText = Duits
DEBUG INFO: -> teller = 4
----nextresult--------------------------------
DEBUG INFO: -> itemID = 5
DEBUG INFO: -> itemText = Engels
DEBUG INFO: -> teller = 5
----nextresult--------------------------------
DEBUG INFO: -> itemID = 6
DEBUG INFO: -> itemText = Amerikaans
DEBUG INFO: -> teller = 6
----------------------------------------------
SQL String => SELECT ogen_id,ogen_kleur FROM u2d_klant_kleurogen
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
----------------------------------------------
SQL String => SELECT haar_id,haar_kleur FROM u2d_klant_kleurhaar
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
----------------------------------------------
SQL String => SELECT postuur_id,postuur_type FROM u2d_klant_postuur
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
----------------------------------------------
SQL String => SELECT gewicht_id,gewicht_type FROM u2d_klant_gewicht
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded
De Datasource: java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Database server rejected connection: Database server connection limit exceeded


EDIT : Wat code weg gehaald wat eigenlijk niet bij het probleem hoorde

[ Voor 80% gewijzigd door mrFoce op 19-05-2005 19:28 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Het zou jammer zijn als je lange post zou worden gesloten, maar ik vrees dat dat wel gaat gebeuren. Anyways, je opent waarschijnlijk iedere keer een connectie die niet wordt afgesloten. Zo te zien is er een maximaal aantal connecties toegestaan, dus zul je:
1) Elke keer ook weer je connectie moeten afsluiten nadat je een query gedraaid hebt
of
2) beter nog: 1 keer een connectie openen en deze iedere keer hergebruiken en aan het einde van je jsp pagina weer afsluiten.

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 30-04 16:44
bigbeng schreef op donderdag 19 mei 2005 @ 18:39:
Het zou jammer zijn als je lange post zou worden gesloten, maar ik vrees dat dat wel gaat gebeuren. Anyways, je opent waarschijnlijk iedere keer een connectie die niet wordt afgesloten. Zo te zien is er een maximaal aantal connecties toegestaan, dus zul je:
1) Elke keer ook weer je connectie moeten afsluiten nadat je een query gedraaid hebt
of
2) beter nog: 1 keer een connectie openen en deze iedere keer hergebruiken en aan het einde van je jsp pagina weer afsluiten.
zou zeker jammer zijn.. Maar volgens mij sluit ik elke netjes de database met -> pstmt.close();

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
statement != connectie ;)
deDatabaseConnectie is je connectie

  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 30-04 16:44
bigbeng schreef op donderdag 19 mei 2005 @ 18:42:
statement != connectie ;)
deDatabaseConnectie is je connectie
o kijk, nu heb ik weer iets om te proberen.. Ga ff daarmee knutselen.. Thnxs voor je snelle reply :)

btw : database Klasse

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Database {
    
    public Connection deDatabaseConnectie;
        
    public Database() {
        openDatabaseConnectie();
    }
    
    public void openDatabaseConnectie() {
        
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch (ClassNotFoundException e) {
            System.out.println("We zoeken naar de Class: " + e.toString());
        }
        
        try {
            deDatabaseConnectie = DriverManager.getConnection("jdbc:odbc:up2date","dba","sql");
            
        }
        catch (SQLException e) {
            System.out.println("De Datasource: " + e.toString());
        }
    }

bla bla

[ Voor 58% gewijzigd door mrFoce op 19-05-2005 18:46 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Nog een kleine debug tip:
Zoek de plek op waar je je connectie maakt en check hoe vaak dat stuk code wordt aangeroepen. Als je het goed programmeert dan zou dat 1 moeten zijn voor de hele JSP. En denk er ook aan om de connectie weer netjes af te sluiten. Dit gebeurt ook automatisch (als het goed is) wanneer je database object out of scope gaat, maar als je het zelf doet weet je in elk geval zeker dat het gebeurt.

Suc6 met debuggen.

edit:
tis misschien handig om alleen de relevante stukken van je jsp pagina te tonen, dus de html hier en daar samenvatten door te zeggen (afdrukken kop, alleen maar html) ofzo, dan wordt je startpost ook wat overzichtelijker :)

[ Voor 22% gewijzigd door bigbeng op 19-05-2005 18:56 ]


  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 30-04 16:44
ik dacht. Laat ik is gek doen

code:
1
2
3
4
5
<jsp:useBean id="ophalenBean" scope="request" class="beans.Items" />
<jsp:useBean id="ophalenBean2" scope="request" class="beans.Items" />
<jsp:useBean id="ophalenBean3" scope="request" class="beans.Items" />
<jsp:useBean id="ophalenBean4" scope="request" class="beans.Items" />
<jsp:useBean id="ophalenBean5" scope="request" class="beans.Items" />

dat in de JSP file gezet, eerst werd een dezelfde functie 5x aangeroepen(met andere variabel) en toen kreeg ik bij de 2x die problemen, nu heb ik ze alle 5 een unique bean gegeven (kwa naam) en dan no problemo at all. niet echt netjes natuurlijk, maar jah het werkt en kan nu door met mijn programma.. Zal dinsdag een Java Expert (zo noemen ze zich, of ze het zijn is een 2e) op me school raad plegen..Kan nu in ieder geval verder :)

bedankt voor de hulp iig
Pagina: 1