Akhirnya Saya bisa menulis kembali di blog ini, setelah terkungkung oleh kegiatan-kegiatan yang ada.
Susah-susah gampang, maen2 spring di JBOSS, perlu beberapa konfigurasi untuk menjinakkan JBOSS Menggunakan Spring.
Salah Satu diantaranya adalah Setting JNDI Lookup.
Okeh, JNDI itu apa seeh? JNDI adalah Java Naming and Directory Interface, waduh makanan apalagi ini?
Simplenya JNDI ini membuat aplikasi java yang kita buat, menjadi portable. Contoh kecilnya Koneksi database, Jika tidak menggunakan JNDI, Kita biasanya akan setting username, password dan URL didalam aplikasi, bisa melalui file properties ataupun file XML. Namun hal ini, menyebabkan aplikasi yang anda buat sedikit tidak portable, karena settingan username password nantinya akan ada dalam file java yang terkompilasi, walaupun bisa seeh di tricky in. Nah, dengan adanya JNDI ini, koneksi database tidak perlu di hard-coded lagi di aplikasi, melainkan cukup kita setting di Application Server saja. Selain koneksi database, JNDI bisa digunakan untuk JMS,JCA dll. Kalo mo lebih detail tentang JNDI bisa dibaca disini
Okeh, Sekarang saya mo kasih tips untuk koneksi database MySQL menggunakan JNDI,Spring dan JBoss.
pertama-tama kita buat dulu file mysql-ds.xml. File ini yang akan berisi JNDI dari koneksi database. File ini diletakkan di folder deploy. Kalo menggunakan settingan default server berarti letak file ada di $JBOSS_HOME/server/default/deploy
Isi dari file mysql-ds.xml adalah sebagai berikut:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<no-tx-datasource>
<jndi-name>jdbc/TestDB</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/test</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>test</user-name>
<password>test</password>
<connection-property name=”autoReconnect”>true</connection-property>
<min-pool-size>5</min-pool-size>
<max-pool-size>15</max-pool-size>
<idle-timeout-minutes>2</idle-timeout-minutes>
</no-tx-datasource>
</datasources>
tag <jndi-name> menunjukkan nama dri JNDI yang akan kita panggil nantinya. Di file tersebut juga sudah dibuatkan connection poolingnya, untuk menjaga database dari deadlock.
Setelah itu kita setting application context dari spring sebagai berikut:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx=”http://www.springframework.org/schema/tx”
xsichemaLocation=”
http://www.springframework.org/schema/be… http://www.springframework.org/schema/be…
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx…
http://www.springframework.org/schema/je…
http://www.springframework.org/schema/je…
“>
<jee:jndi-lookup jndi-name=”java:jdbc/TestDB” id=”dataSource” />
<tx:annotation-driven transaction-manager=”transactionManager” mode=”aspectj”/>
<bean id=”transactionManager”
class=”org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=”dataSource” ref=”dataSource” />
</bean>
yang perlu diperhatikan dari applicationcontext nya adalah bagian <jee:jndi-lookup jndi-name=”java:jdbc/TestDB” id=”dataSource” /> jndi-name samakan dengan yang ada di mysql-ds.xml jangan lupa tambahkan java: . settingan seperti ini tidak berlaku jika menggunakan Tomcat, kalo tomcat harus tambahkan java:comp/env/
Cukup sampai disini dulu tips mengenai JNDI di Spring, jika ada yang kurang jelas bisa menanyakan melalui kolom komentar dibawah, tetapi jangan melenceng ya pertanyaannya.