Warning: file_get_contents(https://dzone.com/articles/setup-spring-data-elasticsearch-54-with-basic-auth): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/arm64-atomics-page-fault-performance-issue): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/rank-full-text-search-results-postgresql-hibernate): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/domain-driven-design-enterprise-java): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/multicloudj-cloud-agnostic-applications-java): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/diving-into-jni-my-messy-adventures-with-c-in-andr): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/guide-to-spring-data-elasticsearch-upgrade): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/building-realistic-test-data-in-java-with-datafake): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/read-large-excel-files-in-java-with-sjxlsx): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/converting-activemq-to-jakarta-part-iii): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/real-time-data-mesh-apache-iceberg-flink): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/top-javafx-testing-mistakes): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/jgraphlet-for-taskpipelines): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/spring-boot-websocket-multichannel-chat-java): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/upgrading-java-version-using-amazon-q-developer): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/spring-cloud-gateway-service-discovery-consul): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/secure-spring-boot-apps-keycloak-oidc): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/jvm-kubernetes-monitoring-eks-new-relic): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274
Warning: file_get_contents(https://dzone.com/articles/java-spring-boot-postgresql-keycloak-template): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /usr/home/freebsd/rss-extender/RssExtender.php on line 274 enDZone Java Zone
https://dzone.com/java
Recent posts in Java on DZone.comSet Up Spring Data Elasticsearch With Basic Authentication
https://dzone.com/articles/setup-spring-data-elasticsearch-54-with-basic-auth
<p>Recently, I wrote the <a href="https://dzone.com/articles/guide-to-spring-data-elasticsearch-upgrade" rel="noopener noreferrer" target="_blank">Introduction to Spring Data Elasticsearch 5.5</a> article about Spring Data Elasticsearch usage as a NoSQL database. The article covered just the setup of the unsecured Elasticsearch. However, we need to be able to connect to the secured Elasticsearch as well. Let's follow the previous article and see the needed changes to run and connect to the secured Elasticsearch.</p>
<h2>In This Article, You Will Learn</h2>
<ul>
<li>How to create a secure Elasticsearch</li>
<li>How to connect to the secured Elasticsearch with Spring Data Elasticsearch</li>
<li>How to change the password in Elasticsearch</li>
</ul>
<h2>Set Up Secured Elasticsearch</h2>
<p>The setup for creating a secure Elasticsearch is pretty similar to the steps in the already-mentioned <a href="https://dzone.com/articles/guide-to-spring-data-elasticsearch-upgrade" rel="noopener noreferrer" target="_blank">article</a>. The technologies used in this article, compliant with the <a href="https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/versions.html" rel="noopener noreferrer" target="_blank">compatibility matrix</a>, are:</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/setup-spring-data-elasticsearch-54-with-basic-auth</span>Mon, 27 Oct 2025 17:00:00 GMThttps://dzone.com/articles/3554157Arnošt HavelkaDiagnosing and Fixing a Page Fault Performance Issue With Arm64 Atomics
https://dzone.com/articles/arm64-atomics-page-fault-performance-issue
<p dir="ltr">While running a synthetic benchmark that pre-warmed the cache, we noticed an abnormal performance impact on Ampere CPUs. Digging deeper, we found that there were many more page faults happening with Ampere CPUs when compared to x86 CPUs. We isolated the issue to the use of certain atomic instructions like ldadd, which load a register, add a value to it, and store data in a register in a single instruction. This triggered two “page faults” under certain conditions, even though this is logically an all-or-nothing operation, which is guaranteed to be completed in one step.</p>
<p dir="ltr">In this article, we will summarize how to qualify this kind of problem, how memory management in Linux works in general, explain how an atomic Arm64 instruction can generate multiple page faults, and show how to avoid performance slowdowns related to this behavior.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/arm64-atomics-page-fault-performance-issue</span>Fri, 24 Oct 2025 12:00:07 GMThttps://dzone.com/articles/3603323Dave NearyRanking Full-Text Search Results in PostgreSQL Using ts_rank and ts_rank_cd With Hibernate 6 and posjsonhelper
https://dzone.com/articles/rank-full-text-search-results-postgresql-hibernate
<p data-end="929" data-start="573">In<a data-end="668" data-start="576" href="https://dzone.com/articles/postgres-full-text-search-with-hibernate-6" rel="noopener" target="_new"> a previous article</a>, we explored how to implement full-text search in PostgreSQL using Hibernate 6 and the<span style="margin: 0px; padding: 0px;"> </span>posjsonhelper library. We built queries with <code>to_tsvector</code>, <code>to_tsquery</code>, and their simpler wrappers for the <code>plainto_tsquery</code>, <code>phraseto_tsquery</code>, and <code>websearch_to_tsquery</code> functions.</p>
<p data-end="929" data-start="573">This time, we’ll extend that foundation and explore how to <strong data-end="998" data-start="990">rank</strong> search results based on their relevance using PostgreSQL’s built-in ranking functions like <code>ts_rank</code> and <code>ts_rank_cd</code>.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/rank-full-text-search-results-postgresql-hibernate</span>Thu, 23 Oct 2025 14:00:00 GMThttps://dzone.com/articles/3604272Szymon TarnowskiApplying Domain-Driven Design With Enterprise Java: A Behavior-Driven Approach
https://dzone.com/articles/domain-driven-design-enterprise-java
<p><span data-preserver-spaces="true">When it comes to software development, one of the biggest mistakes is delivering precisely what the client wants. While this may sound cliché, the problem persists even after decades in the industry. A more effective approach is to begin testing with a focus on business needs.</span></p>
<p><a href="https://dzone.com/articles/what-is-bdd-a-complete-guide"><span data-preserver-spaces="true">Behavior-driven development</span></a><span data-preserver-spaces="true"> (BDD)</span><span data-preserver-spaces="true"> is a software development methodology that</span><span data-preserver-spaces="true"> emphasizes behavior and domain terminology, also known as ubiquitous language. It uses a shared, natural language to define and test software behaviors from the user's perspective. BDD builds on </span><a href="https://dzone.com/articles/the-importance-of-test-driven-development-in-softw"><span data-preserver-spaces="true">test-driven development</span></a><span data-preserver-spaces="true"> (TDD) by concentrating on scenarios that are relevant to the business. These scenarios are written as plain-language specifications that can be automated into tests, which also serve as living documentation.</span></p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/domain-driven-design-enterprise-java</span>Thu, 23 Oct 2025 13:00:00 GMThttps://dzone.com/articles/3602457Otavio SantanaMultiCloudJ: Building Cloud-Agnostic Applications in Java
https://dzone.com/articles/multicloudj-cloud-agnostic-applications-java
<p dir="ltr">According to a 2024 Gartner report, more than <a href="https://www.growin.com/blog/multi-cloud-strategies-business-2025/" rel="noopener noreferrer" target="_blank">92% of large enterprises</a> now operate in multi-cloud environments. This reflects strategic priorities such as geographic scalability, high availability, regulatory compliance, and cost optimization.</p>
<p dir="ltr">But with these benefits comes significant complexity. Each provider — AWS, GCP, Alibaba Cloud, and others — exposes its own APIs, semantics, and SDKs. As a result, development teams must reconcile divergent models for storage, databases, identity, and more. The outcome is often fragmented codebases filled with conditional logic, code forking, duplicated workflows, and costly rewrites when onboarding new providers. For large organizations, this slows delivery, increases operational risk, and erodes the developer experience.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/multicloudj-cloud-agnostic-applications-java</span>Mon, 20 Oct 2025 17:00:01 GMThttps://dzone.com/articles/3595537Sandeep PalInfusing AI into Your Java Applications
https://dzone.com/articles/infusing-ai-into-your-java-applications
<p>Artificial intelligence (AI) is becoming increasingly pervasive. As an Enterprise Java developer, you might be wondering what value AI can add to your business applications, what tools Java provides to easily do that, and what skills and knowledge you might need to learn. In this article, we equip you with the basic knowledge and skills that you need to start exploring the capabilities of AI to build intelligent and responsive Enterprise Java applications.</p>
<p>When we talk about AI in this article, we mean getting responses from a large language model (LLM) based on a request that the Java application sends to the LLM. In our article’s example, we create a simple chatbot that customers can ask for planetary tourist destination recommendations, and then use to book a spaceship to visit them. We demonstrate using Java frameworks like <a href="https://docs.quarkiverse.io/quarkus-langchain4j/dev/index.html?cid=infoq:press:AW:ai-java-intro">LangChain4j with Quarkus</a> to efficiently interact with LLMs and create satisfying applications for end-users.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/infusing-ai-into-your-java-applications</span>Fri, 10 Oct 2025 19:00:09 GMThttps://dzone.com/articles/3603121Don BourneMichal BrozLaura CowenDaniel OhKevin DuboisDiving into JNI: My Messy Adventures With C++ in Android
https://dzone.com/articles/diving-into-jni-my-messy-adventures-with-c-in-andr
<p>So, I've been deep in the trenches with JNI lately (yeah, that Java Native Interface stuff) while working on a project where we had to plug a C++ AI assistant into our Android app. At first, it felt like stepping into a weird twilight zone — half Java, half C++, and all these random edge cases you never think about until you hit them. I remember staring at the stack trace for what felt like hours, realizing that one tiny missed <code>DeleteLocalRef</code> was enough to crash the whole app. Thought I'd share what actually tripped me up, what worked, and some ways to make life a little less miserable if you ever have to do this.</p>
<h2><strong>What the Hell Is JNI Anyway?</strong></h2>
<p>JNI is basically the bridge that lets Java (or Kotlin) talk to C/C++ code and vice versa. On Android, it’s the only real way to get heavy lifting done efficiently or access low-level APIs that Java/Kotlin just can't reach. Honestly, the first time I tried to wrap my head around it, I felt like I was learning a new language on top of Java and C++ at the same time.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/diving-into-jni-my-messy-adventures-with-c-in-andr</span>Fri, 10 Oct 2025 18:00:12 GMThttps://dzone.com/articles/3603053Ruslan VidzertIntroduction to Spring Data Elasticsearch 5.5
https://dzone.com/articles/guide-to-spring-data-elasticsearch-upgrade
<p>It's been a while since my first article dedicated to Spring Data Elasticsearch usage as a NoSQL database was published. A couple of articles with configuration changes or hints followed the first article. Therefore, the main goal of this article is to define a new baseline for the full Elasticsearch setup.</p>
<p><em>Note: All previous articles are listed at the end.</em></p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/guide-to-spring-data-elasticsearch-upgrade</span>Fri, 10 Oct 2025 16:00:08 GMThttps://dzone.com/articles/3492942Arnošt HavelkaBuilding Realistic Test Data in Java: A Hands-On Guide for Developers
https://dzone.com/articles/building-realistic-test-data-in-java-with-datafake
<p data-end="113" data-start="0">There’s something that every backend or API developer faces sooner or later: <strong data-end="228" data-start="197">the need for good fake data</strong>.</p>
<p data-end="586" data-start="233">Whether you’re testing a new API, populating a database for demos, or simply trying to make your unit tests less “boring”, fake data is part of your daily routine. The problem? Most fake data feels… fake. You end up with “John Doe” and “123 Main Street” repeated over and over, which doesn’t look great when showing a prototype to your team or client.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/building-realistic-test-data-in-java-with-datafake</span>Fri, 10 Oct 2025 12:00:08 GMThttps://dzone.com/articles/3601128Wallace EspindolaEfficiently Reading Large Excel Files (Over 1 Million Rows) Using the Open-Source Sjxlsx Java API
https://dzone.com/articles/read-large-excel-files-in-java-with-sjxlsx
<p>If you are a developer, regardless of the technologies you use, at some point, you will face the challenge of handling large Excel files.</p>
<p>Most commonly, you will see the "<strong>out of memory</strong>"<strong> </strong>error<strong> </strong>when handling these files.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/read-large-excel-files-in-java-with-sjxlsx</span>Thu, 09 Oct 2025 12:00:00 GMThttps://dzone.com/articles/3588338Mahendran ChinnaiahConverting ActiveMQ to Jakarta (Part III: Final)
https://dzone.com/articles/converting-activemq-to-jakarta-part-iii
<h2>Advanced Technical Approach</h2>
<p>Some Java frameworks have taken on the complexity of supporting both <em>javax</em> and <em>jakarta</em> package namespaces simultaneously. This approach makes sense for frameworks and platform services, such as Jetty and ActiveMQ, where the core development team needs to move the code base forward to support newer JDKs, while also providing a way for application developers to adopt Jakarta EE gradually. This simplifies the support for open-source frameworks, as there are fewer releases to manage, and in the event of a security bug, being able to release one mainline branch vs having to go back and backport across past versions. </p>
<p>However, supporting both <em>javax</em> and <em>jakarta</em> namespaces simultaneously in a single application is complicated and time-consuming. Additionally, it opens additional scenarios that may lead to errors and security gaps for enterprise applications. This limits the ability to set up verification checks and source code scanning to block pre-Jakarta libraries from being used or accidentally pulled in through transitive dependencies. It creates a lot of ambiguity and reduces the effectiveness of DevOps teams in providing pre-approved SDKs to be used by enterprise developers. With the pitfalls outweighing the benefits, enterprise projects should not need to support both <em>javax</em> and <em>jakarta</em> namespaces simultaneously in most scenarios.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/converting-activemq-to-jakarta-part-iii</span>Wed, 08 Oct 2025 16:00:08 GMThttps://dzone.com/articles/3600758Matt PavlovichBuilding a Real-Time Data Mesh With Apache Iceberg and Flink
https://dzone.com/articles/real-time-data-mesh-apache-iceberg-flink
<p data-end="683" data-start="202">If you’ve ever tried to scale your organization’s data infrastructure beyond a few teams, you know how fast a carefully planned “data lake” can degenerate into an unruly “data swamp.” Pipelines are pushing files nonstop, tables sprout like mushrooms after a rainy day, and no one is quite sure who owns which dataset. Meanwhile, your real-time consumers are impatient for fresh data, your batch pipelines crumble on every schema change, and governance is an afterthought at best.</p>
<p data-end="1032" data-start="685">At that point, someone in a meeting inevitably utters the magic word: <a href="https://dzone.com/articles/data-mesh-a-paradigm-shift-in-data-management">data mesh</a>. Decentralized data ownership, domain-oriented pipelines, and self-service access all sound perfect on paper. But in practice, it can feel like you’re trying to build an interstate highway system while traffic is already barreling down dirt roads at full speed.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/real-time-data-mesh-apache-iceberg-flink</span>Fri, 26 Sep 2025 12:00:00 GMThttps://dzone.com/articles/3592866Subrahmanyam KattaTop 7 Mistakes When Testing JavaFX Applications
https://dzone.com/articles/top-javafx-testing-mistakes
<p dir="ltr">JavaFX is a versatile tool for creating rich enterprise-grade GUI applications. Testing these applications is an integral part of the development lifecycle. However, Internet sources are very scarce when it comes to defining best practices and guidelines for testing JavaFX apps. Therefore, developers must rely on commercial offerings for JavaFX testing services or write their test suites following trial-and-error approaches.</p>
<p dir="ltr">This article summarises the seven most common mistakes programmers make when testing JavaFX applications and ways to avoid them.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/top-javafx-testing-mistakes</span>Wed, 24 Sep 2025 11:00:00 GMThttps://dzone.com/articles/3594574Catherine EdelveisThink in Graphs, Not Just Chains: JGraphlet for TaskPipelines
https://dzone.com/articles/jgraphlet-for-taskpipelines
<p><strong>JGraphlet</strong> is a tiny, zero-dependency library for building task pipelines in Java. Its power comes not from a long list of features, but from a small set of core design principles that work together in harmony.</p>
<p>At the heart of JGraphlet is simplicity, backed by a <strong>Graph</strong>. Add Tasks to a pipeline and connect them to create your graph. Each <code>Task</code> has an input and output. A <code>TaskPipeline</code> builds and executes a pipeline while managing the I/O for each <code>Task</code>. </p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/jgraphlet-for-taskpipelines</span>Mon, 22 Sep 2025 11:00:00 GMThttps://dzone.com/articles/3592973Shaaf SyedSpring Boot WebSocket: Building a Multichannel Chat in Java
https://dzone.com/articles/spring-boot-websocket-multichannel-chat-java
<p>As you may have already guessed from the title, the topic for today will be Spring Boot WebSockets. Some time ago, I provided an example of WebSocket chat based on Akka toolkit libraries. However, this chat will have somewhat more features, and a quite different design.</p>
<p>I will skip some parts so as not to duplicate too much content from the previous article. Here you can find a more in-depth intro to <a href="https://dzone.com/articles/sse-vs-websockets">WebSockets</a>. Please note that all the code that’s used in this article is also available in the <a href="https://github.com/Pask423/articles-misc/tree/master/spring-ws" rel="noopener" target="_blank">GitHub repository</a>.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/spring-boot-websocket-multichannel-chat-java</span>Fri, 19 Sep 2025 11:00:00 GMThttps://dzone.com/articles/3595463Bartłomiej ŻylińskiHow to Migrate from Java 8 to Java 17+ Using Amazon Q Developer
https://dzone.com/articles/upgrading-java-version-using-amazon-q-developer
<p>Replatforming from Java 8 to the newer Java versions has proven to be a huge challenge due to potential compatibility issues and changes in language specifications. The Spring Framework, which provides a programming and configuration model for modern Java applications, has just released its latest major version, Spring Framework 6.2.10, and it requires a baseline of Java 17 or higher. Because of this, migrating from an older version like Java 8 would involve code modifications, which take considerable effort and rigorous testing.</p>
<p>Before diving deep into version upgrades for Java applications, let us first discuss what <a href="https://dzone.com/articles/amazon-q-developer-ai-coding-productivity">Amazon Q developer</a> is and how it helps developers with application modernization.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/upgrading-java-version-using-amazon-q-developer</span>Tue, 16 Sep 2025 19:00:00 GMThttps://dzone.com/articles/3588862Prabhakar MishraSpring Cloud Gateway With Service Discovery Using HashiCorp Consul
https://dzone.com/articles/spring-cloud-gateway-service-discovery-consul
<p dir="auto">This article will explain some basics of the HashiCorp Consul service and its configurations. It is a service networking solution that provides service registry and discovery capabilities, which integrate seamlessly with Spring Boot. You may have heard of Netflix Eureka; here, Consul works similarly but offers many additional features. Notably, it supports the modern reactive programming paradigm. I will walk you through with the help of some applications.</p>
<div dir="auto">
<h2 dir="auto" tabindex="-1">Used Libraries</h2><a href="https://github.com/VishnuViswam/api-gateway-with-service-discovery#used-libraries"></a>
</div>
<ul dir="auto">
<li>Spring Boot</li>
<li>Spring Cloud Gateway</li>
<li>Spring Cloud Consul</li>
<li>Spring Boot Actuator</li>
</ul>
<div dir="auto">
<a href="https://github.com/VishnuViswam/api-gateway-with-service-discovery#working"></a>
</div>
<p dir="auto">The architecture includes three main components:</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/spring-cloud-gateway-service-discovery-consul</span>Mon, 15 Sep 2025 18:00:00 GMThttps://dzone.com/articles/3580710Vishnu ViswambharanSecure Your Spring Boot Apps Using Keycloak and OIDC
https://dzone.com/articles/secure-spring-boot-apps-keycloak-oidc
<p>In this blog, we will take a closer look at Spring Security, specifically in combination with Keycloak using OpenID Connect, all supported with examples and unit tests. Enjoy!</p>
<h2>Introduction</h2>
<p>Many applications are supported by means of authentication and authorization. However, it is also something software developers find difficult to grasp. In this blog, Spring Security is introduced, which is Spring's solution for adding security to your Spring applications. By means of examples and unit tests, you will learn the annotations and Spring classes. The end goal is to set up an application using OpenID Connect in combination with Keycloak. An introduction to OpenID Connect and Keycloak can be found in a <a href="https://mydeveloperplanet.com/2025/05/28/setup-openid-connect-with-keycloak-a-step-by-step-guide/">previous blog</a>. It is advised to read this blog if you are not yet familiar with the concepts.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/secure-spring-boot-apps-keycloak-oidc</span>Tue, 09 Sep 2025 14:00:00 GMThttps://dzone.com/articles/3592036Gunter RotsaertMonitoring Java Microservices on EKS Using New Relic APM and Kubernetes Metrics
https://dzone.com/articles/jvm-kubernetes-monitoring-eks-new-relic
<p><a href="https://dzone.com/articles/kubernetes-multi-tenancy-best-practices-with-amazon-eks">Amazon EKS</a> makes running containerized applications easier, but it doesn’t give you automatic visibility into <a href="https://dzone.com/articles/mastering-the-jvm-elevating-java-development">JVM</a> internals like memory usage or garbage collection. For Java applications, observability requires two levels of integration:</p>
<ul type="disc">
<li><strong>Cluster-level monitoring</strong> for pods, nodes, and deployments</li>
<li><strong>JVM-level APM instrumentation</strong> for heap, GC, threads, latency, etc.</li>
</ul>
<p>New Relic provides both via Helm for infrastructure metrics, and a lightweight Java agent for full JVM observability.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/jvm-kubernetes-monitoring-eks-new-relic</span>Tue, 02 Sep 2025 18:00:06 GMThttps://dzone.com/articles/3587939Praveen Chaitanya JakkuPrototype for a Java Database Application With REST and Security
https://dzone.com/articles/java-spring-boot-postgresql-keycloak-template
<p>Many times, while developing at work, I needed a template for a simple application from which to start adding specific code for the project at hand.</p>
<p>In this article, I will create a simple Java application that connects to a database, exposes a few rest endpoints and secures those endpoints with role based access.</p>
<br /><br /><span style='font: #ff0000'>WARNING! Your Rss-Extender rules returned an empty string for link: https://dzone.com/articles/java-spring-boot-postgresql-keycloak-template</span>Tue, 02 Sep 2025 16:00:00 GMThttps://dzone.com/articles/3583391George Pod