13 Nisan 2016 Çarşamba

Spring MVC ve Hata işleme (Exception Handling)


Projemizde run time esnasında çıkabilecek hataları daha açıklayıcı ve görsel anlamda da anlamsız kod karmaşasını ortadan kaldırmak için oluşabilecek hatalar için özel sayfalara yönlendirmeler yapalım dedik.
İnternette yine her zamanki gibi türkçe kaynak kıtlığı yaşıyoruz... derken https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc adresinden detaylı bilgileri alıyoruz...
İlgili kaynakta hataları yönetmenin farklı yollarından bahsediyor, kendi özel hata class'larıını da oluşturup, bağlı bulunduğu yerlerde o hatayı döndürebilirsiniz. Ben ise, daha global, tüm projeyi kapsayan bir hata yönetim şekliyle ilgileniyorum. 
Yani;
Size gerekli olan malzemeler,
Bir adet class -ki @ControllerAdvice annotation'ına sahip olacak
içerisindeki metodlar ise @ExceptionHandler
bir adet hatanın işlenip daha düzgün görüntülenmesi için yönlendirileceği error.jsp sayfası 
tabi mi context.xml tarafında da <mvc:annotation-driven/>'ın tanımlı olması
Benim Controller tarafında tek kullandığım kod;
@ControllerAdvice
class GlobalExceptionHandler {
  
    @ExceptionHandler(value = Exception.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {

        if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null)
            throw e;

        // Otherwise setup and send the user to a default error-view.
        ModelAndView mav = new ModelAndView();
        mav.addObject("exception", e);
        mav.addObject("url", req.getRequestURL());
        mav.setViewName("error");
        return mav;
    }
}
@ExceptionHandler(value = Exception.class) içerisindeki değeri "SQLException.class", value=HttpStatus.NOT_FOUND şeklinde girerek hata türlerine göre yeni metodlar da oluşturabilirsiniz.

15 Şubat 2016 Pazartesi

pgAdmin III versiyon sorunu ve çözümü

Local pgAdmin III' den yeni oluşturulan servera bağlandığımda aşağıdaki gibi bir hata aldım. Serverdaki versionla localdeki versiyon birbirini desteklemediği için hata vermekte idi.

Warning:
The server you are connecting to is not a version that is supported by this release of pgAdmin III. pgAdmin III may not function as expected.
Supported server versions are 8.4 to 9.3.

eğer siz de bu hatayı alırsanız yapmanı gerekenler aşağıdaki gibidir;

#epository ekle
sudo sh -c 'echo “deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main” > /etc/apt/sources.list.d/pgdg.list'

#key'i indir
wget –quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

sudo apt-get install pgadmin3

11 Şubat 2016 Perşembe

Spring Framework ve Spring Security'i 4'e yükseltmek



Geliştirmekte olduğumuz spring mvc projesinin versiyonunu 3.x'ten 4.x'e yükseltmek istedik fakat bu geçişle birlikte birkaç yerde de değişiklik yapmak zorunda kaldık.

What's new adresinden yapılan yenilikleri okuyabilirsiniz.

Türkçe kaynak da bulunması adına, yaptığımız değişiklikleri buraya not edeceğim ki belki birilerinin işine yarar.

Role'ler kısıtlamasında yapılan değişiklikler bizi çok etkilemedi çünkü henüz o kısıtlamaları kullanmıyorduk.

pom.xml tarafında değiştirilmesi gerekenler;

Eğer versiyonları değişkenden alacak şekilde tanımlamışsanız işiniz kolay yoksa her  bağımlılıklar (dependency) versiyonu eklemeniz gerekecek

örnek olarak;

<spring.version>4.2.4.RELEASE</spring.version>
<spring-security.version>4.0.3.RELEASE</spring-security.version>