Hikari Spring RestTemplate Timeout
Java , Spring Framework / 29 Kasım 2019

Merhaba değerli Java dostları, Yakın zamanda karşılaştığım bir problemi paylaşmak istiyorum. RestTemplate ile yapılan requestlere response dönmemesi ve bir müddet sonra da Hikari üzerindeki poolda artık kullanılabilecek connection kalmaması problemi yaşadım. Bunun üzerine kullanılan resttemplate için timeout kullanılmadığını ve infinite beklemeye girdiğini gördüm. Tetikleyen metot da @Transactional olarak işaretlendiği için bir müddet sonra sistem çökmesi meydana geldi. Paylas    

VerifyError
Core , Java / 04 Kasım 2019

Uzun bir aradan sonra merhaba değerli Java dostları, Yine kısa bir yazı ile karşınızda olacağım. Bu yazıda Java’ da nadir de olsa karşılaşabileceğimiz VerifyError hatası ile ilgileneceğiz. Malumunuz Java’ nın gerek derleme gerekse de koşma sırasında çok sıkı güvenlik önlemleri bulunuyor. VerifyError, runtime sırasında verilen bir hata ve temel iki nedeni var. Class dosyalarını oluşturduğunuz Java sürümü ile çalıştırdığınız Java sürümleri birbirileri ile uyumlu değildir. Örneğin Java 8 ile class dosyası oluşmuşken bunu Java 13 ile koşmaya çalışmak. Class dosyaları derlendikten sonra Java’ nın kurallarına aykırı olacak şekilde source code üzerinde değişiklik yapıp sadece bu dosyayı veya dosyaları derlemek. Örnek verecek olursak Paylas    

Sonar Community Edition Kurulum
Java , Static Kod Analizi / 23 Temmuz 2019

Merhaba değerli Java dostları, Bu yazımda static kod analizi konusunda çok sık adını duyduğumuz Sonar’ ın community edition versiyonunun bir makineye nasıl kurulduğunu anlatmaya çalışacağım. Adımlarımız şu şekilde: https://www.sonarqube.org/downloads/ adresinden sonar server, https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ adresinden sonar scanner indirilir. sonar server zip dosyasından çıkarıldıktan sonra /conf klasörü altında wrapper.conf dosyasında wrapper.java.command değerine JDK’ nın kurulu olduğu path verilir. Örnek olarak wrapper.java.command=C:\Program Files\Java\jdk-12.0.2\bin\java sonar server JDK 11+ ile çalışmaktadır. Komut satırı üzerinden /bin altındaki StartSonar.bat dosyası çalıştırılı. Server artık http://localhost:9000 üzerinden ulaşılabilir durumdadır. sonar scanner zip dosyasından çıkarıldıktan sonra /conf klasörü altında sonar-scanner.properties dosyasına aşağıdaki değerler eklenir. Paylas    

OpenJDK Project Valhalla
Java , OpenJDK / 18 Mart 2019

Merhaba değerli Java dostaları, Bu ve bundan sonraki birkaç yazımda OpenJDK ile beraber tanııtılan ve ilerleyen JDK sürümlerinde canlıya alınacak olan özelliklere ve projelere fazla detaya girmeden fikir edinecek kadar değinmek istiyorum. İlk projemiz Valhalla. Valhalla projesi 2014 tarihinden itibaren geliştirilen ve JDK 10+ sürümleri için planlanan bir özellik. Malumunuz Java’ da genel anlamıyla iki tip vardır. Birisi primitive tipler, diğeri ise reference tipler. Reference tipleri direkt olarak obje olarak düşünebiliriz. Hafıza yönetimi sırasında erişim ve performans farkı işleyiş farklarından kaynaklanmaktadır. Valhalla ile beraber hayatımıza value type kavramı giriyor. Ne olduğunu direkt yetkili ağızların ifadesi ile yazıyorum. “Codes like class, works like an int” Paylas    

Java SecureRandom Linux
Java , Linux / 25 Aralık 2017

Merhaba değerli Java dostları, Bu kısa yazımda SecureRandom sınıfının Linux üzerinde çalışırken olası bir yavaşlama problemi ve çözümünü anlatmak istiyorum. SecureRandım sınıfı işletim sistemine göre değişen bir sınıf ve algoritma kullanmaktadır. Linux üzerinde algoritmayı işletmek için /dev/random dosyasına bakmaktadır. Fakat eğer bu dosyada yeteri kadar bilgi yoksa sistem lock atıp, dolana kadar bekleyebilmektedir. Çözüm ise yine /dev altında bulunan urandom dosyasını kullanmaktan geçiyor. Bunu da şöyle yapıyoruz: ../jre/lib/security altında bulunan java.security dosyasında Paylas    

Java WebSocket Text Buffer
Java , WebSocket / 11 Aralık 2017

Merhabalar değerli Java dostları, Bu kısa yazımda bir ipucu vermek istiyorum. Java ve websocket kullanıyorsanız ve text mesaj gönderip alıyorsanız bunun bir büyüklük kısıtlaması oluyor. Örneğin default değerin 4 KB olduğunu varsayarsak, 4 KB’ den büyük verilerde hata alma, bağlantı kopması gibi problemler olabilir. Bundan dolayı buffer size arttırmak gerekiyor. Bunun için de web.xml dosyasına aşağıdaki ifadeyi ekliyoruz. Tabi bu ayar tomcat için geçerli   Paylas    

Vaadin Eclipse CVAL
Java , Vaadin / 30 Kasım 2017

Merhabalar değerli Java dostları, bu kısa yazımda vaadin CVAL işleminin eclipse üzerinde nasıl yapıldığını anlatmak istiyorum. Öncelikle elimizde CVAL olduğunu kabul ediyorum. Daha sonra eclipse üzerinden window > preferences > java > installed jres menüsünden aktif olan jre veya jdk yı seçip edit diyoruz. Burada default VM arguments kısmına aşağıdaki ifadeyi giriyoruz. -Dvaadin.board.developer.license=yourCVALKey Paylas    

Spring JPA org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
Java , Spring Framework / 06 Ekim 2017

Merhaba değerli Java dostları, bu yazımda aslında çok basit bir hareketle çözülebilen; ama bu çözümün bulunması uzun vakit alabilen bir probleme değinmek istiyorum. Entity tanımları yapılırken bağlı entityler lazy load olarak tanımlanabilir. Bu durumda gerçekten o bağlı nesneler çağrıldığında yüklenir. Çağrılmadığı sürece bir proxy ile işler idare edilir. Fakat session ve transaction yönetimi şeklinize bağlı olarak org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role hatasını alabilirsiniz. Bu hatanın nedeni lazy load yapılırken aktif bir session bilgisinin bulunmaması. Bunu çok basit bir hareketle çözüyoruz. Ben annotation tabanlı gittiğim için java kodu üzerinden örnek vereceğim. Xml tabanlı gidenler için de aslında sadece tanım şekli değişiyor, mantık aynı. EntityManagerFactory sınıfı üzerinden properties veriyoruz. LocalContainerEntityManagerFactoryBean.setJpaProperties(additionalProperties); Paylas    

Java WebSocket Client
Java , WebSocket / 14 Eylül 2017

Merhaba değerli Java dostları, bir önceki yazımda WebSocket server konusuna değinmiştim. Şimdi de client tarafına bakacağız. Emin olun ki en az server kadar kolay olacak 🙂 . Önce maven ayarlarımız. Paylas    

Java WebSocket Server
WebSocket / 12 Eylül 2017

Merhabalar değerli Java dostları, bugünkü yazımda java ile nasıl websocket server yazılacağını göstermek istiyorum. Aslında oldukça kolay ve basit. Eminim siz de finalde bu kadar mı diye soracaksınız. Öncelikle gerekli maven ayarlarımızı yapalım.   Paylas