Apache Tomcat: Konfigurasi JNDI


Tomcat juga mendukung JNDI layaknya application server JEE lainnya, hanya saja konfigurasinya lebih tidak user-friendly. Kali ini aku akan mencoba membuat JNDI Resource yang berupa JDBC Data Sources sehingga aku dapat meng-akses database di kode program melalui nama JNDI. Keuntungannya, jika aku mengganti database, aku hanya perlu merubah konfigurasi JNDI Resource tanpa harus mengubah kode program sedikitpun.

Karena aku memakai Oracle Database 10g, aku men-copy file %ORACLE_HOME%\jdbc\lib\ojdbc14.jar (driver JDBC) ke lokasi %CATALINA_HOME%\lib (lokasi yang berisi library yang berlaku untuk seluruh aplikasi web). Lalu aku menambahkan baris berikut pada web.xml milik aplikasi web:

<resource-ref>
	<res-ref-name>jdbc/databaseDevelopment</res-ref-name>
	<res-type>javax.sql.DataSource</res-type>
	<res-auth>Container</res-auth>
</resource-ref>

Lalu, aku menambahkan baris berikut pada %CATALINA_HOME%\conf\context.xml:

 <Resource name="jdbc/databaseDevelopment"
 	auth="Container"
 	type="javax.sql.DataSource"
 	username="scott"
 	password="tiger"
 	driverClassName="oracle.jdbc.OracleDriver"
 	url="jdbc:oracle:oci:@latihan"
 	maxActive="1"
 	maxIdle="10"
 />

Pada konfigurasi di atas, aku memakai data source standard dari Tomcat yang berdasarkan pada DBCP connection pool (salah satu bagian dari Apache Common project). Setelah itu, aku dapat memulai kode di servlet, misalnya:

Context initialContext = new InitialContext();
Context envContext = (Context) initialContext.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/databaseDevelopment");

cn = ds.getConnection();
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery("SELECT ENAME FROM EMP");
while (rs.next()) {
	output.print(rs.getString(1) + "<br>");
}

Jika tidak ingin mengatur konfigurasi JNDI dengan cara manual, melainkan dengan interface berbasis web layaknya application server lain, aku dapat menggunakan AMS dari SpringSource tc Server.  Tentu saja kenyamanan ini diperoleh dengan biaya tertentu (tidak lagi gratis).

Perihal Solid Snake
I'm nothing...

2 Responses to Apache Tomcat: Konfigurasi JNDI

  1. visia mengatakan:

    jock, gimana cara mengganti koneksi dari aplikasi sesuai user yg login?
    disni asumsinya user yang login adalah user oracle yang sudah diberikan bberapa grant makanya pinginnya webku ada default koneksi webnya kan truss bila ada user yang lgin ke web tersebut koneksi webnya juga bisa change koneksi ke user bersangkutan.
    thx y

    • solidsnake99 mengatakan:

      sesudah user login, buat koneksi baru, tapi sebelumya panggil setUser dan setPassword sesuai dengan data login.. Kalau mau pooling dengan OCIConnectionPool, baca dokumentasinya di sini.

      There are two ways of calling getConnection:

      • OracleConnection getConnection()
      • If you do not supply the user name and password, then the default user name and password used for the creation of the connection pool are used while creating the connection objects.

      • OracleConnection getConnection(String user, String password)
      • Get a logical connection identified with the specified user name and password, which can be different from that used for pool creation.

      Btw, ini visia yang mana? koq bisa tahu nama gw?

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: