Avatar billede dannv Nybegynder
23. oktober 2003 - 09:55 Der er 11 kommentarer og
1 løsning

Placering af database forbindelse

Jeg har en hel bunke jsp sider som benytter en flok bønner. I mange af disse bønner bliver der oprettet fobindelse til min db.

Jeg er lidt i tvivl om jeg gør dette på den mest hensigtsmæssige måde. Hver bønne består jo af forskellig metoder som alle har kode til at oprette db adgang.

Er det hurtigere, at placerer det i jspinit på mine jsp sider, eller er der nogen som har en optimering til dette??
Avatar billede arne_v Ekspert
23. oktober 2003 - 10:01 #1
Du bør benytte en connection pool.

En måde er at definere en datasource i Tomcat og så lader
du din kode hente en connection fra den pool som Tomcat så styrer.
Avatar billede arne_v Ekspert
23. oktober 2003 - 10:06 #2
Eksempel (med MS Access via JDBC-ODBC bridge)
---------------------------------------------

tilføj til server.xml:

      <Context docBase="pooltest" path="/pooltest" reloadable="true">
            <Resource auth="Container" name="jdbc/TestMSAccess" type="javax.sql.DataSource" />
            <ResourceParams name="jdbc/TestMSAccess">
                <parameter>
                      <name>factory</name>
                      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                </parameter>
                <parameter>
                      <name>maxActive</name>
                      <value>100</value>
                </parameter>
                <parameter>
                      <name>maxIdle</name>
                      <value>30</value>
                </parameter>
                <parameter>
                      <name>maxWait</name>
                      <value>10000</value>
                </parameter>
                <parameter>
                      <name>username</name>
                      <value></value>
                </parameter>
                <parameter>
                      <name>password</name>
                      <value></value>
                </parameter>
                <parameter>
                      <name>driverClassName</name>
                      <value>sun.jdbc.odbc.JdbcOdbcDriver</value>
                </parameter>
                <parameter>
                      <name>url</name>
                      <value>jdbc:odbc:TestMSAccess</value>
                </parameter>
            </ResourceParams>
          </Context>

skab connection med:

        Context init = new InitialContext();
        Context ctx = (Context) init.lookup("java:comp/env");
        DataSource ds = (DataSource) ctx.lookup("jdbc/TestMSAccess");
        Connection con = ds.getConnection();

Resten af JDBC koden er helt som det plejer.

Det erstatter kun Class.forName og DriverManager.getConnection
kaldene.
Avatar billede dannv Nybegynder
23. oktober 2003 - 10:39 #3
Efter du nævnte connction pool har jeg kigget lidt her i eksperten. Der er der flere gange tale om en dbconnectionpool class fra http://www.webdevelopersjournal.com/columns/connection_pool.html....

fordele/ulemper ved de to metoder...???

--------------

Til dit svar... jeg opbygger min server.xml med ovenstående; skal connection delen ligge på jsp siderne eller i bønnerne?
Avatar billede arne_v Ekspert
23. oktober 2003 - 10:51 #4
Den artikel er jo fra 1999.

Der er løbet en del vand i havet siden da.

Det er sikkert en udmærket connection pool. Men hvorfor bruge en
ekstern connection pool, når Tomcat kommer med en ?

(det gjorde Tomcat sikkert ikke i 1999)
Avatar billede arne_v Ekspert
23. oktober 2003 - 10:53 #5
Du kan putte den kode både i JSP <% %> og i bønner.
Avatar billede dannv Nybegynder
23. oktober 2003 - 10:55 #6
OK jeg prøver lige, og vender tilbage.... sikkert med problemer...!! :-)
Avatar billede arne_v Ekspert
23. oktober 2003 - 10:55 #7
Og du skal ikke være bange for at oprette og close en sådan pool connection.

Fordi de der sker er at:
  - Tomcat opretter f.eks. 10 fysiske connections til databasen
  - du låner en af dem med getConnection
  - du leverer den tilbage med close

At etablere en fysisk connection er dyrt, men det er meget hurtigere
at låne og tilbagelevere en fra en pool.
Avatar billede dannv Nybegynder
23. oktober 2003 - 13:07 #8
Det er det rene lækkerier.... tak for det. Det er jo altid dejlig nemt når man kan få Tomcat eller noget andet til at gøre de besværlige for én...
Avatar billede samuelsen Nybegynder
24. marts 2004 - 15:16 #9
Hej! Kunne jeg få lidt hjælp, hvad skal jeg ændre:
Context ctx = (Context) init.lookup("java:comp/env");
kan du evt. give et eksempel arnev?

Venlig hilsen
samuelsen
Avatar billede arne_v Ekspert
24. marts 2004 - 15:24 #10
Prøv og læs min artikel om web apps med Tomcat - der beskrives
brug af connection pool.
Avatar billede samuelsen Nybegynder
24. marts 2004 - 15:26 #11
hvor kan jeg finde den artikel?
Avatar billede arne_v Ekspert
24. marts 2004 - 15:29 #12
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester