With Helidon SE you can add a health endpoint to your application by simply adding a dependency. In your pom.xml
you have to add the dependency io.helidon.webserver.observe:helidon-webserver-observe-health
. This adds a new endpoint /health
to your application. When your application is up and running the /health
endpoint will return the HTTP status code 204 with an empty body. If your application is not healthy then the HTTP status code 503 is returned. In case of an error an HTTP status code 500 is sent to the client.
If you want to see a response with details then you need to set the configuration property server.features.observe.observers.health.details
to the value true
. Instead of the HTTP status code 204 the status code 200 is returned when our application is healthy. The response contains a JSON object with a status
field with the value UP
for a healthy response. The response also contains the field checks
with an array of detailed information from health checks that are available in our application.
Continue reading →
Hibernate is a great Object Relational Mapping (ORM) library for accessing data in a relational database.
It is one of the leading implementations of Java Persistence (formerly known as JPA).
Using JPQL (based on HQL,
which is still a nice syntax guide) one can access and update the data in the database through your ORM objects in a simplified SQL way.
However, when implemented incorrectly one can run into serious performance problems.
They can all be avoided though.
Here are some important things to consider to make your queries performant.
Continue reading →
It’s the year 2023.
JDriven colleagues have gathered to discuss the new trends and deprecations of our work to put on the latest TechRadar.
Once everybody is seated, everyone contributes their latest opinions.
Very soon discussions run high.
Lombok is dropped at the table of discussion as well.
After some debate, it is decided.
Lombok is put on HOLD!
Continue reading →
When developing software I find it very useful to stick to a number of rules.
They are all commonly known, but it can be very convenient to have list of them.
Sticking to these rules will enhance the quality of your code drastically.
Continue reading →
In part 1 of this blog data was exfiltrated from a workstation to GitHub using Git.
In part 2, we’ll dive into investigating the data on a Windows 10 workstation to determine whether any sensitive data was exfiltrated to GitHub using Git.
The investigation focuses on analyzing traces left on the device, excluding network activity logs.
Continue reading →
When Maven needs to download artifacts from a remote repository, it logs the progress of the download. This can lead to a lot of noise in the output. Luckily, we can suppress the logging of the download progress. Since Maven 3.6.1. we can use the command-line option --no-transfer-progress
to disable the logging of the download progress. There is also a short version of the option: -ntp
.
Continue reading →
In a previous blog post we learned about the default input sources that are used by Helidon SE. The list of input sources is different based on which artifacts are on the classpath of our application. When we write tests for code in our application that uses the default configuration created by Config.create()
we must take into account that different input sources are used. Also here it is based on the artifacts that are on the classpath. That means that different files with configuration data are loaded, eg. a file application-test.conf
when we have the artifact helidon-config-hocon
and a file application-test.yml
if the artifact helidon-config-yaml
is on the classpath.
Continue reading →
Blogtober, een jaarlijks terugkerend initiatief waarin onze collega’s elke (werk)dag in oktober (veelal technische) blogs delen! Echt iets voor onze developers, mensen vanuit de inhoud, die hun kennis op deze manier met de wereld delen.
Tot vorige week mijn collega Erik Pronk als ‘geintje met een seintje’ liet vallen dat hij nog wacht op een blog van mij.
Mijn eerste gedachte: grappig, niks voor mij.
Mijn tweede gedachte: challenge accepted!
Continue reading →
In my previous blog post Prompt Engineering: Tool or Threat to Software Engineering?, I discussed what Prompt Engineering is and how it can be used to help us as software engineers.
In this follow-up blog I will dive into Claude 3, the latest AI from Anthropic, and how it can impact us as software engineers.
Continue reading →