2016-04-11 11 views
0

Aslında bir Liferay portletinin temel web sitesi olan bir java web sayfası kodunu kontrol ediyorum.Java "Bağlam" sınıfı ne için kullanılır?

Sunucu tarafındaki .java dosyalarını ve bir DAO kalıp dosyasında, programlayıcının DB bağlantılarıyla nasıl ilgileneceğini kontrol ediyordum. Ben normalde bir bağlantı nesnesi ama burada, DriverManager sınıfa çağırarak olsun Java SE, alışkınım, işler çok farklıdır: Bunu yapmak

initContext = new InitialContext(); 
envContext = (Context) initContext.lookup("java:/comp/env"); 
ds = (DataSource) envContext.lookup("jdbc/SSMoracle"); 
conn = ds.getConnection(); 

, nesne conn, DB düzgün bir bağlantı alır ve mükemmel çalışıyor. Bununla birlikte, özellikle de Context sınıfının nasıl çalıştığını hiç görmedim.

Bu sınıf ne yapar ve uygun bağlantıyı almak için DriverManager numaralı telefonu kullanmak yerine neden kullanılır? Ben bilmek isterim!

+0

Bağlam bir arayüz:

örneğin, Apache Tomcat dokümantasyon Tomcat servlet kabı işleviyle Bunun nasıl çalıştığını görmek için, bir göz atın. –

+0

JNDI'nin temel sınıfıdır. Bazı belgeleri okumalısın. Çok geniş. – EJP

cevap

2

Bu, Java Adlandırma ve Dizin Arabirimi olan JNDI'un bir parçasıdır. Bu, bir Java EE kabının sunduğu servislerden biridir.

Uygulamalar, JNDI'daki veri kaynakları (veritabanı erişimi için) gibi şeyleri arayabilir. Bir yönetici, Java EE kabının yönetim konsolunda bir veri kaynağı tanımlayabilir ve yapılandırabilir.

Sorunuzda sahip olduğunuz kod satırları tam olarak şunu yapar: DataSource'u JNDI aracılığıyla arayın ve ardından DataSource'dan bir veritabanı bağlantısı alın. JNDI Resources HOW-TO ve JNDI Datasource HOW-TO

+0

Teşekkürler! Ancak, bunu neden örneğin bir sürücü kullanarak (örneğin DriverManager kullanıyor) bir bağlantıyı kullanmak yerine kullanmalıyım? Diğer bir deyişle, JNEE projesinde JNDI kullanmanın gerekli olduğunu düşünüyor musunuz? – Zerok

+0

Bu, yöneticiye veritabanı bağlantılarını yönetme (Java EE sunucusunun yönetim konsolunda) ve [bağlantı havuzu oluşturma] (https://en.wikipedia.org/wiki/Connection_pool) yapılabilmesini sağladığı için merkezi bir yer sağlar.). – Jesper

+0

Bağlantı havuzu, JNDI'yi her Java EE projesine bağlantı havuzuyla birlikte kullanmayı düşünmek için, perfomance'yi geliştirecek kadar iyi midir? – Zerok