Configuring JBoss/Wildfly, Part 2

27 August 2022

The JBoss CLI, as presented in the last part of this series, is the standard way of configuring JBoss/Wildfly application servers. But there are more options available, some of them we will cover in this article. These options are lesser known and may not be applied very often, but may nevertheless useful in some situations.

Read More...

Configuring JBoss/Wildfly, Part 1

26 June 2022

JBoss/Wildfly offers various options to configure the application server. In this article, the "classical" and more common configuration approach of using JBoss CLI is lit up.

Read More...

Security API JSR-375 with JBoss/Wildfly, Part 2

30 April 2022

Java EE 8, nowadays known as Jakarta EE 8, added a new Security API in version 1.0 to the technology stack. While the previous article was about the new API and how it integrates into Payara (Glassfish), this time we look at the integration into JBoss/Wildlfy.

Read More...

Security API JSR-375 with Payara/Glassfish, Part 1

07 April 2022

Java EE 8, nowadays known as Jakarta EE 8, added a new Security API in version 1.0 to the technology stack. This little series of articles takes a look at the new API and how it can be used with various application servers, starting in the first part with Payara (Glassfish).

Read More...

Java Image Build, Part 2

26 February 2022

In the previous Blog Post we packaged a single FAT JAR into a container image by utilizing JIB, the Java Image Build tool from Google. With the used Wildfly Bootable JAR some optimizations to the build process are possible. This will be subject to this Blog post.

Read More...

Java Image Build, Part 1

30 January 2022

Container images can be built in many ways, utilizing different tools. For Java developers a Java-only solution might be appealing. One of the more popular options in this area is jib, the Java Image Build tool from Google. In this Post we'll have at the look on how it can be used to package an MicroProfile application as container image.

Read More...

Jakarta MVC with FreeMarker, part 2

28 December 2021

In April of this year (2021) I published a Blog Post about the integration of the Freemarker Template Engine into Jakarta MVC, the action-based Web UI framework under the hood of Jakarta EE. This Post adds some interesting features to this integration.

Read More...

Code-First REST API Development

20 November 2021

REST APIs are ubiquitous nowadays. For development of REST APIs you can follow various philosophies and approaches. In this Blog Post we're going to discover how Eclipse MicroProfile supports the Code-First development approach.

Read More...

Framework-less Dependency Injection Applied, Part 2

29 October 2021

In the last article we looked at the application of dependency injection in real-world software development. By applying a simple design patterns it was possible to implement lazy initialization of injected beans. In this article scopes of injected beans are discussed.

Read More...

Framework-less Dependency Injection Applied, Part 1

30 September 2021

In the article "DI without Framework" (https://guntherrotsch.github.io/blog_2020/di-without-framework.html) the principles of Dependency Injection have already be entangled. Here I'll discuss possible applications and potential improvements.

Read More...

Functional Java: Partial Application

28 August 2021

Java 8 brought lambdas to the Java language, which is a corner stone of functional programming. Although, the functional programming features of Java out of the box are limited, some interesting concepts can be implemented using it. This post is about applying function parameters partially.

Read More...

Pythonic Context Managers for Java

25 July 2021

If seasoned Java developer have a look into other languages, they may find interesting constructs, idioms or solution approaches. Sometimes it's even possible to take over some ideas into the Java world. That was the case when I learned about context managers in Python.

Read More...

Distroless? Distroless!

02 June 2021

Containerization of Java applications is as easy as copying the application's Jar file into a JRE equipped base image. But choosing the right base image can be hard and have a big impact on performance, effectiveness of resource utilization, security and costs. This Blog Post discusses the trend to Distroless base images.

Read More...

Wildfly Bootable JAR and Static Content

12 May 2021

Web applications often serve static content alongside with dynamically generated HTML pages. If the static content is not hosted on a CDN, the application server should provide this kind of content, too. In this Blog post I'll show how to configure Wildfly Bootable JAR packaged servers to do this job.

Read More...

Jakarta MVC with FreeMarker

22 April 2021

Jakarta MVC is the coming web UI framework under the hood of Jakarta EE. One exceptional feature of Jakarta MVC is the plugable view engine architecture, which allows to integrate different template engines. This Blog post is about the integration of FreeMarker Template Engine with Jakarta MVC.

Read More...

Wildfly Bootable JAR Starter

26 March 2021

Instantiating a Maven archetype is a convenient way to start a Java development project without any headache of the setup. Unfortunately, I haven't found any Maven archetype for Wildfly Bootable JAR projects. Instead of creating an archetype myself, I found another efficient way to get the setup of a Wildfly Bootable JAR project done.

Read More...

JAX/RS Multipart Server

13 March 2021

Multipart form-data messages are a standard format when submitting HTML forms by web applications. If you want to learn more about the processing of such requests by Jakarta EE JAXRS servers this Blog post might be interesting for you.

Read More...

JAX/RS Multipart Client

22 February 2021

Jakarta EE standards do not support HTTP multipart messages very well. This may be the reason that multipart endpoints are rarely seen in REST APIs. However, sometimes we find the multipart/form-data content type used to upload files. This Blog demonstrates an approach on how such endpoints can be utilized by standard JAXRS Clients.

Read More...

Wildfly Bootable JAR

30 January 2021

The JBoss/Wildfly ecosystem is very rich and popular in enterprise computing. But targeting cloud platforms the application server approach is not appropriate. Single (FAT) JAR packaging is much more common for containerized deployments. After the end of Thorntail the Wildfly project offers with "Wildfly Bootable JAR" a new deployment option of this kind.

Read More...

Dependency Injection Without Framework

31 December 2020

Dependency injection is often named in one breath with technologies like Spring or Jakarta EE's CDI. But dependency injection is a Software design principle, which is not equal to a particular technology.

Read More...

Maven And The Classpath

22 November 2020

When Maven's Surefire plugin executes unit tests of a project, developers do not need to provide the classpath containing all dependencies. Instead, Maven sets up the required classpath. Other plugins utilize the Maven generated classpath, too. This Blog post is about some of the usages of the Maven classpath.

Read More...

Executable Scripts with Java

20 October 2020

The more recent versions of the JDK allow running Java code from source. This can be used to create a user experience close to scripting languages. This post demonstrate how to use it and explores in addition an option applicable for older versions of Java.

Read More...

Cloud-native Java with Quarkus

21 August 2020

The Java enterprise ecosystem is changing rapidly. One of the shooting stars is the Quarkus framework. It describes itself as "Supersonic Subatomic Java" and "Kubernetes Native Java stack". This Blog post describes the first experience I made with Quarkus.

Read More...

Sharing Host File with Container

09 June 2020

Developing Cloud-native environments fosters the trend to a new kind of development environments, which are also hosted in the cloud. Beside Github's Codespaces, Eclipse Che is one of the players at this ground. To get a first impression of the new type of IDE, I tried Eclipse Theia locally using the project's pre-defined Docker image. In doing so, I learned something interesting about sharing files with containers.

Read More...

Cloud-native Java

17 May 2020

There's a strong trend in modern IT to migrate on-premises installations to cloud platforms. Independent of the migration strategy, either Lift-and-Shift or re-implement applications, this blog casts an eye on the popular Java platform deployed to the cloud.

Read More...

OpenApi generated JAX/RS Service: Bean Validation

19 April 2020

Validation of input data is a crucial requirement for any serious application. This also applies to REST services implemented with JAX/RS. If you follow a Design-First development approach with Swagger/OpenAPI, server stubs and model objects are usually generated. The generated code of API's model classes already contain JSR 380 annotations, which trigger validation of received request objects by the Bean Validation 2.0 framework. This article is about application-specific extension of validation rules for generated model classes.

Read More...

OpenApi generated JAX/RS Service: JAX/RS Context

23 March 2020

Implementing JAX/RS REST APIs with Swagger/OpenAPI, the language agnostic interface to RESTful APIs, following an API Design-First approach starts with the formal specification of the REST API. Then OpenAPI generators are used to create server stubs. These code generators create specific problems, that may require customization of templates or the whole generator. This article describes several solutions that are related to the JAX/RS context objects.

Read More...

JBake, Asciidoc and PlantUML

29 February 2020

When blogging about software topics it becomes quickly compelling to include diagrams into the posts. The project PlantUML for writing UML as diagrams-as-a-code is well suited for those needs. This Blog post is about, how PlantUML is configured with Asciidoc and JBake.

Read More...

OpenAPI generated JAX/RS Service: Binary Encoding

24 February 2020

Implementing JAX/RS REST APIs with Swagger/OpenAPI following a Design-First approach starts with the formal specification of the REST API. Then OpenAPI generators are used to create server as well as client stubs. Nowadays, the REST APIs often exchange JSON response and request objects. If binary fields are part of such JSON structures, the generated code encodes/decodes such binary fields. For some combinations of generators the produced client and server do not fit together.

Read More...

Maven Dependecy Analyzis Plugin

12 February 2020

Note on usage of Maven's dependency plugin for analyzing project dependencies.

Read More...

Non-Jekyll Github Pages

01 February 2020

After initially setting up my Blog (see previous post 'JBake Blog with Maven Plugin'), I noticed that the deployment to Github Pages is not fully functional, although with local web server everything works fine. The problems were: 1) images are not shown, 2) navigation to posts, that are hosted in sub-directories, lead to 404 error (page not found). This post is about possible solutions for described issues.

Read More...

JBake Blog with Maven Plugin

21 January 2020

When I decided to start blogging, the combination of Github pages and JBake looked most promising to me: Out-of-the-box support of Asciidoc, Java application should be friendly for me as Java developer, one of the most popular static site generators, etc.<p> There are many articles and blog posts about the combination of JBake and Gradle. But because I'm much more familiar with Maven and Maven tooling was already installed on my Notebook, I decided to try the JBake's Maven plugin for stetting up the static Blog site.

Read More...


Older posts are available in the archive.