Determine which Tomcat version is running

August 6, 2016 7 comments

Determine process id

First we determine the process id(s) of the running Tomcat instance(s).

We can grep the running process list for ‘catalina.home’:

pgrep -f 'catalina.home'

This might yield more than one pid.

Or we can search by port (8080 is the default, adjust if necessary). The following commands will likely require root privileges:

lsof -t -i :8080

Alternatively, for example if lsof is not installed:

fuser 8080/tcp

Or yet another way, using netstat (or its “ss” replacement):

netstat -nlp | grep 8080
ss -nlp | grep 8080

Determine catalina.home

For the process id(s) determined above, we look at process details:

ps -o pid,uid,cmd -p [pidlist] | cat

For each specified pid, this shows the uid (system user) and the full command line of the process.

Typically the command line will contain something like “-Dcatalina.home=[path]” and that path is the catalina.home system property of the Java process.

Alternatively – with Java 7 and later – we can use the JDK command “jcmd” to query the JVM process for its system properties:

sudo -u [uid] jcmd [pid] VM.system_properties \
   | grep '^catalina.home' \
   | cut -f2 -d'='

Determine version

Now we can finally determine which Tomcat version is installed under the catalina.home path:

[catalina.home]/bin/ version \
   | grep '^Server number:'

Note: Please replace [catalina.home] with the path you determined above.

The final output should be something like this:

Server number:

My favorite Free/Open Source Intellij Community plugins

July 28, 2016 Leave a comment

Continuous delivery using github, travis-ci and bintray

July 12, 2016 Leave a comment


Let’s say you work on a Java application and want to frequently make it available for download so that user’s can easily try the latest version.

Let’s say you work primarily on your laptop or personal computer using a Java IDE and commit code changes, but you don’t want to spend time manually building jars, packaging war or zip files, testing your application or uploading files to a website, etc.

Instead you want to have a fully automated process that compiles your source code, runs automated tests and other quality control mechanisms, builds your application and uploads the result to a public website.

But you don’t want to install any infrastructure for this and not run anything besides Java and your IDE on your own machine(s).

Basically you want to use developer-friendly reliable cloud services but you don’t want to pay a single cent.

All of this is possible, as long your code is Open Source:

  • Host your source code on github
  • Let travis-ci run vour build process
  • Let travis-ci upload the build result to bintray

For details, you can take a look at one of my github projects.

Relevant config files:

Soon I will probably add more detailed instructions to this blog post on how to set up the cloud services.

Categories: coding, git, java, maven Tags: , ,

Some pure CSS buttons

July 6, 2016 Leave a comment

Do you still use gifs or other pixel graphics for buttons on web pages? I hope not. CSS3 support is available in all modern browsers, so rounded corners, gradients, shadows, etc are no problem.

See this jsfiddle for the CSS class definitions and a minimal HTML sample.

Without box shadow:

Oliver Doepner

Oliver Doepner

Oliver Doepner

With box shadow:

Oliver Doepner

Oliver Doepner

Oliver Doepner

Categories: coding

OpenJDK builds for Windows now available from Redhat

June 29, 2016 Leave a comment

As I mentioned in an earlier post, officially supported OpenJDK builds for non-Linux platforms have been notoriously hard to come by in the past, at least until Azul started their Zulu builds in 2013. Unofficial community builds are also available from the ojdkbuild project on Github.

Today Redhat announced that their OpenJDK offerings now include builds for the Windows platform as well.

After Google decided to use OpenJDK in Android N, I guess this is another strong indicator of OpenJDK’s value and increasingly wide adoption.

Categories: java, windows Tags: , ,

JEE Guardians petition Oracle to actively work on Enterprise Java standards again

June 27, 2016 Leave a comment

Over the last 6 months or so, the development on Java EE 8 JSRs led by Oracle has nearly come to a stand-still. Even some spec leads working for Oracle privately admitted that they cannot do their part because Oracle has given them other priorities.

That is why the JEE Guardians group was formed by the community and that’s why I just signed this petition: “Larry Ellison: Tell Oracle to Move Forward Java EE as a Critical Part of the Global IT Industry

If you care about the future of Enterprise Java, please get involved and sign the petition, too.

Categories: java Tags: , , ,

Retrieve “last modified” timestamp of web resource in UTC seconds

June 2, 2016 Leave a comment

This command line assumes that “${url}” is the URL of the web resource:

curl -s -I "${url}" | grep 'Last-Modified:' | cut -c 16- | date -f - +'%s'

It can be useful to check the freshness of a download URL before a GET request.

You could compare the result to the last-modified timestamp of a local file and only download the remote file if it is newer than the existing local one.

Categories: bash, coding Tags: , ,

Get every new post delivered to your Inbox.

Join 61 other followers