Wednesday 4 July 2007

Weblogic xml'de İnce Parametre Hesapları

Struts 1 çatısı üzerine proje geliştirirken genelde gözden kaçırdığımız ya da önemsemediğimiz noktalar, ileride başımıza iş açabiliyor. Bunun en basit örneği, proje içinden webservis çağırmak için kullanılan axis kütüphanelerinin hem proje WEB-INF/lib klasöründe olması hem de APP-INF altında olmasından kaynaklanan sorunlar. Sadece axis için değil, diğer jar'lar için de eğer bu iki klasör altındaki kütüphane versiyonları uyumsuzsa kafa ağrıtabiliyor.

Normalde, bizim bilgilerimiz öngörür ki, server, WEB-INF'ten önce APP-INF altındaki kütüphaneleri dikkate almalıdır fakat weblogic.xml'de

container-descriptor'de
servlet-reload-check-secs: -1
prefer-web-inf-classes: true

ise, server, hem APP-INF'ten önce web-inf altındaki class'ları dikkate alacaktır, hem de proje içinde servlet'lerde bir değişiklik olmuş mu diye hiç kontrol yapmayacaktır. servlet-reload-check-secs değeri 1'e ya da pozitif herhangi bir sayıya set edilebilir. Bu sayı, server'ın kaç saniyede bir gidip class'lar değişmiş mi diye kontrol edeceğini ve değişmişse o class'ları tekrar yükleme yapacağını gösterecektir. Bu rakamın 1 olması geliştirme yaparken gayet faydalıdır çünkü yaptığımız değişikliği server'ı tekrar başlatmadan görmemizi sağlayacaktır. Fakat, kodun production'a çıkımı esnasında, bu rakamın -1'e çekilmesi önerilir çünkü production'da class'ların tek başına değişmeyeceğini biliriz. En azından böyle bir değişiklik yapmanın production'a alım akışına uygun olmadığını biliriz. Server'a yük getirmemesi için bu rakamın -1 e çekilmesi önerilir.

Peki, bu rakam -1'e çekildiğinde ve APP-INF ve WEB-INF altında aynı kütüphaneler bulunduğunda, hangi kütüphaneden hangi class'ın görüldüğü bilgisini nasıl garantileyebiliriz? Onun için de, hemen altındaki parametreyi false tutmalıyız. Çünkü, prefer-web-inf-classes, gerekli özel durumlar haricinde false olmalıdır, ve server'daki kütüphane hiyerarşisini bozmamalıyız.

Bir dipnot daha. Eğer değiştirdiğiniz jsp'lerin server'ı tekrar başlatmadan görünmesini istiyorsanız, jsp-descriptor altındaki pageCheckSeconds parametresini de 1 tutmanızda yarar var.

1 comment:

Niyazi Fellahoğlu said...

süper parametreler!
yazılarının takipçisiyiz.
sevgiler...
Niyazi