İbrahim Kürce

Merhabalar,

Aşağıdaki gibi Java, Spring güncellemesi sonrası entegrasyon testleri sırasında NoHttpResponseException hatası aldığımızda,

org.springframework.web.client.ResourceAccessException: I/O error on PUT request for “http://localhost:…" failed to respond; nested exception is org.apache.http.NoHttpResponseException: localhost:… failed to respond

Apache Client kütüphanesiyle alakalı bir sorun var demektir.
Bunun için retry mekanizmasını tavsiye etmişler ama test sırasında retry yapmak mantıklı gelmedi bana.

Diğer bir çözüm ise alakasız bir şekilde kotlin-stdlib kütüphanesini projemize eklemek, eğer benim çözüm olmasaydı bu yöntemi deneyecektim ama denemedim. Ki benim projemde Kotlin ile alakalı bir kod bulunmamaktadır. Java ile yazılmış, Spring Boot projesidir.


<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.7.10</version>
<scope>test</scope>
</dependency>

Benim denediğim çözüm ise TestRestTemplate(eski) yerine WebTestClient(yeni) kullanmak oldu.
Bu hatayı alan birkaç sınıfta, bu geçişi yaptıktan sonra testlerden geçtik.
İşin ilginç yanı ise tüm entegrasyon testlerinde bu hatayı vermemesiydi.

Sizin farklı bir çözümünüz olursa lütfen söyleyin.

Biraz zaman kaybettim, inşallah size de faydalı olur.

--

--

Merhabalar,

Java, Spring dünyasında hangi profilde olduğumuzu öğrenme ihtiyacı olabilir. Buna Environment sınıfı aracılığıyla erişebiliriz.

@Autowired
private Environment environment;

Kodumuza inject ettikten sonra,

String[] list = this.environment.getActiveProfiles();

yukardaki kod ile aktif olan profillerin listesini alabiliriz. Production ortamında örneğin, liste içinde tek “prod” stringi olacak.

İyi kodlamalar…

--

--

Merhaba,

Spring Cloud kullanıyorsanız ve config dosyalarınızı remote bir sunucudan çekiyorsanız, birden fazla bean’lerin çakışma durumu olabilir. BeanDefinitionOverrideException hatasını alırsınız.

Bu hatayı şu config’le görmezden gel diyebilirsiniz.

spring.main.allow-bean-definition-overriding: true

Cloud config kullanıyorsanız bunu remote config’de değil, config tanımlarının yapıldığı local bootstrap.yml dosyası içinde tanımlamalısınız.

Araştırdığım kadarıyla, Spring’in bu konuda bir açığı varmış.

Kolay gelsin

--

--

Merhaba,

Apache Poi kütüphanesi üzerinde CSV ve Excel dosya oluşturma işleri yapıyorsanız eğer, Spring ve Java 11 güncellemesi sonrasında createSheet işlemi sırasında hata alma veya işlemin bitmemesi gibi bir sorunla karşılaşabiliyorsunuz.

Bunun Java 11'de bazı fontların çıkarılması ile ilgili olması muhtemel. Çözüm için de ilgili sunucularda şu fontların kurulması gerekiyor;

1 -> dejavu-sans-fonts(veya ttf-dejavu)

2-> fontconfig

Kolay gelsin.

--

--