Entwicklung

chkconfig: Init-Skript für Apache Tomcat

chkconfig und service sind zwei Werkzeuge unter Redhat, die die Runlevel-Verwaltung vereinfachen. Damit chkconfig feststellen kann, für welche Runlevel der betreffende Dienst aktiviert sein soll, muss man Meta-Informationen in den Skript-Header einfügen.

Apache Tomcat bringt in $CATALINE_HOME/bin/jsvc.tar.gz die Quellen eines Verwaltungswerkzeugs für sich mit. Dieses Paket kann man unter Centos 5.2 (installieren der RPMs gcc-c++ und autoconf ist notwendig) folgendermaßen übersetzen:

tar xfz jsvc.tar.gz

cd jsvc-src

./configure –with-java=/usr/java/default

make

cp jsvc ..

Mit dem folgenden Init-Skript kann man nun service und chkconfig für Apache Tomcat nutzen:

#!/bin/sh
#
# Startup script for the Apache Tomcat servlet container
#
# chkconfig: 345 55 25
# description: Apache Tomcat servlet container
# processname: tomcat
# pidfile: /var/run/tomcat/jsvc.pid
# config: /opt/apache-tomcat-6.0.20/conf/server.xml
 
JAVA_HOME=/usr/java/default
CATALINA_HOME=/opt/apache-tomcat-6.0.20
DAEMON_HOME=/var/run/tomcat
TOMCAT_USER=apache
 
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/tomcat/jsvc.pid
 
CATALINA_OPTS=
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
 
prog="Tomcat"
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
case "$1" in
start)
#
# Start Tomcat
#
echo -n "Starting $prog: "
$CATALINA_HOME/bin/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
if [ $? == 0 ];
then
action
else
action
fi
;;
 
stop)
#
# Stop Tomcat
#
echo -n "Stopping $prog: "
$CATALINA_HOME/bin/jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
if [ $? == 0 ];
then
action
else
action
fi
;;
 
*)
echo "Usage tomcat start/stop"
exit 1;;
esac


eclipse

Netbeans vs. Eclipse

eclipse

Ich muss ja zugeben, ich war nie ein großer Fan von Netbeans und habe immer Eclipse vorgezogen. Aber mit der Zeit habe ich das Gefühl, dass Eclipse immer schwächer wird; sei es die unnötig komplizierte Integration von SCM-Plugins oder die immer schwächer werdende WTP (immer mehr Features, aber auch immer mehr Bugs). Auch die lange Reaktionszeit für einige wirklich störende Bugs (z.B. die fehlenden Server-Adapter in Eclipse Ganymede, welche jetzt mit einem Update nachgeschoben wurden) ist wirklich unschön.

netbeansDagegen scheint sich Netbeans langsam zu mausern. Die aktuelle Version bringt nicht nur native Maven-Unterstützung (was ich sehr schätze) mit, sondern auch integrierte SCM-Plugins für SVN/CVS/Mercurial. Außerdem gibt es nun SUN’s Project Kenai direkt aus dem Menü, sodass man seine Opensource-Projekte bei Kenai direkt aus Netbeans heraus verwalten kann. Rein subjektiv finde ich auch, dass die Oberfläche von Netbeans weitaus flotter ist und diese IDE im Vergleich zu Eclipse weniger Speicher verbraucht.

Mein nächstes Projekt wird jedenfalls ganz sicher mit Netbeans geschrieben werden :-) Unter http://www.certpal.com/blogs/2009/08/your-favorite-java-ide/ gibt es eine Umfrage zur beliebtesten Java-IDE (wenn auch nicht sehr repräsentativ wie ich finde). Bisher liefern sich Eclipse (45%) und Netbeans (47%) ein knappes Rennen.

Bug in Maven 2.2.0

Due to a bug in Maven 2.2.0, I am not able to add a 3rd-party-dependency to my local repository. I’m running Windows 7 with the Windows PowerShell/CMD and it does not recognize the parameter -Dversion=4.0.1, obviously because of some escape problems with the dot.

That is quite annoying because it’s only able to read -Dversion=4 => not the point of a dependency management tool :-)

I filed a bug to the Apache JIRA bugtracker and hope I’ll get an answer soon.

UPDATE: The “=” seems to be a special/reserved character in Windows PowerShell, we have to put the parameters containing “=” in quotes, ie. “-Dversion=4.0.0″.