Sunday, November 24, 2019

Eine Konferenz als Fremder besuchen




Wie ich die W-JAX 2019 besucht habe und als Fremder eine gute Zeit hatte schildere ich hier in einem Beitrag.

Tuesday, October 8, 2019

Is it worth reporting an obvious and trivial documentation error?

I reported and fixed a very small, obvious and trivial documentation error in an OSS project and it was worth it.

https://twitter.com/FrVaBe/status/1171451198081122306

Read the full story on my GitHub page:

Monday, June 19, 2017

Friday, March 10, 2017

How-To write and document a Maven Plugin


"Maven is - at its heart - a plugin execution framework; all work is done by plugins."

This quote is the start of the Maven Plugins documentation. Thus, if you want to customize your Maven build project you should think about using a special plugin. If no plugin for your task is available you have the possibility to write your own.

Tuesday, March 7, 2017

Java 9 - Multi-Release Jar Example

Java 9 offers the possibility to build a JAR file with a format that "allows multiple, Java-release-specific versions of class files to coexist in a single archive" (JEP 238: Multi-Release JAR Files).

Content of my Multi-Release Jar example artifact


I build a sample project to show how Multi-Release Jars can be build with Maven. You can find it here on my GitHub page.

Sunday, February 26, 2017

First Steps With Degraph

A crucial part of implementing software components is to get your code free from unwanted package dependencies. But most of the time it is hard to get an overview of which code depends on each other. SonarQube is a great tool but unfortunately they dropped the Package Tangle Index analysis support (see 'Also worth noting' here). JDepend is another tool but I could not really get familiar with it (even not with the eclipse IDE integration). Thus I decided to try Degraph - a newer tool that I heard of some time ago.

Sunday, February 12, 2017

Camunda BPM User Task with Timer Boundary Event to react on follow-up / due dates

User tasks (in general) often work with follow-up or due dates. Camunda BPM does support this by providing corresponding properties / members on the User Task BPMN. The Camunda API allows to filter user tasks by these dates so that due or overdue tasks can be found easily.

Beside the query filter also Timer Boundary Events on user tasks can be used to "detect" the maturity of a user task and to trigger an automatic action.

I implemented a working example to show the usage of timer boundary events on user tasks. You can find it at this GitHub location.

Have fun!

Wednesday, December 7, 2016

Customizable Event Log inside Camunda BPM process


Example BPM Diagram


A BPM (Business Process Management) process exists of lots of flow objects (activities, events, gateways) and at some point of execution - for example when a user is prompted to perform a task - an information about "what happend so far" is helpful or even required.

This post discusses a approach to assemble a custom Event Log by using a decision table inside a BPM process that is executed with the Camunda BPM engine.

As the solution was put into code you will not find the post content here, but near the code. So have a look at my camunda-customizable-event-log GitHub project.

Feel free to add comments here.

Monday, June 20, 2016

Running SonarQube behind a proxy


I am a longtime user of the SonarQube quality management platform and was very pleased when SonarQube 5.6 LTS was released. I expected that the upgrade from the 4.5.7 LTS version would be as trouble-free as updates in the past. Unfortunately I noticed that the native https support was dropped. Thus the https support now has to be provided by a proxy as described in the "Securing the Server Behind a Proxy" documentation part.

Tuesday, April 15, 2014

Operation friendly Spring application runtime configuration

Most applications need some kind of runtime configuration like e.g. database connection settings. These seetings are usually provided as program arguments or system properties. The following post will show a proper way to include runtime configuration support in a modern Spring application to make it is easy to handle the application by the operation team.

Monday, March 24, 2014

Moving a Maven artifact to new coordinates



Sometimes it can be necessary to move a Maven artifact to new project coordinates (groupId, artifactId, version). Fortunatly Maven does supports this use case.

Wednesday, February 12, 2014

Logging request/response messages with Apache CXF

Today I would llike to give a short introduction in How-To log request/response messages of your Apache CXF JAX-WS service.

Wednesday, December 18, 2013

How To Read A Maven Plugin Documentation

I recently came along a tutorial that describes "How to skip Maven unit test example". The author certainly had the best intentions - but finally he messed things up. This would not have happend if he had a look at the plugin documentation. If you once understand how to read it - plugin usage will be simple.


Wednesday, November 13, 2013

Software deserves documentation

Building software is a tough process. A lot of disciplines are involved to specify the requirements, to define the software architecture, to manage the data, to test, to integrate and to run the software and possibly to do a lot more thinks. Different processes - from waterfall to agile - try to handle these tasks in different ways and they produce different documentation artifacts.

Wednesday, September 11, 2013

Java Mission Control - (yet) another JVM monitoring tool included in the JDK


Oracle launched Java 1.7 update 40 on Sep 10, 2013. This version includes the Java Mission Control JVM monitoring tool.


After having a look at the demo I thought it would be a good idea to test the tool myself.

Tuesday, July 23, 2013

Java Code Conventions from the last century

I find it very helpful that Java Code Conventions exist for a long time now. They really "improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly" (from the Code Conventions web page).


But while the Java language evolves the code conventions remain the same. Since the Java Code Conventions were last updated in 1999 several new Java language features were introduced including lambdas in the upcoming version of Java 8.

Monday, June 10, 2013

My Technology Radar

ThoughtWorks published a recent version of their Technology Radar these days and Neil Ford did some explanation on it with the recommendation to "Build Your Own Technology Radar".

I thought this is quite a good idea and so I wrote it down. Keep in mind that I am a Java backend developer so the topics that appear in this radar are affected by this.

Sunday, April 28, 2013

Using Apache CXF SOAP service with customized JiBX databinding

This post gives a brief overview on how to build an Apache CXF SOAP service with JiBX databinding.


Apache CXF is an open source services framework that helps building JAX-WS and JAX-RS web services. JiBX is a XML binding tool for Java. To understand the post it is necessary to be familiar with Apache CXF and JiBX.

Thursday, March 21, 2013

Monitoring Windows Tomcat Service with Java VisualVM
(and how I finally failed)

Local Java Applications that are running as a Windows Service can not be monitored with Java VisualVM without some extra efforts. I recently tried to monitor a Tomcat service but I could not find it after starting Java VisualVM. I wondered what was wrong and found the best answer in an old Netbeans Profiler Blog post: "Monitoring Java Processes Running As a Windows Service". The reason why I did not see the Tomcat Service in the application tree was:

Friday, March 1, 2013

Interesting Software News (in my view)



The technologie and tool stack I work with was heavily updated in 2013. This post is a quick overview of the most important technologies (primarily Java) and tools (primarily IDE) changes that happend this year.

Beside these there are some interesting announcements that I like to share and I also want to mention some smaller tools that I use more or less often and that also might be useful for someone else.