2016-01-03 16 views
5

Tomcat JDBC veri kaynağından bağlantı alan basit bir web sunucum var. Bağlantı kullanımını izlemek için bağlantıyı açıp kapatırken kayıt yapmayı planlıyorum. Günlüğün böyle bir şey yazdırması gerekiyordu.Bir nesneyi benzersiz olarak nasıl adlandırılır

20151230143623.947[Thread-3] INFO [DataSourceManager:19] Opened connection identified by id : BlahBlahBlah1 
20151230143623.947[Thread-3] INFO [DataSourceManager:19] Closed connection identified by id : BlahBlahBlah1 

Açık ve kapalı yöntemlerim böyle. İşte

Connection openConnection(String JNDILookupName) throws Exception { 
    Connection connection = DataSourceManager.getConnection(JNDILookupName); 
    logDBOperation("Opened", connection.toString()); 
    return connection; 
} 
Connection closeConnection(String JNDILookupName) throws Exception { 
    connection.close(); 
    logDBOperation("Closed", connection.toString()); 
} 
void logDBOperation(String operation, String connecitonName){ 
    logger.info(operation+" connection identified by id : "+connectionName); 
} 

Ben Günlüklerine Connection'ın benzersiz isim olarak connection.toString() kullanıyorum. Ama bunu yapmanın daha iyi bir yolu olup olmadığını bilmek istiyorum.

+1

Hangi nesneyi yazdırmaya çalışıyorsunuz? Yazdırmaya çalıştığınız sınıf, 'toString() 'işlevini geçersiz kılmamış gibi görünüyor. –

+0

Herhangi bir nesneyi yazdırmaya çalışmıyorum. Sadece açtığım veya kapattığım Bağlantı nesnesinin ** adını göstermek istiyorum. –

+0

ve bir kodu postayla gönderin .. –

cevap

2

Object süper sınıfı üzerinde varsayılan toString() uygulamasını kullanın.

Zaten sizin için yapar:

getClass().getName() + '@' + Integer.toHexString(hashCode()) 

toHexString(hashCode()) orada size benzersiz kimliği verecektir. Ve bu, JVM'nin benzersiz bir değer olacağını garanti eder.

+0

'a yardım ederse Kod snippet'leri ekledim. Bu yaklaşımı da planlıyordum ve bu belgeyi okudum http://eclipsesource.com/blogs/2012/09/04/the-3-things-you-should-know -about-hashcode/Ve bu kaynak başına hashCode her nesne için benzersiz olması gerekmez. Diğer seçenekler için bakmam gereken yer burasıydı. –

+0

@RajaAnbazhagan, aynı anda aynı anda açık olan iki Bağlantı için iki 'hashCode()' un şansının sıfıra eşittir. Denize gitmek ve% 100 benzersiz yapmak istiyorsanız, hashCode() + '-' + System.nanoTime() 'gibi bir şey yapın. Ben işletmelerde jwbc hata ayıklama –

+0

hata ayıklama yaparken sadece iyi bir id olarak benzersiz bir id olarak hashCode() 'kullanabiliyorum Sonunda, hashcode yaklaşımının hexString ile gitmeye karar verdi. –

İlgili konular