Apa itu JNDI ?
Apa penggunaan dasarnya?
Kapan itu digunakan?
Apa itu JNDI ?
Apa penggunaan dasarnya?
Kapan itu digunakan?
Jawaban:
Apa itu JNDI?
Itu adalah singkatan dari Java Naming dan Directory Interface .
Apa penggunaan dasarnya?
JNDI memungkinkan aplikasi terdistribusi untuk mencari layanan secara abstrak, sumber daya independen.
Kapan digunakan?
Kasing penggunaan yang paling umum adalah menyiapkan kumpulan koneksi database pada server aplikasi Java EE. Aplikasi apa pun yang digunakan pada server itu dapat memperoleh akses ke koneksi yang mereka butuhkan menggunakan nama JNDI java:comp/env/FooBarPool
tanpa harus mengetahui detail tentang koneksi.
Ini memiliki beberapa keunggulan:
devl->int->test->prod
lingkungan, Anda dapat menggunakan nama JNDI yang sama di setiap lingkungan dan menyembunyikan database aktual yang sedang digunakan. Aplikasi tidak harus berubah karena mereka bermigrasi di antara lingkungan.Apa itu JNDI?
Java Naming dan Directory Interface TM (JNDI) adalah antarmuka pemrograman aplikasi (API) yang menyediakan fungsi penamaan dan direktori untuk aplikasi yang ditulis menggunakan bahasa pemrograman Java TM . Ini didefinisikan independen dari implementasi layanan direktori spesifik. Dengan demikian berbagai direktori (baru, baru muncul, dan sudah digunakan) dapat diakses secara umum.
Apa penggunaan dasarnya?
Sebagian besar dibahas dalam jawaban di atas tetapi saya ingin memberikan arsitektur di sini sehingga di atas akan lebih masuk akal.
Untuk menggunakan JNDI, Anda harus memiliki kelas JNDI dan satu atau lebih penyedia layanan. Java 2 SDK, v1.3 mencakup tiga penyedia layanan untuk layanan penamaan / direktori berikut:
Jadi pada dasarnya Anda membuat objek dan mendaftarkannya pada layanan direktori yang nantinya dapat Anda lakukan pencarian dan menjalankan operasi.
JNDI dalam istilah awam pada dasarnya adalah sebuah Antarmuka karena bisa mendapatkan contoh sumber daya internal / eksternal seperti
javax.sql.DataSource,
javax.jms.Connection-Factory,
javax.jms.QueueConnectionFactory,
javax.jms.TopicConnectionFactory,
javax.mail.Session, java.net.URL,
javax.resource.cci.ConnectionFactory,
atau jenis lain yang ditentukan oleh adaptor sumber daya JCA. Ini memberikan sintaks untuk dapat membuat akses apakah itu internal atau eksternal. yaitu (comp / env dalam contoh ini berarti di mana komponen / lingkungan, ada banyak sintaks lainnya):
jndiContext.lookup("java:comp/env/persistence/customerDB");
java.lang.String
untuk informasi konfigurasi.
Ikhtisar JNDI
JNDI adalah API yang ditentukan dalam teknologi Java yang menyediakan fungsi penamaan dan direktori untuk aplikasi yang ditulis dalam bahasa pemrograman Java. Ini dirancang khusus untuk platform Java menggunakan model objek Java. Menggunakan JNDI, aplikasi yang berbasis pada teknologi Java dapat menyimpan dan mengambil objek Java yang disebut dari jenis apa pun. Selain itu, JNDI menyediakan metode untuk melakukan operasi direktori standar, seperti mengaitkan atribut dengan objek dan mencari objek menggunakan atributnya.
JNDI juga didefinisikan independen dari setiap penamaan atau implementasi layanan direktori spesifik. Ini memungkinkan aplikasi mengakses layanan penamaan dan direktori yang berbeda, mungkin banyak, menggunakan API umum. Penyedia layanan penamaan dan direktori yang berbeda dapat terhubung dengan mulus di belakang API umum ini. Ini memungkinkan aplikasi berbasis teknologi Java untuk memanfaatkan informasi dalam berbagai layanan penamaan dan direktori yang ada, seperti LDAP, NDS, DNS, dan NIS (YP), serta memungkinkan aplikasi untuk hidup berdampingan dengan perangkat lunak dan sistem lama.
Menggunakan JNDI sebagai alat, Anda dapat membangun aplikasi yang kuat dan portabel yang tidak hanya memanfaatkan model objek Java tetapi juga terintegrasi dengan lingkungan di mana mereka ditempatkan.
Apa itu JNDI?
JNDI adalah singkatan dari Java Naming and Directory Interface. Muncul standar dengan J2EE.
Apa penggunaan dasarnya?
Dengan API ini, Anda dapat mengakses berbagai jenis data, seperti objek, perangkat, file penamaan dan layanan direktori, misalnya. digunakan oleh EJB untuk menemukan objek jarak jauh. JNDI dirancang untuk menyediakan antarmuka umum untuk mengakses layanan yang ada seperti DNS, NDS, LDAP, CORBA, dan RMI.
Kapan digunakan?
Anda dapat menggunakan JNDI untuk melakukan operasi penamaan, termasuk operasi baca dan operasi untuk memperbarui namespace. Operasi berikut dijelaskan di sini .
Layanan penamaan mengaitkan nama dengan objek dan menemukan objek berdasarkan nama yang diberikan. (RMI registry adalah contoh yang baik dari layanan penamaan.) JNDI menyediakan antarmuka umum untuk banyak layanan penamaan yang ada, seperti LDAP, DNS.
Tanpa JNDI, informasi lokasi atau akses sumber daya jarak jauh harus dikodekan dalam aplikasi atau disediakan dalam konfigurasi. Mempertahankan informasi ini cukup membosankan dan rawan kesalahan.
Saya hanya ingin tahu mengapa dokumen resmi begitu diabaikan yang sudah menguraikan detail dengan cermat.
Tetapi jika Anda ingin memahami kasusnya, silakan merujuk ke jawaban duffymo .
Java Naming dan Directory Interface TM (JNDI) adalah antarmuka pemrograman aplikasi (API) yang menyediakan fungsi penamaan dan direktori untuk aplikasi yang ditulis menggunakan bahasa pemrograman Java TM . Ini didefinisikan independen dari implementasi layanan direktori spesifik. Dengan demikian berbagai direktori - baru, baru muncul, dan sudah digunakan - dapat diakses dengan cara yang umum.
Dan arsitekturnya
Dan biasanya cara Anda menggunakannya .
I am just curious why the official docs are so ignored which elaborate the details meticulously already
Mungkin karena mereka tidak menjelaskan dengan cara yang cukup sehingga orang awam bisa mengerti?
Saya akan menggunakan satu contoh untuk menjelaskan bagaimana JNDI dapat digunakan untuk mengkonfigurasi database tanpa pengembang aplikasi mengetahui nama pengguna dan kata sandi dari database.
1) Kami telah mengkonfigurasi sumber data di standalone-full.xml server JBoss . Selain itu, kami juga dapat mengonfigurasi detail kolam.
<datasource jta="false" jndi-name="java:/DEV.DS" pool-name="DEV" enabled="true" use-ccm="false">
<connection-url>jdbc:oracle:thin:@<IP>:1521:DEV</connection-url>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<driver>oracle</driver>
<security>
<user-name>usname</user-name>
<password>pass</password>
</security>
<security>
<security-domain>encryptedSecurityDomain</security-domain>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<background-validation-millis>1</background-validation-millis>
</validation>
<statement>
<prepared-statement-cache-size>0</prepared-statement-cache-size>
<share-prepared-statements>false</share-prepared-statements>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>10</max-pool-size>
</pool>
</statement>
</datasource>
Sekarang, nama jndi ini dan objek sumber datanya yang terkait akan tersedia untuk aplikasi kita. Aplikasi.
2) Kita dapat mengambil objek sumber data ini menggunakan kelas JndiDataSourceLookup.
Spring akan instantiate bean sumber data, setelah kami memberikan nama jndi.
Sekarang, kita dapat mengubah ukuran kumpulan, nama pengguna atau kata sandi sesuai lingkungan atau persyaratan kita, tetapi itu tidak akan berdampak pada aplikasi.
Catatan : terenkripsiSecurityDomain, kita perlu mengkonfigurasinya secara terpisah di server JBoss seperti
<security-domain name="encryptedSecurityDomain" cache-type="default">
<authentication>
<login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
<module-option name="username" value="<usernamefordb>"/>
<module-option name="password" value="894c8a6aegc8d028ce169c596d67afd0"/>
</login-module>
</authentication>
</security-domain>
Ini adalah salah satu kasus penggunaan. Semoga ini menjelaskan.
Penjelasan terbaik untuk saya diberikan di sini
Apa itu JNDI?
Ini adalah API untuk menyediakan akses ke layanan direktori, yaitu, nama pemetaan layanan (string) dengan objek, referensi ke objek jarak jauh atau data sederhana . Ini disebut mengikat. Himpunan binding disebut konteks . Aplikasi menggunakan antarmuka JNDI untuk mengakses sumber daya.
Sederhananya, itu seperti sebuah hashmap dengan kunci String dan nilai-nilai Object yang mewakili sumber daya di web.
Masalah Apa yang Dipecahkan JNDI
Tanpa JNDI, informasi lokasi atau akses sumber daya jarak jauh harus dikodekan dalam aplikasi atau disediakan dalam konfigurasi. Mempertahankan informasi ini cukup membosankan dan rawan kesalahan.
Jika sumber daya telah dipindahkan di server lain, dengan alamat IP lain, misalnya, semua aplikasi yang menggunakan sumber daya ini harus diperbarui dengan informasi baru ini. Dengan JNDI, ini tidak perlu. Hanya pengikatan sumber daya yang sesuai harus diperbarui. Aplikasi masih dapat mengaksesnya dengan namanya dan relokasi transparan.