Lingkungan konfigurasi kumpulan koneksi database SQL Server2000 Tomcat di JSP:
1. Basis Data: Microsoft SQL Server 2000
2. Driver basis data: net.sourceforge.jtds.jdbc.Driver
Ikhtisar JNDI (Penamaan Java dan Antarmuka Direktori):
Tomcat4(5) menyediakan contoh implementasi JNDI--InitialContext yang kompatibel dengan layanan aplikasi Java Enterprise Edition. Data awalnya diatur dalam file $CATALINA_HOME/conf/server.xml dan dapat direferensikan oleh elemen berikut dalam deskripsi lingkungan aplikasi web (/WEB-INF/web.xml):
1) <env-entry>--Entri lingkungan, atur cara aplikasi beroperasi.
2) <resource-ref>--Parameter sumber daya, biasanya driver basis data, Sesi JavaMail, pabrik kelas khusus, dll.
3) <resource-env-ref>--Dalam Servlet 2.4, digunakan untuk menyederhanakan pengaturan sumber daya yang tidak memerlukan informasi otentikasi, seperti parameter lingkungan dan variabel referensi sumber daya.
InitialContext diatur ketika aplikasi web diinisialisasi untuk mendukung komponen aplikasi web. Semua entri dan sumber daya ditempatkan di bagian java:comp/env pada namespace JNDI. Klik pada URL berikut untuk informasi lebih lanjut:
1) Penamaan Java dan Antarmuka Direktori
2) Spesifikasi Platform J2EE
Menyiapkan sumber daya JNDI Untuk menyiapkan sumber daya JNDI, gunakan pengidentifikasi berikut dalam file $CATALINA_HOME/conf/server.xml:
1) <Lingkungan>--Tetapkan nama dan nilai entri JNDI InitialContext variabel dalam domain (setara dengan <env-entry> yang disebutkan di atas).
2) <Resource>--Tetapkan nama dan jenis sumber daya yang tersedia untuk aplikasi (setara dengan <resource-ref> yang disebutkan di atas).
3) <ResourceParams>--Tetapkan nama pabrik kelas sumber daya Java atau atribut JavaBean yang akan digunakan.
4) <ResourceLink>--Tambahkan tautan ke lingkungan JNDI global (Konteks JNDI).
Pengidentifikasi di atas harus ditempatkan di antara <Context> dan </Context> (untuk aplikasi web khusus) atau antara <DefaultContext> dan </DefaultContext>.
Selain itu, nama dan nilai yang ditetapkan dalam Deskriptor Aplikasi Web (/WEB-INF/web.xml) juga diatur dalam Konteks Awal, ketika diaktifkan oleh nilai elemen <Environemt> akan diatur ulang ke nilai awalnya.
Variabel global dapat diatur di <GlobalNamingResources> dari elemen turunan <Server>.
Ikhtisar kumpulan koneksi database:
Koneksi database adalah sumber daya yang penting, terbatas, dan mahal, terutama dalam aplikasi web multi-pengguna. Pengelolaan koneksi database dapat secara signifikan mempengaruhi skalabilitas dan ketahanan seluruh aplikasi serta mempengaruhi indikator kinerja program. Kumpulan koneksi database diusulkan untuk mengatasi masalah ini.
Kumpulan koneksi database bertanggung jawab untuk mengalokasikan, mengelola, dan melepaskan koneksi database. Hal ini memungkinkan aplikasi untuk menggunakan kembali koneksi database yang ada alih-alih membuat kembali koneksi database rilis yang waktu idlenya melebihi waktu idle maksimum untuk menghindari kesalahan karena kegagalan rilis koneksi database. Disebabkan oleh koneksi database yang hilang. Teknologi ini secara signifikan dapat meningkatkan kinerja operasi database.
Kumpulan koneksi database akan membuat sejumlah koneksi database dan memasukkannya ke dalam kumpulan koneksi selama inisialisasi. Jumlah koneksi database ini diatur oleh jumlah minimum koneksi database. Terlepas dari apakah koneksi database ini digunakan atau tidak, kumpulan koneksi akan selalu dijamin memiliki setidaknya koneksi sebanyak ini. Jumlah maksimum koneksi database dalam kumpulan koneksi membatasi jumlah maksimum koneksi yang dapat ditempati oleh kumpulan koneksi. Ketika jumlah koneksi yang diminta oleh aplikasi dari kumpulan koneksi melebihi jumlah maksimum koneksi, permintaan ini akan ditambahkan ke antrian menunggu. Pengaturan jumlah minimum koneksi dan jumlah maksimum koneksi dalam kumpulan koneksi database harus mempertimbangkan faktor-faktor berikut:
1) Jumlah koneksi minimum adalah jumlah koneksi database yang dikelola oleh kumpulan koneksi, jadi jika aplikasi tidak menggunakan koneksi database dalam jumlah besar, sumber daya koneksi database dalam jumlah besar akan terbuang sia-sia;
2) Jumlah maksimum koneksi adalah jumlah maksimum koneksi yang dapat diterapkan oleh kumpulan koneksi. Jika permintaan koneksi database melebihi jumlah ini, permintaan koneksi database berikutnya akan ditambahkan ke antrian tunggu, yang akan mempengaruhi operasi database selanjutnya.
3) Jika perbedaan antara jumlah minimum koneksi dan jumlah maksimum koneksi terlalu besar, permintaan koneksi pertama akan menguntungkan, dan permintaan koneksi berikutnya yang melebihi jumlah koneksi minimum sama dengan membuat koneksi database baru. Namun, koneksi database yang lebih besar dari jumlah koneksi minimum tidak akan segera dilepaskan setelah digunakan. Koneksi tersebut akan ditempatkan di kumpulan koneksi untuk menunggu digunakan kembali atau dilepaskan setelah waktu henti habis.
Prasyarat untuk mengonfigurasi kumpulan koneksi database Tomcat:
1. Lingkungan runtime Java harus diinstal;
2. Harus ada server database SQL Server2000 (tidak harus lokal);
3. Anda harus memiliki jtds.jar dan meletakkannya di direktori $CATALINA_HOME/common/lib (hanya di sini). Ini digunakan karena driver Java SQL Server Microsoft tidak mendukung kueri sekunder, yang dapat ditemukan online. Saat ini menggunakan jtds-0.6.jar.
Atur kumpulan koneksi database di $CATALINA_HOME/conf/server.xml:
Berikut kode konfigurasi yang harus ditempatkan di antara <Host> dan </Host>.
<Jalur konteks="/kualitas" docBase="kualitas" debug="0" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_quality_log." suffix=".txt" timestamp="true"/>
<Nama sumber daya="jdbc/connectDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams nama="jdbc/connectDB">
<parameter>
<nama>maxAktif</nama>
<!-- Jumlah maksimum koneksi DB di pool.Set ke 0 tanpa batas -->
<nilai>100</nilai>
</parameter>
<parameter>
<nama>maxIdle</nama>
<!-- Jumlah maksimum koneksi DB yang menganggur untuk dipertahankan di kumpulan. Setel ke 0 tanpa batas -->
<nilai>30</nilai>
</parameter>
<parameter>
<nama>maxTunggu</nama>
<!-- Waktu maksimum untuk menunggu koneksi DB tersedia dalam ms. Pengecualian diberikan jika batas waktu ini terlampaui. Setel ke -1 untuk menunggu tanpa batas -->
<nilai>10.000</nilai>
</parameter>
<parameter>
<name>hapus Ditinggalkan</name>
<!-- Koneksi DB yang terbengkalai dihapus dan didaur ulang -->
<nilai>benar</nilai>
</parameter>
<parameter>
<name>hapusAbandonedTimeout</name>
<!-- Gunakan parameter deleteAbandonedTimeout untuk mengatur jumlah detik koneksi DB tidak aktif sebelum dianggap ditinggalkan -->
<nilai>60</nilai>
</parameter>
<parameter>
<name>logDitinggalkan</name>
<!-- Catat jejak tumpukan kode yang ditinggalkan -->
<nilai>salah</nilai>
</parameter>
<parameter>
<nama>pabrik</nama>
<!-Pabrik Sumber Data Dasar DBCP -->
<value>org.apache.commons.dbcp.BasicDataSourceFactory</nilai>
</parameter>
<parameter>
<nama>nama pengguna</nama>
<!-- Nama Pengguna Basis Data -->
<value>Iorishinier</value>
</parameter>
<parameter>
<nama>kata sandi</nama>
<!-- Kata Sandi Pengguna -->
<value>passwd saya</value>
</parameter>
<parameter>
<nama>namaKelasPengemudi</nama>
<!-- Nama Kelas Driver Basis Data -->
<nilai>net.sourceforge.jtds.jdbc.Driver</nilai>
</parameter>
<parameter>
<nama>url</nama>
<!-- Alamat Basis Data -->
<nilai>jdbc:jtds:sqlserver://127.127.127.127:1433/Northwind</nilai>
</parameter>
</ResourceParams>
</Konteks>
Berikut penjelasan beberapa parameternya:
<Jalur konteks="/kualitas" docBase="kualitas" debug="0" reloadable="true" crossContext="true">
di dalam:
1) jalur menentukan jalur, direktori kualitas yang ditetapkan di sini adalah $CATALINA_HOME/webapps;
2) direktori akar file docBase.
3) reloader Apakah akan mengkompilasi ulang ketika halaman web diperbarui.
4) maxActive Jumlah maksimum koneksi database di kumpulan koneksi. Setel ke 0 tanpa batas.
5) maxIdle Waktu idle maksimum koneksi database. Di luar waktu idle ini, koneksi database akan ditandai sebagai tidak tersedia dan kemudian dilepaskan. Setel ke 0 tanpa batas.
6) maxWait adalah waktu tunggu maksimum untuk membuat koneksi. Jika waktu ini terlampaui, pengecualian akan diterima. Setel ke -1 untuk menunjukkan tidak ada batas.
7) deleteAbandoned mendaur ulang koneksi database yang ditinggalkan (biasanya lupa dilepaskan) ke dalam kumpulan koneksi.
8) hapusAbandonedTimeout Jika koneksi database tidak digunakan untuk waktu yang lama, maka akan dianggap ditinggalkan dan dikembalikan ke kumpulan koneksi.
9) logAbandoned mencatat daur ulang koneksi database yang ditinggalkan.
10) driverClassName driver JDBC.
11) String koneksi database url menetapkan sumber daya yang direferensikan di $CATALINA_HOME/webapps/quality/WEB-INF/web.xml:
Berikut kode konfigurasi yang harus ditempatkan di <web-app> dan </web-app>.
<!-- Konfigurasi Basis Data dimulai -->
<referensi-sumber daya>
<deskripsi>uji connectDB</deskripsi>
<res-ref-name>jdbc/connectDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Wadah</res-auth>
</resource-ref>
<!-- Konfigurasi Basis Data berakhir -->
Berikut ini adalah penjelasan parameter yang diperlukan:
1) deskripsi Deskripsi sumber daya yang direferensikan.
2) nama sumber daya res-ref-name. Lihat <ResourceParams name="jdbc/connectDB"> di atas
3) tipe sumber daya tipe ulang. Lihat <Resource name="jdbc/connectDB" auth="Container" type="javax.sql.DataSource"/> di atas
Menggunakan sumber daya di JSP:
Ini adalah bagian dari kode untuk file halaman web jsp di subdirektori tertentu di bawah $CATALINA_HOME/webapps/quality:
<%@ halaman contentType="text/html;charset=GBK"%>
<%@ halaman errorPage="error.jsp"%>
<%@ halaman import="javax.naming.*"%>
<%@ halaman import="javax.sql.*"%>
<%@ halaman import="java.sql.*"%>
<html>
<kepala>
</kepala>
<tubuh>
<%
………………
……………
// Operasi basis data
Konteks ctx=null;
Koneksi cnn=null;
Pernyataan stmt=null;
Set Hasil rs=null;
mencoba
{
ctx=Konteks Awal baru();
jika(ctx==batal)
throw new Exception("Tidak ada lingkungan yang cocok");
Sumber Data ds=(Sumber Data)ctx.lookup("java:comp/env/jdbc/connectDB");
jika(ds==batal)
throw new Exception("Tidak ada database yang cocok");
cnn=ds.getConnection();
stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
tabel1
");
……………
}
Akhirnya
{
jika(rs!=batal)
rs.close();
jika(stmt!=batal)
stmt.tutup();
jika(cnn!=batal)
cnn.tutup();
jika(ctx!=batal)
ctx.tutup();
}
%>
</tubuh>
</html>
Deskripsi kode:
Sumber Data ds=(Sumber Data)ctx.lookup("java:comp/env/jdbc/connectDB");
Kalimat di atas menerapkan sumber daya yang baru saja ditetapkan.
Merupakan kebiasaan yang baik untuk melepaskan sumber daya setelah digunakan, terutama sumber daya Konteks. Lihat segmen kode akhirnya di bagian coba-tangkap-akhirnya. Jika sumber daya tingkat atas dilepaskan selama pelepasan sumber daya, sumber daya tingkat bawah akan dilepaskan terlebih dahulu. Misalnya: jika ctx dirilis, urutan rilis sumber daya adalah rs, stmt, cnn, ctx. Dengan kata lain, jika ctx dirilis, rs, stmt dan cnn tidak akan tersedia.
Pelepasan sumber daya di sini hanya mengembalikan koneksi database ke kumpulan koneksi, dan tidak benar-benar melepaskan sumber daya. Lihat gambaran umum kumpulan koneksi database.