ODI, Jython ve Bağlantı Testi Başar Gülcü tarafından yazıldı. Pazartesi, 12 Eylül 2011 15:06 - Son Güncelleme Pazartesi, 05 Aralık 2011 21:04 ODI’de Jython kodu yazarken sorun yaşandığı konusunda birçok sorun iletildi. Özellikle Jython kurulup kodun denenmesine rağmen yaşanan sorunlar epey var. ODI, Jython’un 2.1 versiyonunu kullanıyor. Bu, ODI’nin kullandığı kütüphanelere doğrudan entegre edilmiş bir versiyondur. Jython’un ise 2.2 versiyonundan itibaren baya köklü değişikliklere uğradığı aşikar. Haliyle v2.2'de çalışan kodlar v2.1'de çalışmıyor. Jython kodlarını test etmek için aslında bilgisayarınıza Jython’u kurmanız dahi gerekmiyor. $ODI_HOME/bin klasörünün altında bildiğiniz gibi tüm çalıştırılabilir ODI programları bulunuyor, designer, operator gibi. Bunları çalıştırmak için nasıl ki designer[.bat|.sh] kullanıyorsak, aynı şekilde komut sisteminden jython[.bat|.sh]‘ı çalıştırırsak bize jython interpreter’ını getirir. Buradan satır satır kodumuzun çalışıp çalışmadığını test edebiliriz. Tek ufak sorun, v2.2 kadar gelişmiş olmaması nedeniyle silme, yazılanı editleme vb. Işlemlerde sorunlar yaşayabilirsiniz. Bu nedenle kodu yazıp satır satır kopyalayarak ilerlemek ilk başlarda işinizi kolaylaştıracaktır. *** ODI, hata belirtme konusunda oldukça sıkıntılı bir programdır. Nerede hata yaşadığını söylemekten çok, hata olduğunu söyler ki bu da sorun çözümü için yeterli değildir. Özellikle yeni bir sistemle bağlantı kurarken sorunun birçok kaynağı bulunabilir. Bunlardan en temel iki nokta hedef sisteme erişimimiz olup olmadığı ve bulduğumuz driver’ın sistemde çalışıp çalışmadığıdır. Bu iki temel sorun varsa zaten ilerlememiz mümkün olmadığı için, onların test edilmesi önceliklidir. Özellikle driver’ların yeni olduğu durumlarda, repository’nin bulunduğu makinaya driver’ları kopyaladıktan sonra agent’ların yeniden başlatılması gerektiği için öncelikle test etmek güvenli bir yöntemdir. Bu aşamada Jython kodu kullanarak bağlantımızı test edersek, satır satır ilerleyebildiğimiz için ODI’nin hata belirtme sıkıntısının üstesinden gelmiş oluruz. Biz bu iş için aşağıdaki kodu kullanıyoruz. {kodgna class="brush:java;"} import java.lang as lib_lang import java.sql as lib_sql jdriver = "oracle.jdbc.driver.OracleDriver" # Java source driver url = "jdbc:oracle:thin:@192.168.1.101:1521:ORCL" # jdbc url user_name = "ODS" # Source user name password = "password" # Source user password 1/2 ODI, Jython ve Bağlantı Testi Başar Gülcü tarafından yazıldı. Pazartesi, 12 Eylül 2011 15:06 - Son Güncelleme Pazartesi, 05 Aralık 2011 21:04 lib_lang.Class.forName(jdriver) # Register the driver jdbc = lib_sql.DriverManager.getConnection(url, user_name, password) stmt = jdbc.createStatement() # Create java statement dyn_task = "select sysdate from dual" result_set = stmt.executeQuery(dyn_task) while result_set.next() > 0: print result_set.getString(1) {/kodgna} Driver’da bir sorun varsa driver’ı tanımlarken (9. satır) hata ile karşılaşırız. Bu noktada ya jdriver değişkenini kontrol etmeli ya da driver’ın kendisinde bir hata olup olmadığını araştırmalıyız. Eğer bağlantıda sorun varsa 10. satırdan sonra sorun çıkacaktır. Buradaki sorunun kaynağı doğrudan bağlantıysa url değişkenini, login hatası geliyorsa da bize verilen kullanıcı adını ve şifreyi kontrol etmemiz gerekir. jdriver ve url değişkenlerini uygun şekilde değiştirerek başka sistemlere, database’lere de bağlantılar test edilebilir. 2/2