Nie wiedziałem nawet, że używanie tnsnames z cienkim sterownikiem jest możliwe, ale podobno zostało to dodane gdzieś w wersji 10:
http://docs.oracle.com/cd/B19306_01/java.102/b14355/urls.htm#BEIDIJCE
W szczególności:
Uwaga:
W przypadku używania TNSNames ze sterownikiem JDBC Thin należy ustawić właściwość oracle.net.tns_admin na katalog zawierający plik tnsnames.ora.
java -Doracle.net.tns_admin=%ORACLE_HOME%\network\admin
Jak wspomniano, nie sprawdziłem, czy to faktycznie działa.
Nie sądzę, że logika „znajdź rzeczywisty katalog konfiguracji sieci” jest dostępna za pośrednictwem jakiejś funkcji Oracle. Będziesz musiał to zrobić ręcznie, jak opisano w twoim pytaniu, lub może polegać na obecności zmiennej środowiskowej TNS_ADMIN. W takim przypadku wywołanie java byłoby
java -Doracle.net.tns_admin=%TNS_ADMIN%